计算机体系结构总结

              计算机体系结构的详尽描述

.计算机系统结构的基本概念

1.计算机体系结构的概念

     1964年G.M.Amdahl在介绍IBM360系统时提出:计算机系统结构是从程序员所看到的计算机属性,即程序员编写出能在机器上正确运行的程序所必须了解的概念性结构和功能特性。

     系统结构是对计算机系统中各级界面的划分、定义及其上下功能的分配。

     系统结构设计主要研究界面的属性的透明性的取舍。

     计算机系统结构(体系结构)指的是传统机器级的系统结构。

     计算机系统结构研究的是软、硬件之间的功能分配以及对传统机器级界面的确定。

2.计算机系统的多级层次结构

.计算机指令集结构设计

根据五个因素对计算机指令集结构进行分类:    在CPU中操作数的存储方法;指令中显式表示的操作数个数;操作数的寻址方式;指令集所提供的操作类型;操作数的类型和大小 。其中1是最主要的区别

根据CPU内部存储单元类型,可将指令集结构分为

堆栈型指令集结构、累加器型指令集结构和通用寄存器型指令集结构。优缺点?堆栈型(其CPU中存储操作数的主要单元是堆栈):是一种表示计算的简单模型;指令短小。不能随机访问堆栈,从而很难生成有效代码;同时,由于堆栈是瓶颈,所以很难被高效地实现。累加器型(其CPU中存储操作数的主要单元是累加器):减少了机器的内部状态;指令短小。由于累加器是唯一的暂存器,这种机器的存储器通信开销最大。寄存器型(CPU中存储操作数的主要单元是通用寄存器):易于生成高效的目标代码。所有操作数均需命名,且要显式表示,因而指令比较长

现代大多数机器均采用通用寄存器型指令集结构,原因:一是寄存器和CPU内部其他存储单元一样,要比存储器快;其次是对编译器而言,可以更加容易、有效地分配和使用寄存器。

寄存器-寄存器型(RR)优点:简单,指令字长固定,是一种简单的代码生成模型,各种指令的执行时钟周期数相近。缺点:和ALU指令中含存储器操作数的指令集结构相比,指令条数多,因而其目标代码量较大。

寄存器-存储器(RM)优点:可以直接对存储器操作数进行访问,容易对指令进行编码,且其目标代码量较小。缺点:指令中的操作数类型不同。在一条指令中同时对一个寄存器操作数和存储器操作数进行编码,将限制指令所能够表示的寄存器个数。由于指令的操作数可以存储在不同类型的存储器单元,所以每条指令的执行时钟周期数也不尽相同  存储器-存储器型(MM)优点:是一种最紧密的编码方式,无需“浪费”寄存器保存变量。缺点:指令字长多种多样。每条指令的执行时钟周期数也大不一样,对存储器的频繁访问将导致存储器访问瓶颈问题


CISC即复杂指令集计算机。它是增强指令功能,把越来越多的功能交由硬件来实行,并且指令的数量也是越来越多。RISC精简指令集计算机。它是尽可能的把指令集简化,不仅指令的条数少,而且指令的功能也比较简单。

.流水线技术

流水线技术:将一个重复的时序过程分解成为若干个子过程,而每一个子过程都可有效地在其专用功能段上与其他子过程同时执行。

时空图:用来描述流水线的工作,横坐标表示时间,纵坐标代表流水线的各段。

流水技术有哪些特点?

1)流水过程由多个相联系的子过程组成,每个过程称为流水线的“级”或“段”。2)每个子过程由专用的功能段实现。3)各个功能段所需时间应尽量相等。4)流水线需要有“通过时间”,在此之后流水过程才进入稳定工作状态,每一个时钟周期(拍)流出一个结果。5)流水技术适合于大量重复的时序过程,只有在输入端能连续地提供任务,流水线的效率才能充分发挥。

多倍性:在系统受限的部件上,同时处于同一执行阶段的指令或数据的最大数目。


流水线分类

1按照流水线所完成的功能(1)单功能流水线:只能完成一种固定功能的流水线(2)多功能流水线:流水线的各段可以进行不同的连接,从而使流水线在不同的时间,或者在同一时间完成不同的功能。

2按照同一时间内各段之间的连接方式(1)静态流水线:在同一时间内,流水线的各段只能按同一种功能的连接方式工作。2)动态流水线:在同一时间内,当某些段正在实现某种运算时,另一些段却在实现另一种运算。

3按照流水的级别 (1)部件级流水线(运算操作流水线):把处理机的算术逻辑部件分段,以便为各种数据类型进行流水操作。(2)处理机级流水线(指令流水线):把解释指令的过程按照流水方式处理。(3)处理机间流水线(宏流水线):由两个以上的处理机串行地对同一数据流进行处理,每个处理机完成一项任务。

4按数据表示 (1)标量流水处理机:处理机不具有向量数据表示,仅对标量数据进行流水处理。(2)向量流水处理机:处理机具有向量数据表示,并通过向量指令对向量的各元素进行处理。

5按照流水线中是否有反馈回路 (1)线性流水线:流水线的各段串行连接,没有反馈回路。(2)非线性流水线:流水线中除有串行连接的通路外,还有反馈回路。

流水线寄存器的作用:把数据和控制信息从一个流水段传送到下一个流水段。

消除流水线的瓶颈段:细分瓶颈段;重复设置瓶颈段。

价流水线的性能指标(1) 吞吐率:指在单位时间内流水线所完成的任务数或输出结果的数量。(2) 流水线的加速比:指m段流水线的速度与等功能的非流水线的速度之比。(3) 效率:指流水线的设备利用率。

流水线相关的三种类型:

相关是指两条指令之间存在某种依赖关系。确定程序中指令之间存在什么样的相关,对于充分发挥流水线的效率有重要的意义。        1. 结构相关:当指令在重叠执行过程中,硬件资源满足不了指令重叠执行的要求,发生资源冲突时将产生“结构相关”;2. 数据相关:当一条指令需要用到前面指令的执行结果,而这些指令均在流水线中重叠执行时,就可能引起“数据相关”;3. 控制相关:当流水线遇到分支指令和其他会改变PC值的指令时就会发生“控制相关”。

消除相关的基本方法:1让流水线暂停执行某些指令,而继续执行其他一些指令。2当一条指令被暂停时,在该暂停指令之后发射的所有指令都要被暂停,而在该暂停指令之前发射的指令则可继续执行,在暂停期间,流水线不会取新的指令。

输入/输出方式:程序控制(程序等待、程序中断)、DMA、通道、I/O处理机


数据相关:对于两条指令i(在前)和j(在后),如果下述条件之一成立,则称指令j与指令i数据相关:(1)指令j使用指令i产生的结果;(2)指令j与指令k数据相关,而指令k又与指令i数据相关。

名相关

如果两条指令使用相同的名,但是它们之间并没有数据流动,则称这两条指令存在名相关。指令j与指令i之间的名相关有以下两种:(1)反相关。如果指令j写的名与指令i读的名相同,则称指令i和j发生了反相关。反相关指令之间的执行顺序是必须严格遵守的,以保证i读的值是正确的。(2)输出相关。如果指令j和指令i写相同的名,则称指令i和j发生了输出相关。输出相关指令的执行顺序是不能颠倒的,以保证最后的结果是指令j写进去的。

解决方法:换名技术,通过改变指令中操作数的名来消除名相关。

控制相关:由分支指令引起的相关。它需要根据分支指令的执行结果来确定后续指令是否执行。

流水线冲突

指对于具体的流水线来说,由于相关的存在,使得指令流中的下一条指令不能在指定的时钟周期执行。(1)结构冲突:因硬件资源满足不了指令重叠执行的要求而发生的冲突。解决方法:流水化功能单元;资源重复;暂停流水线。(2)数据冲突:当指令在流水线中重叠执行时,因需要用到前面指令的执行结果而发生的冲突。根据指令对寄存器的读写顺序,可将数据冲突分为:写后读冲突;写后写冲突;读后写冲突。(3)控制冲突:流水线遇到分支指令和其他会改变PC值的指令所引起的冲突。

四种解决数据冲突的方法:1)定向技术:在某条指令产生一个结果之前,其他指令并不真正需要该计算结果,如果将该计结果从其产生的地方直接送到其他指令需要它的地方,就可以避免暂停;2)暂停技术:设置一个“流水线互锁”的功能部件,一旦流水线互锁检测到数据相关,流水线暂停执行发生数据相关指令后续的所有指令,直到该数据相关解决为止。;3)采用编译器调度。当流水线中出现冲突时,编译器通过重新排列代码的顺序来消除流水线中的暂停,这种技术称为流水线调度4)重新组织代码顺序。

流水线设计者有时会允许结构冲突的存在,原因:一是为了减少硬件开销,二是为了减少功能单元的延迟。

向量处理机:具有向量数据表示和相应向量指令的流水线处理机。

向量处理方式

(1) 水平处理方式:向量计算是按行的方式从左到右横向地进行。若向量长度为N,则水平处理方式相当于执行N次循环。若使用流水线,在每次循环中可能出现数据相关和功能转换,不适合对向量进行流水处理。 (2) 垂直处理方式:适合对向量进行流水处理,向量运算指令的源/目向量都放在存储器内,使得流水线运算部件的输入、输出端直接与存储器相联,构成MM型(存储器-存储器)的运算流水线。 (3) 分组处理方式:适合流水处理。可设长度为n的向量寄存器,使每组向量运算的源/目向量都在向量寄存器中,流水线的运算部件输入、输出端与向量寄存器相联,构成RR型运算流水线。



提高向量处理机性能的方法:多个功能部件;链接技术;分段开采技术;多处理机系统      

向量链接技术:当两条向量指令出现“写后读”相关时,若它们不存在功能部件冲突和向量寄存器(源或目的)冲突,就有可能把它们所用的功能部件头尾相接,形成一个链接流水线,进行流水处理。

链接技术应用条件:1. 无功能部件冲突2. 无向量寄存器使用冲突 3. 只有在前一条指令的第1个结果元素送入结果向量机寄存器的那个时钟周期才可以进行链接。4. 当一条向量指令的两个源操作数分别是两条先行指令的结果寄存器时,要求先行指令产生运算结果的时间必须相等。5. 要求进行链接执行的向量指令的向量长度必须相等。

. 指令级并行

指令级并行:当指令之间不存在相关时,它们可以在流水线中重叠起来并行执行。这种指令序列中存在的潜在并行性称为指令级并行。

静态调度技术:依靠编译器对代码进行静态调度,以减少相关和冲突。它不是在程序执行的过程中、而是在编译期间进行代码调度和优化。静态调度通过把相关的指令拉开距离来减少可能产生的停顿。

动态调度方法:在流水线中出现相关时,通过硬件重新安排指令的执行顺序,来调整相关指令实际执行时的关系,减少处理器空转。优点。(1) 能够处理一些编译时情况不明的相关(比如涉及存储器访问的相关),并简化了编译器。(2)能够使本来是面向某一流水线优化编译的代码在其他的流水线(动态调度)上也能高效地执行。当然,动态调度的这些优点是以硬件复杂性的显著增加为代价的。

为了支持乱序执行,将5段流水线的译码(ID)段细分为两个段(1)流出:指令译码,并检查是否存在结构冲突。如果不存在结构冲突,就将指令流出。(2)读操作数:等待数据冲突消失(如果有的话),然后读操作数。

Tomasulo算法的核心思想① 记录和检测指令相关,操作数一旦就绪就立即执行,把发生RAW冲突的可能性减少到最少;② 通过寄存器换名来消除WAR冲突和WAW冲突。

Tomasulo算法的基本思想是:只要操作数有效,就将其取到保留站,避免指令流出时才到寄存器中取数据,这就使得即将执行的指令从相应的保留站中取得操作数,而不是从寄存器中。指令的执行结果也是直接送到等待数据的其他保留站中去。因而,对于连续的寄存器写,只有最后一个才真正更新寄存器中的内容。一条指令流出时,存放操作数的寄存器名被换成为对应于该寄存器保留站的名称(编号)。指令流出逻辑和保留站相结合实现寄存器换名,从而完全消除了数据写后写和先读后写相关这类名相关。

保留站:设置在运算部件的入口,每个保留站中保存一条已经流出并等待到本功能部件执行的指令(相关信息),包括操作码、操作数以及用于检测和解决冲突的信息。


动态分支预测技术

在程序运行时,根据分支指令过去的表现来预测其将来的行为。如果分支行为发生了变化,预测结果也跟着改变。动态分支预测技术的目的有两个:预测分支是否成功和尽快找到分支目标地址(或指令),从而避免因控制相关而造成流水线停顿。

需要解决两个关键问题(1)如何记录分支的历史信息;(2) 如何根据这些信息来预测分支的去向(甚至取到指令)。

前瞻执行的基本思想。

对分支指令的结果进行猜测,并假设这个猜测总是对的,然后按这个猜测结果继续取、流出和执行后续的指令。只是执行指令的结果不是写回到寄存器或存储器,而是放到一个称为ROB的缓冲器中。等到相应的指令得到“确认”(即确实是应该执行的)后,才将结果写入寄存器或存储器。


. 存储层次

单级存储器的主要矛盾:速度越快,每位价格就越高。容量越大,每位价格就越低。容量越大,速度越慢。采取多级存储层次方法来解决。

从用户的角度来看,存储器的三个主要指标是:容量、速度和价格。

评价存储层次的主要参数:存储层次的平均每位价格、命中率或失效率、平均访问时间。

“Cache-主存”层次:在CPU和主存之间增加一级速度快、但容量较小而每位价格较贵的高速缓冲存储器。借助于辅助软硬件,它与主存构成一个有机的整体,以弥补主存速度的不足。

“主存-辅存”层次:目的是为了弥补主存容量的不足。它是在主存外面增加一个容量更大、每位价格更便宜、但速度更慢的存储器。它们依靠辅助软硬件的作用,构成一个整体。

主要区别是什么?

目的:为了弥补主存速度的不足;为了弥补主存容量的不足。存储管理的实现:全部由专用硬件实现;主要由软件实现。典型的块(页)大小:几十个字节;几百到几千个字节。CPU对第二级的访问方式:可直接访问;均通过第一级。不命中时CPU是否切换:不切换切换到其他进程

存储层次中应解决四个问题:映像规则:当把一个块调入高一层存储器时,可以放到哪些位置上。查找算法:当所要访问的块在高一层存储器中时,如何找到该块。替换算法:当发生失效时,应替换哪一块。写策略:当进行写访问时,应进行哪些操作。

地址映像方法,优缺点

(1)全相联映像。实现查找的机制复杂,代价高,速度慢。Cache空间的利用率较高,块冲突概率较低,因而Cache的失效率也低。

(2)直接映像。实现查找的机制简单,速度快。Cache空间的利用率较低,块冲突概率较高,因而Cache的失效率也高。

(3)组相联映像。组相联是直接映像和全相联的一种折中。

组相联Cache比相同容量的直接映像Cache的失效率低。由此是否可以得出结论:采用组相联Cache一定能带来性能上的提高?为什么? 不一定。因为组相联命中率的提高是以增加命中时间为代价的,组相联需要增加多路选择开关。

Cache中,实现并行查找的方法:1用相联存储器实现。2用单体多字存储器和比较器来实现。

替换算法

(1)随机法:简单、易于用硬件实现,但这种方法没有考虑Cache块过去被使用的情况,反映不了程序的局部性,所以其失效率比LRU的高。(2)先进先出法:容易实现。它虽然利用了同一组中各块进入Cache的顺序这一“历史”信息,但还是不能正确地反映程序的局部性。(3)最近最少使用法LRU:失效率最低。但是LRU比较复杂,硬件实现比较困难。

有效构建方法:在构建系统的过程中消除故障隐患,这样建立起来的系统就不会出现故障。


写策略

(1) 写直达法:易于实现,而且下一级存储器中的数据总是最新的。

(2) 写回法:速度快,写操作能以Cache存储器的速度进行。而且对于同一单元的多个写最后只需一次写回下一级存储器,有些“写”只到达Cache,不到达主存,因而所使用的存储器频带较低。

. 输入/输出系统

输入/输出系统简称I/O系统,它包括I/O设备以及I/O设备与处理机的连接。

总线按用途分类,总线可分为

 (1)CPU存储器总线。CPU存储器总线比较短,通常具有较高的速度,并且要和存储器系统的速度匹配来优化带宽。(2)I/O总线。I/O总线要连接许多不同类型、不同带宽的设备,因而比较长,并且应遵循总线标准。

按设备定时方式分类,总线可分为

 (1) 同步总线。所有设备通过统一的总线系统时钟进行同步。成本低,因为它不需要设备之间互相确定时序的逻辑。缺点:总线操作必须以相同的速度运行。(2) 异步总线。设备之间没有统一的系统时钟,设备自己内部定时。设备之间的信息传送用总线发送器和接收器控制。容易适应更广泛的设备类型,扩充总线时不用担心时钟时序和时钟同步问题。但在传输时,异步总线需要额外的同步开销。


 输入输出系统概述

     经历了3个阶段对应着3种方式:程序控制I/O(程序查询、中断驱动)、直接存储器访问(DMA)、I/O处理机方式(通道、外围处理机PPU)。

     输入输出设备分外存和传输设备两大类。

 总线设计

     总线分类:半双工、全双工;

                     芯片级、板级(局部总线)、系统级;

                     专用总线、非专用总线。


根据信息传送方式的不同通道分为三种类型:

(1)字节多路通道:一种简单的共享通道,主要为多台低速或中速的外围设备服务。传送过程:通道每连接一个外围设备,只传送一个字节,然后又与另一台设备连接,并传送一个字节。

(2)数组多路通道:适于为高速设备服务。传送过程:每连接一台高速设备,一般传送一个数据块,传送完成后,又与另一台高速设备连接,再传送一个数据块。

(3)选择通道:为多台高速外围设备服务。传送过程:在选择通道中,通道每连接一个外围设备,就把这个设备的n个字节全部传送完成,然后再与另一台设备相连接。

通道处理机:能够执行有限I/O指令,并且能够被多台外围设备共享的小型DMA专用处理机。

通道完成一次数据传输的主要过程?

(1) 在用户程序中使用访管指令进入管理程序,由CPU通过管理程序组织一个通道程序,并启动通道。 (2) 通道处理机执行CPU为它组织的通道程序,完成指定的数据I/O工作。 (3) 通道程序结束后向CPU发中断请求。CPU响应这个中断请求后,第二次进入操作系统,调用管理程序对I/O中断请求进行处理。

通道的主要功能8

(1) 接收CPU发来的I/O指令,根据指令要求选择一台指定的外围设备与通道相连接。(2) 执行CPU为通道组织的通道程序,从主存中取出通道指令,对通道指令进行译码,并根据需要向被选中的设备控制器发出各种操作命令。 (3) 给出外围设备的有关地址,即进行读/写操作的数据所在的位置。 (4) 给出主存缓冲区的首地址,这个缓冲区用来暂时存放从外围设备上输入的数据,或者暂时存放将要输出到外围设备中去的数据。(5) 控制外围设备与主存缓冲区之间数据交换的个数,对交换的数据个数进行计数,并判断数据传送工作是否结束。 (6) 指定传送工作结束时要进行的操作。 (7) 检查外围设备的工作状态是正常或故障。根据需要将设备的状态信息送往主存指定单元保存。 (8) 在数据传输过程中完成必要的格式变换。


相关推荐