计算机组成原理

计算机硬件基本组成

冯诺依曼结构

在计算机系统中,软件和硬件在逻辑上时等效的

Eg:对于乘法运算,可以设计一个专门的硬件电路来实现,效率高,但是成本也高,也可以用软件的方式,执行多次加法运算来实现,只不过效率会比较低

特点:

  • 有I/O,运算器,存储器,控制器组成
  • 指令和数据在同一个存储器中,可按地址寻访
  • 指令和数据用二进制表示
  • 指令由操作码和地址码组成
  • 已运算器为中心: 数据传输通过运算器完成

现代计算机结构

以存储器 为中心

总结

各硬件部件

主存储器

运算器

控制器

总结

存储系统

RAM-易失性存储器

Random Access Memory,随机访问存储器,其内部存储单元的数据可以随意的取出或存储。但是这种存储器在断电后会丢失其存储的内容。

SDRAM: 同步动态随机存储器,需要同步时钟。

DDR: Double Data SDRAM,双倍速率传输的SDRAM,在时钟上升沿和下降沿都可以进行数据传输。电脑的内存条都是DDR

DRAM-动态随机存储器

利用电容来存储信息,由于晶体管存在漏电电流,电容会放电(通常只能维持2ms),所以需要周期性的刷新,给电容充电。速度慢,成本高,集成度高,常用作主存(SDRAM)。

SRAM-静态随机存储器

利用触发器存储信息,只要供电数据就会保存,不需要刷新,但是断电后数据会消失。速度快,成本高,集成度低,常用作高速缓存。

总结

ROM-非易失性

只读存储器,掉电后数据不会消失,即非易失性。

类型

总结

提高存储系统的工作速度

局部性原理

  • 空间局部性:如果某个数据被访问,那么与它相邻的数据很快可能也将被访问。
  • 时间局部性:如果某个数据被访问,那么在不久的将来它可能再次被访问。(比如说循环结构)

高速缓冲存储器Cache

利用局部性原理,改善存储器结构。

性能分析

Cache Hit命中:需要的数据存放在Cache中

Cache Miss错失:需要的数据没有在Cache中

Hit-Rate命中率:CPU想要访问的数据已经在Cache中的比率

平均访问时间:T_a = Ht_c +(1-H)\t_m,t_c:命中时的Cache访问时间,t_m:未命中时的访问时间

由上面的例题可知,有两种方式:

  • 同时访问Cache和主存
  • 先访问Cache,再访问主存

地址映射

地址映射主要是用来决定主存中的块放到Cache中哪个位置。

1. full associative Cache 全相联映射

主存块可以放到任意一个Cache Line中。需要存储主存字块标记

image-20210912195645592

2. Direct Mapped Cache直接映射

主存中的某一块固定的映射到某一个Cache Line,不需要存储Cache字块地址,因为是一一对应的。对应主存字块的地址除以Cache Line的块数所得的余数

3. n-way associative Cache组相联映射

结合了上面两种方式,将主存块映射到一个Cache Set

三种方式比较:

(a) full associative Cache: 命中率高,但是需要存储的容量大,并且结构会比较复杂

(b) direct mapped Cache: 简单,但是低命中率,可能会发生替换

(c) n-way associative Cache: 结合了上述两者的优点

替换算法

替换算法主要是为了处理Cache满了的情况。

  • 先进先出算法(FIFO)

    选择最早调入的行进行替换。

  • 近期最少使用(LRU)

    选择近期内长久未访问过的存储行进行替换。通常设置一个计数器,Cache每命中一次,命中行计数器清零,其它各行加1,替换最后计数值最大的行。

写策略-命中

脏位 (dirty bit):用来表示某块数据是否已经被修改

  • 写回法 (write-back):当CPU对Cache写命中时,只修改Cache的内容,而不立即写入主存,只有当此块被换出时才写回主存。减少访存次数

  • 全写法 (write-through):当CPU对Cache写命中时,必须把数据同时写入Cache和主存,一般使用写缓存 (write buffer)

写策略-未命中

  • 写分配法 (write-allocate):把主存中的块调入Cache,在Cache中修改。搭配写回法使用。

  • 非写分配法 (not-write-allocate):只写入主存,不调入Cache。搭配全写法使用。

写策略小结:

多级Cache

第一级和第二级之间使用全写法,第二级和主存之间使用写回法。

提高存储系统的容量

虚拟存储器

虚拟存储器是一个逻辑模型,用户给出一个虚拟地址,虚拟存储器要给出该地址对应的数据。

实现:由辅助硬件将虚拟地址映射到主存当中的某个单元,主存单元地址称为物理地址。

页式虚拟存储器

虚拟空间与主存空间都被划分为同样大小的页,主存的页称为实页,虚存的页称为虚页

为了增加虚实地址转换的速度,引入了快表TLB结构,而慢表Page是在主存中的。

中央处理器CPU

指令流水线

将一条指令的执行过程分成不同的阶段,占用不同的资源,就能使多条指令同时执行。

流水线的表示方法

流水线的性能指标

  • 吞吐率:单位时间内流水线所完成的任务数量(输出结果的数量)
  • 加速比
  • 效率

指令流水线的影响因素

机器周期的设置:

结构冲突(资源冲突)

由于多条指令在同一时刻争用同一资源而形成的冲突称为结构相关,例如两条指令同时向一个寄存器进行写操作,而且只有一个输入端口

解决方法:

  • 后一条相关指令暂停一周期
  • 资源重复配置:数据和指令分开存储,这样上图第一条指令访问的是数据存储器,而第三条指令取指阶段访问的是指令存储器

数据冲突

数据之间存在依赖关系,前一条指令执行完后才能执行后一条指令。

解决方法:

  • 硬件阻塞(stall)(动态方法)和软件插入NOP(静态方法)
  • 数据旁路技术,将ALU输出值连线到需要的硬件上
  • 编译优化:通过编译器调整指令顺序,instruction scheduling

控制冲突

当流水线遇到转移指令和其它改变PC值的指令而造成断流时,会引起控制冲突。

第一条指令是跳转指令,当条件满足时直接跳到了最后一条指令。

解决办法:

  • 预取两个方向的指令
  • 分支预测:判断转移的概率是多少,按照概率预取两个方向的指令

总结

流水线的多发技术

超标量技术superscalar

在单个周期内可以执行多个独立指令。找到互相没有依赖关系的指令,将其并行执行。使用动态调度

超流水技术

在一个时钟周期内再分段。不能调整指令的顺序,靠编译器优化。

超长指令字VLIW

将多条能并行操作的指令组合成一条指令,通过静态调度实现,即通过编译器实现,而不是再运行期间完成。

总结