系列文章目录
一、计算机概要与技术
文章目录
前言
该系列文章是本人学习《计算机原理与系统结构》课程的学习笔记
参考资料为:《计算机组成与设计:硬件软件接口(原书第5版)》 (戴维 A.帕特森 (David A.Patterson) etc.)
计算机概要与技术
计算机发展、应用的分类及其特性
计算机发展史
起止年份 | 代别 | 主要逻辑元件 | 软件 | 应用领域 |
1946-1957 | 一 | 电子管 延迟线,磁芯存储器 | 机器语言、汇编语言 | 科学计算、军事、尖端科技。 |
1958-1964 | 二 | 晶体管 磁芯存储器 | 高级语言、监控程序、 简单操作系统 | 军事、尖端技术、气象、工程设计、数据处理、科学研究等。 |
1965-1970 | 三 | 集成电路 半导体存储器 | 功能较强的操作系统、 会话式语言 | 范围进一步扩大 |
1970至今 | 四 | 大规模 超大规模集成电路 | 软件工程的研究与应用、数据库、语言编译系统和网络软件 | 出现了微型计算机计算机进入了几乎所有的行业 |
90年代 | 五 | 甚大规模集成电路 | 同上 | |
更高的集成度 |
计算机分类:
- 个人计算器(Personal Computer,PC):用于个人使用的计算机,通常包括图形显示器、键盘和鼠标等
- 广泛应用运行大量的第三方软件
- 主要特点是性能良好,价格低廉
- 服务器(Server):用于为多用户运行大型程序的计算机,通常由多个用户并行使用,并且一般通过网络访问。高端服务器称为超级计算机(supercomputer)是具有最高性能和最高成本的一类计算机,一般配置为服务器,需要花费数于万甚至数亿美元
- 基于网络访问
- 大容量,良好的性能和高可靠性
- 服务器的功能和价格有很大的伸缩范围
- 嵌入式计算机(embedded computer):嵌入到其他设备中的计算机,一般运行预定义的一个或者一组应用程序
- 通常和硬件集成在一起
- 面向单一需求的嵌入式应用通常被严格限制成本或功耗
计算机发展趋势
- 巨型化:运算速度更高、存储容量更大、功能更强
- 微型化:微型计算机已进入仪器、仪表、家用电器等小型仪器设备中。笔记本型、掌上型等受到人们的欢迎
- 网络化:计算机网络是现代通信技术与计算机技术相结合的产物。计算机网络在现代企业的管理中发挥着越来越重要的作用
- 智能化:可以模拟人的感觉行为和思维过程的机理,进行“看”、“听”、“说”、“想”、做”,具有逻辑推理、学习与证明的能力
后PC时代
- 个人移动设备(PMD):手机,平板逐渐代替PC
- 云计算(cloud computing):在网络上提供服务的大服务器集群代替传统的服务器
- 软件即服务(SaaS):在网络上以服务的方式提供软件和数据,IaaS→Paas→SaaS
计算机结构中8个伟大思想
面向摩尔定律的设计
摩尔定律是Intel公司的创始人之一Gordon Moore在1965年对集成电路集成度做出的预测:集成电路芯片上所集成的电路的数目,每隔18个月就翻一番,微处理器的性能每隔18个月提高一倍,而价格下降一倍
摩尔定律另一种观点:能耗
使用抽象简化设计
计算机架构师和程序员必须发明能够提高产量的技术,否则设计时间也将会向资源规模一样按照摩尔定律增长。提高硬件和软件生产率的主要技术之一是使用抽象 (abstraction) 来表示不同的设计层次,在高层次中看不到低层次的细节,只能看到一个简化的模型 。
加速大概率事件
加速大概率事件 (common case fast) 远比优化小概率事件更能提高性能。大概率事件通常
比小概率事件简单,从而易于提高 。
通过并行提高性能
从计算的诞生开始,计算机设计者就通过并行执行操作来提高性能
通过流水线提高性能
在计算机系统结构中,一个特别的并行性场景就是流水线 (pipelining) 。例如许多西 部片中,一些坏人在制造火灾,在消防车出现之前会有一个“消防队列”来灭火一小镇的居民们排成一排通过水桶接力快速将水桶从水源传至火场,而不是每个人都在来 回 奔跑 。可以把流水线想象成一系列水管,其中每一块代表一个流水级
通过预测提高性能
在某些情况下,如果假定从误预测恢复执行代价不高并且预测的准确率相对较高,则通过猜测的方式提前开始某些操作,要比等到确切知道这些操作应该启动时才开始要快一些
存储器层次
由于存储器的速度通常影响性能、存储器的容量限制了解题的规模、当今计算系统中存储器的代价占了主要部分,因此程序员希望存储器速度更快、容量更大、价格更便宜。设计师们发现可以通过存储器层次 ( hierarchy of memory) 来解决这些相互矛盾的需求。在存储器层次中,速度最快、容量最小并且每位价格最昂贵的存储器处于顶层,而速度最慢、容量最大且每位价格最便宜的存储器处于最底层
通过冗余提高可靠性
计算机不仅需要速度快,还需要工作可靠。由于任何一个物理器件都有可能失效,因此可以通过使用冗余部件的方式提高系统的可靠性 (dependable),冗余部件可以替代失效部件并可以帮助检测错误
程序概念入门
众所周知,计算机中的硬件只能执行极为简单的低级指令。从复杂的应用程序到简单的指令需要经过几个软件层次来将复杂的高层次操作逐步解释或翻译成简单的计算机指令,这可以作为伟大思想抽象的一个例子
- 应用软件(Applications software)
- 用高级语言编写
- 系统软件(System software)
- 编译程序:把高级语言编写的程序翻译成机器代码
- 操作系统:提供各种服务和监控(处理基本输入和输出操作、分配外存和内存、为多个应用程序提供共享计算机资源的服务)
- 硬件(Hardware)
- 处理器、存储器、输入和输入设备
软件的发展演变
- 编程语言的发展
- 手编程序:机器语言程序,手工编译二进制
- 汇编程序:符号语言程序,汇编程序汇编
- 高级程序:算法语言/高级语言,机器编译程序/解释程序
- 系统软件发展
- 操作系统
- 分布式系统软件
程序语言级别
- 高级语言
- 最接近问题领域的抽象级别
- 提供语言的高效性和可移植性
- 汇编语言
- 指令文本表示
- 机器语言
- 二进制
- 可编码指令和数据
硬件概念入门
计算机的两个关键部件是输入设备(input device)和输出设备(output device)
- 输入设备:为计算机提供信息的装置,如键盘
- 输出设备:将计算机结果输出给用户(如显示器)或其他计算机装置
计算机结构模型
1945年,冯·诺依曼(Jhon Von Naumann)提出“存储程序控制计算机结构”(诺依曼机),奠定了现代计算机的体系结构
- 五大部件(运算器、存储器、控制器、输入设备、输出设备)
- 采用二进制
- 程序和原始数据先存入存储器,然后再启动计算机工作
“冯·诺依曼型结构”
使用同一个存储器存储指令和数据,经由同一个总线传输
“哈佛结构计算机和改进哈弗结构”
数组计算机基本组成(冯·诺依曼型计算机)
运算器
- 算数运算和逻辑运算
- 在计算机中参与运算的数是二进制的
- 运算器的长度(字节):4、8、16、32、64
存储器
- 存储数据和程序(指令)
- 根据提供的地址和读写命令存或取数据
- 容量(存储单元、存储单元地址、容量单位)
- 分类内存(ROM、RAM),外存
存储器类型
- ROM
- MASK ROM
- PROM
- EPROM
- EEPROM:功耗高,写入时间长,寿命10万次
- Flash Memory:集成度较高
- RAM
- DRAM:需要电源不间断刷新
- SRAM:不需要刷新,断电数据丢失,写入速度快
- FRAM:基本原理是铁电效应,非瞬时存储器
控制器
有关概念
- 指令和指令格式:操作码+地址码
- 指令系统:CPU能解释执行的指令集和
- 程序:指令的有序集合
基本任务
控制器如何区分从内存中取出的是指令还是数据
- 时间上
- 取指发生在取指周期
- 取数发生在执行周期
- 空间上
- 取指送向控制器
- 取数送向运算器
适配器与I/O设备
- 输入设备:把人们所熟悉的某种信息形式变换为机器内部所能接收和识别的二进制信息形式
- 输出设备:把计算机处理的结果变化为人或其他机器设备所能接收和识别的信息形式
- 适配器:使得被连接的外围设备通过系统总线与主机进行联系,以便于主机和外围设备并行协调第工作
- 总线:构成计算机系统的骨架,是多个系统部件之间进行数据传输的公共通路
现代电子计算机是由运算器、存储器、控制器、适配器、总线和输入/输出设备组成的
通信
相关概念
- 通信:在计算机之间高速交换信息
- 资源共享:有些I/O设备可以由网络上的计算机共享,不必每台计算机都配备
- 远距离访问:用户可以不必在计算机旁边,而是在很远的地方使用计算机
方式
- 局域网(LAN):同一建筑内
- 广域网(WAN)
- 无线网(WiFi)
性能
性能的定义
相关概念
- 响应时间:完成某任务需要的总时间,包括硬盘访问、内存访问、I/O访问、操作系统开销和CPU执行时间等
- 吞吐率:也叫带宽,单位时间内完成的任务数量
性能 = 1/执行时间
性能的测量
- 响应时间(Response time):包括处理时间,I/O操作,OS开销,空闲时间等,决定了系统性能
- CPU执行时间(简称CPU时间):执行某一任务在CPU上所花时间。不包括等待I/O或者运行其他程序的时间,包括:
- 用户CPU时间:程序本身花费的时间
- 系统CPU时间:为执行程序而花费在操作系统上的时间
用户感受到的是响应时间,而不是CPU时间
CPU
CPU时钟:时钟和硬件中的振荡器(晶振)频率有关
一个程序的CPU执行时间
指令数和每条指令平均时钟周期数(CPI)
一个程序的指令数:由程序自身,指令集体系结构和编译器决定
每条指令的平均时钟周期数:由CPU硬件决定,不同指令有不同的CPI
性能总结
总结
计算机成本/性能将会不断改进
- 归因于技术的发展
- 抽象的层次结构
- 同时体现在硬件和软件之间
- 指令集体系结构
- 硬件和软件的接口
- 执行时间:对CPU性能最好的性能度量方法
- 功耗是一个限定因素
- 可以采用并行技术改进性能