1.1.1 计算机应用的分类及其特性
个人计算机(Personal Computer ,PC): 用于个人使用的计算机,通常包含图形显示器、键盘和鼠标等
服务器(server): 用于为多用户运行大型程序的计算机,通常由多个用户并行使用,并且一般通过网络访问。
嵌入式计算机(embedded computer): 嵌入到其他设备中的计算机,一般运行预定义的一个或者一组应用程序。
1.1.2 后PC时代
个人移动设备(Personal Mobile Device, PMD)。连接到网络上的小型无线设备。PMD由电池供电,通过下载App的方式安装软件。智能手机和平板电脑是典型的PMD。
云计算(cloud computing): 在网络上提供服务的大服务器集群,一些运营商应用需求出租不同数量的服务器。
依赖于仓储规模计算机(Warehouse Scale Computer, WSC)的巨型数据中心。与PMD和WSC是硬件工业的革命类似,通过云计算实现软件即服务(Software as a Service, SaaS)是软件工业的革命。
软件即服务(Saas): 在网络上以服务的方式提供软件和数据。其运行方式通常不是在本地设备上运行所有的二进制代码,而是通过诸如运行在本地客户端的浏览器等小程序登录到远程服务器上执行。例如Web搜索和社交网络
1.1.3
1951年第一台商用计算机。
多核微处理器(multicore microprocessor): 在一块集成电路上包含多个处理器("核")的微处理器。
首字母缩略词(acronym)
程序的性能: 一个程序的性能取决于: 程序所有算法的有效性,用来建立程序并将其翻译成机器指令的软件系统,计算机执行机器指令(I/O操作)的有效性。
软件或硬件组成元素 | 该元素如何影响性能 | 位置 |
---|---|---|
算法 | 决定了源码级语句的数量和I/O操作的数量 | - |
编程语言、编译器和体系结构 | 决定了每条源码级语句对应的计算机指令数量 | - |
处理器和存储系统 | 决定了指令的执行速度 | - |
I/O系统(硬件和操作系统) | 决定了I/O操作可能的执行速度 | - |
数据级并行
指令集并行: 循环展开开发多指令发射和乱序执行硬件提高性能。
存储器层次优化: 使用阻塞cache将大型矩阵处理性能提高。
线程级并行: 在OpenMP中使用循环并行开发多核硬件提高性能。
1.2 计算机系统结构中的8个伟大思想
面向摩尔定律(Moore' Law)的设计
使用抽象简化设计: 提高硬件和软件生产效率的主要技术之一是使用抽象(abstraction)来表示不同的设计层次,在高层次中看不到低层次的细节,只能看到一个简化的模型。
加速大概率事件(common case fast): 加速大概率远比优化小概率事件更能提高性能。
通过并行提高性能 并行性能(parallel performance)
通过流水线(pipelining)提高性能
通过预测(prediction)提高性能
7.存储器层次(hierarchy of memory)
- 通过冗余提高可靠性(dependable)
1.3 程序
计算机中的硬件只能执行极为简单的低级指令。从复杂的应用程序到简单的指令需要经过几个软件层次来将复杂的高层次操作逐步解释或翻译成简单的计算机指令