先进计算机概念

下载
第12章先进计算机概念
研究计算机性能与技术是为了使计算机运行得更快,从质量上看,这意味着要减少完成
指定计算或运行特定程序的时间。为了提高计算机的速度,我们必须修改已有的电路设计,
甚至针对数据流通路引入全新的结构思想。本章叙述一些通常用于加强现代计算机性能的非
常重要的概念与思想。文中的讨论将阐述如下事实:处理速度依赖于从基本电路到先进的体
系结构的每个设计层次的细节。
12.1 计算速度
假如我们想购买一台台式计算机以替换两年前购买的旧系统,我们希望得到的最大的回
报是:新系统比老系统“运行得更好”并且在运行旧程序时性能有明显的改进。现在要问所
有优秀工程师和科学家都关心的关键问题:什么是“运行得更好”?是否存在数量标准?这
些标准是否可帮助我们穿越各种各样商标与模型的广告海洋?有些标准非常明显:存储器的
大小、硬盘的容量、显示器的尺寸及分辨率。但如何判断C P U的性能?
为比较两台计算机,我们可以选择一个相当长而且非常复杂的程序运行在两套系统上,
并记录下每套系统的总的运行时间。记Tx为系统X的总时间,Ty为系统Y的总时间。如果Tx >Ty,
则系统Y被认为运行得更快一些,因为它在运行相同程序时运行时间更短一些。程序运行时间
可用于定义性能级别P:对X,Y
Px= 1 / Tx,Py= 1 / Ty ( 1 2 - 1 )

Py > Px ( 1 2 - 2 )
则说系统Y的性能级别高于系统X。
这种方法用于比较两个相似计算系统是合理的,但它并未提供系统速度的绝对计量。因
为它没有考虑程序中指令类型的差异。一种更有意义的逼近实际情况的方法是选择一个程序
集,把它们运行于两套系统以决定它们C P U的执行时间。
尽管有些含糊,下面的概念确实具有一定的意义,那就是,指令吞吐量。从数量上我们
可以定义它为
指令吞吐量= #每秒执行的指令条数
只要我们定义了实际运行的指令类型,这种方法就可以用于比较两套系统。正如我们所
知道的那样,由于硬件存在固有逻辑延迟,所以数据通路限制了指令吞吐量。通常我们假定
我们使用的是最快的逻辑电路,所以无法改进电路。从而把我们的注意力放在借助改变计算
机整体结构来改善指令吞吐量的技术上。如果这样可行,性能的提高就无需等待工艺技术的
改善。
12.2 流水线
流水线是一项减少总的程序执行时间的技术,它的基本思想是控制穿过数据通路的指令
流,以获得最大的吞吐量(如每秒能处理的指令数)。流水线把指令划分成多个步骤,充分利
用数据流通路上的电路部件的每个时钟周期,并行处理多条指令,以最大限度地开发电路的
潜能。
可用方块图来表示C P U,如图1 2 - 1 a。其中每个方块代表实现该任务所需的逻辑网络,这
样,数据流通路可被划分为如下几个步骤:
I F:取指令
I D:指令译码
E X E:指令执行
M E M:存储访问(如果需要)
W B:回写寄存器(如果需要)
这几个步骤遵循计算机运行的时序。流水线的工作机理可用数据流经各个网络来解释。
基本时钟模式在一个时钟周期完成上述五步操作。如果我们追踪数据在C P U操作链中的流动,
会发现每个操作单元都有一定的延迟。图1 2 - 1 b给出了数据流过C P U操作链的时间线。从中可
以看出:数据流过C P U网络的时间ti n s t最坏为
ti n s t = tI F + tI D + tE X E + tM E M + tW B ( 1 2 - 3 )
此时需访问每个C P U网络,时间为各个步骤的总和。在这种情况下,每个时钟周期都可
以有新数据,因而最小时钟周期T1
T1 ≥ ti n s t ( 1 2 - 4 )
当执行n条指令时需要的总时间为: n T1秒。这里有一点很关键,就是数据一旦流过数据
通道上某个单元,直到下个波形到来前它都不再被使用。这样,单元在完成了它的指定工作
后,将处于空闲状态。流水线就企图使用其他的数据流控制方式来清除这些空闲时间。
图1 2 - 2 a给出了如何将数据通路改为流水线的方法。整个C P U逻辑依然被分为I F、I D、
E X E、M E M和W B五个部分,只是在每个单元上加上了输入寄存器,用于控制数据进入。
图12-1 基本计算机结构中的电路使用情况及其时间关系
334 数字系统设计基础教程
指令撤消
a) 数据流通路
b) 电路使用情况
指令1 指令2
下载
图12-2 改变成流水线结构
由于寄存器由同一时钟信号f控制,每个单元将同时接收数据。数据流特性可用时间图表
示(图1 2 - 2 b)。对这套系统,我们可以选择一个新的时钟周期T<T1,取
T = max{tI F,tI D,tE X E,tM E M,tW B} ( 1 2 - 5 )
即可保证最慢的单元有足够的处理时间。这便是该流水线所能采用的最快的时钟周期。流水
线完成一条指令的时间是5T,这比T1要长。但流水线的速度优势只有在一长串指令序列通过
系统时才能显现出来。
图12-3 流水线中的指令移动
图1 2 - 3给出了流水线的一个简单表示。由于指令在计算机中被处理时,每个时刻只“占
用”一组电路,跟踪指令从启动到结束的过程可清楚地看到指令的运动。让我们用C C 1、C C 2
等来标志各时钟周期,得如下电路图表:
时钟周期电路使用
C C 1 取指令( I F)
C C 2 指令译码( I D)
C C 3 执行指令( E X E)
C C 4 存储访问( M E M)
C C 5 回写(W B)
每个时刻指令只使用五个电路模块中的一个。流水线利用这一特性,使其在每一个时钟
周期开始时都允许一条新的指令流入流水线。图1 2 - 4给出了一条加法指令( A D D)在流水线
中的流动状况,它清楚地说明了指令在处理器中的行进过程。
下面来看流水线的实际操作过程。假如我们要完成一个指令序列: I n s t 1、I n s t 2、I n s t 3等
等。每条指令依次进入流水线,且在每个时钟的上升沿新指令进入I F单元,这样指令在流水
线中的流动如图1 2 - 5所示。在C C 1周期,I n s t 1进入I F单元;在C C 2周期I n s t 1移动到I D单元,同
第12章先进计算机概念335
下载
指令撤消
一条指令的时间间隔
a ) 指令流通路
b) 一条指令的时间关系
新指令撤消指令
时I n s t 2进入I F单元;在C C 3周期I n s t 1移动到E X E单元, I n s t 2移动到I D单元,而I n s t 3进入I F单
元,指令依序加载到流水线上。在C C 5周期,流水线各个单元都被占用,并且I n s t 1指令产生
出了结果。在C C 6周期I n s t 1指令退出流水线,同时I n s t 6进入流水线。
名称“流水线”恰当地描述了这种流动。这就像给一个管道里填充球时,若每次填充一
个,当管道填满之后,每填入一个新球,将从管道的另一端挤出一个球。注意,流水线操作
与第8章8 . 5节讨论的移位寄存器的原理类似,只是流水线每栈的逻辑网络比较复杂,不是简
单的存储单元组成的。
图12-5 通过一流水线网络的指令流
看过流水线的操作流程之后,让我们来分析流水线如何命使计算机提高计算速度。由于
流水线每个周期把指令移动一栈,因此I n s t 1指令需要5T的时间才能出结果,这从图1 2 - 5就可
以看出。从而I n s t 2在6T时刻出结果, I n s t 3在7T时刻出结果,如此等等。换句话说一条满流水
线每个时钟周期出一个结果;而处理器中每次只有一条指令时,每5T秒才能执行一条指令。
336 数字系统设计基础教程
下载
时钟
周期
时钟
周期
撤消Inst1
撤消Inst2
单元

撤消
图12-4 流水线中的指令移动及时间关系
比较单指令处理和流水线处理,可以看出流水线处理的速度提高了。假设,我们要运行
一个有N条指令的程序,对单指令处理模式需要花费的总时间为
t1 = N × (5T) = 5N T ( 1 2 - 6 )
秒。对流水线处理模式:需要花费
tp i p e = 5T + (N- 1 )T
= (N+ 4 )T ( 1 2 - 7 )
秒,其中5T是一条指令流出流水线需要的时间(假定流水线初始为空),第二项(N- 1)T 是
后N- 1条指令流出流水线需要的总时间。若N= 1 0 0 0,则
t1= 5 0 0 0T
tp i p e= 1 0 0 4T ( 1 2 - 8 )
所以流水线提高了约5倍的处理速度。这是一种理想的估算,没有考虑实际应用会遇到的
问题。但这已充分说明了流水线是一种提高处理器速度的有效技术。
流水线中栈数通常依赖于最慢单元的处理速度。这是因为流水线时钟周期T必须足够长,
以便每个单元都有足够的时间完成自己的预定的逻辑运算。要想进一步提高速度,方法之一
是增加慢速单元的速度,以提高流水线的时钟频率;另一种方法是,增加流水线的栈数,来
降低时钟周期,这种方法被称为深流水线,这里的“深”是说明重叠的栈的数目。
图1 2 - 6 a给出了一个例子,在该系统中,指令执行单元被划分为两个单元,称为E X E 1,
E X E 2,同样,存储访问也用两栈M E M 1,M E M 2来完成,这样五栈流水线被扩展为七栈流水
线,其时钟周期为TD,显然TD7 TD < 5T ( 1 2 - 9 )
则深流水线处理一条指令的时间就更短一些,从而增加了吞吐量。虽然概念很直观,
但必须记住体系结构设计的限制因素是每块电路的速度。换句话说系统性能依赖于每一层
次的设计。一个有趣的事情是,如果T = TD,则当流水线满时两个系统的吞吐量是一样的。
图12-6 增加流水线深度
第12章先进计算机概念337
下载
一条指令的时间间隔
a) 指令流通路
b) 一条指令的时序
12.2.1 数据冒险
理想的流水线假定每条指令是相互独立的,这意味着指令I n s t 2不依赖于指令I n s t 1的执行
结果。如果相近的指令之间存在依赖关系,则指令处理数据时将可能发生问题。这是因为在
M E M周期数据才被写入存储器,在W B周期数据被写入寄存器,而在此之前后续指令取到的
是以前的数据,从而可能引起错误。通常称这种情况为数据冒险。
考虑下面的指令序列:
add R1,R 8,R 9 # R 8 + R 9→R 1
sub R2 ,R 1,R 6 #R1- R6→R 2
第一条指令,把R 8和R 9中的数据相加送入R 1寄
存器,第二条指令把R 1中的数据减去R 6中的数
据之后送入R 2寄存器。如果S U B指令紧跟在
A D D指令后面,则将发生问题,如图1 2 - 7所示。
图1 2 - 7 a显示A D D指令在E X E周期求和,在下一
周期(图1 2 - 7 b)S U B使用R 1的值去计算R 1 - R 6,
但此时R 1的正确值还没有被写入,(要到W B周
期才能写入,如图1 2 - 7 c所示)。这样S U B指令取
到R 1的值是以前的值,并不是程序所要求的值。
图1 2 - 8给出了一个把寄存器值具体化后的实例,
它更清楚直观地解释了这个问题。图1 2 - 8 a为用
于A D D和S U B的初始数据,图1 2 - 8 b为S U B紧跟
在A D D下一个时钟执行的结果R 2 = R 1 - R 6 = 1 2 -
4 = 8。但实际上, S U B操作应在A D D指令流过
W B周期后执行,即R 2 =(R 8 + R 9)- R6=30-
4 = 2 6。
图12-8 数据冒险发生时寄存器的内容
这种类型的冲突是由流水线的时序性引起的。解决这个问题一种直接的方法是停滞S U B
指令在流水线中的流动,不让它访问寄存器R 1,直到接收到A D D操作的正确结果为止。实现
这一功能的方法是在流水线中插入“气泡”,如图1 2 - 9所示。“气泡”意味着指令在这周期不
产生任何结果,只是停滞流水线的后续操作,称之为N O P(空操作)指令。图1 2 - 9显示了流
水线在A D D指令之后插入了三个气泡(用椭圆表示),把S U B指令停止了三个周期的情况。
338 数字系统设计基础教程
下载
ADD计算结果
SUB使用R1原内
容计算结果
A D D把新结
果放入R 1
图12-7 流水线中的数据冒险
a)
b)
c)
a) 原内容b) SUB之后的内容c) ADD WB之后的内容
A D D指令在W B周期刷新寄存器(此时S U B指令进行指令译码)。这样当S U B指令到达E X E周
期时,就可以使用前一条指令产生的正确的结果了。
图12-9 使用气泡停滞流水线
12.2.2 解决冒险
增加气泡有两个缺点:第一,我们必须增加逻辑和电路来探测冒险,并在需要时阻滞流
水线。第二,由于N O P气泡不作任何有用的操作,它的加入降低了系统的吞吐量和性能。为
避免流水线速度的下降,一种方法是数据先行处理方法,如图1 2 - 1 0所示。该方法给系统增加
一些逻辑,使之在I F和I D周期探测数据冒险。当指令在E X E周期时,直接把数据送到M E M或
W B模块。这种方法从概念上讲很容易,但它引起了许多新问题。例如M E M和W B可能还在处
理上一条指令的数据,因而数据先行处理不能干扰正常操作;另一方面,数据冒险能否被编
译器探测到仍是个问题。当然正是这类问题使系统设计要考虑所有的方面:包括硬件、软件
和体系结构。
图12-10 流水线数据先行处理的避免冒险
12.3 高速缓存
计算机的主存储器用于存储程序、操作系统和数据。它是数据通路的组成部分,是处理
第12章先进计算机概念339
下载
时钟周期
注释
第一个气泡
第二个气泡
ADD计算出结果
第三个气泡
ADD的结果送入寄存器
选择SUB寄存器
SUB计算结果
SUB结果送寄存器
先行处理逻辑
撤消
器的关键部件。大的存储阵列能运行更大的程序、更复杂的操作系统,所以即使是P C机也配
置6 4 M B或更大的内存。
存储器的大小通常取决于它的代价,用户都希望更大的内存,但事实上对预算的考虑限
制了内存的大小。克服这个问题的方法是使用便宜的内存。内存的价格可由下式计算
Price = M×C (12-10)
其中C为每字节的价格,M为字节数。
显然消费者希望C越小越好(总是如此!),而芯片厂商则面临着既要提供最便宜的字节
价格,又要保证生产线盈利的问题,解决方法是:
• 尽可能提高存储芯片上的单元密度;
• 保持每个芯片的价格在尽可能低的水平。
但在性能方面,访问时间ta c c是非常重要的。访问时间是指从存储器“访问”数据所需的时间,
访问时间应小于指令流执行时间。
当我们研究半导体随机访问(或读/写)存储器(R A M)时,有两种类型的存储器供选择,
一是静态R A M或称S R A M,它速度快,但每个单元的电路太大。一个S R A M单元需要4到6个
晶体管,并且整个存储阵列的连线复杂。另一种是动态R A M(D R A M),D R A M的单元比
S R A M单元简单,只需一个晶体管和一个电容,并且D R A M容易连接成大的阵列,它的缺点
是比S R A M慢,从而增加了存储访问时间ta c c。
那么计算机该用哪一种存储器呢?看看商业计算机主板就知道D R A M是当然的赢家。对
桌面系统, D R A M可被当成存贮模块买进插入到计算机主板上。根据设计的不同存储模块可
分为S I M M(单排存储模块)和D I M M(双排存储模块)。存储模块能让用户在保持预算的前
提下容易地构造大存储器。图1 2 - 11给出了相对于中央处理器的存储模块位置示意图。这种存
储器构造方式虽然使总体价格下来了,但因D R A M相对较慢,且印刷电路板也增加了C P U到
存储器的延迟,所以还需有一些额外的花费来提高系统性能。如此我们推出一个结论:
• 主存单元是数据通路上最慢的部分。
由于系统时钟不能快于最慢的单元,这样慢速的存储器是设计高速计算机的限制因素。存储
器访问时间影响到指令访问时间,如取字、存字以及给取指令单元加载指令字的时间。
解决这一问题的方法是引入称之为高速缓存( C a c h e)的小的局部存储器阵列,它使用较
快的S R A M构成。为保持系统的价格, C a c h e的尺寸很小,通常用千字节( K B)衡量。C a c h e
提供给C P U作为局部暂时存储。C a c h e插在C P U与系统存储器之间,如图1 2 - 1 2所示。C a c h e包
含地址线和数据线,且包含一些内部电路以控制操作。
图12-11 主板上系统存储器的位置
340 数字系统设计基础教程
下载
中央处理
单元(CPU)
数据总线
存贮阵列
地址
主板
图12-12 高速缓存在数据通路中的位置
图1 2 - 1 3给出了C a c h e的结构和操作细节。当C P U执行指令如l w或s w时,送出一个地址指
明存贮位置。系统开机时, C a c h e是空的,此时对收到的地址无法提供数据,必须到主存中去
取数据,称之为“未命中”。未命中在C a c h e不包含请求的数据时发生。当未命中发生时,需
确定请求的数据在系统存储器中的位置,并把它们取出并送入C a c h e和C P U。从系统存储器中
取数据到C a c h e时并不是只取一个数据,而是把指定地址所在的块整个送入C a c h e。
图1 2 - 1 3 b显示了C a c h e已经包含请求数据时的数据操作过程。称之为“命中”,此时C a c h e
可快速的返回请求数据。当系统具有很高的命中率时,系统能力就增强了。
命中率=命中数/数据访问总数×1 0 0 % (1 2 - 11)
图12-13 高速缓存(Cache)的命中和未命中
高命中率可由下列两条特性保证。一是程序通常把数据成组存储,即使不连续也放在相
近的位置,因此下次访问的数据很可能在上次访问的字的附近,而把要访问的数据和周围的
数据一起读入C a c h e,可提高数据访问的命中率。二是整个C a c h e可分为多段,每段可存储一
第12章先进计算机概念341
下载
中央处理单
元(CPU)
主存
(慢速)
Cache
memory
(fast)
数据数据
地址地址
从CPU来的
地址
从CPU来的
地址
数据
数据
数据
Cache
Cache
数据
数据
“命中”
主存
“未命中” 地址主存
地址
a) 未命中事件
b) 命中事件
块从内存读入的数据,这样C a c h e中含有的各块数据的命中率也就相应提高了。
现在让我们考虑C P U直接把数据放入内存时的情况,由于C a c h e在C P U与内存之间,所以必
须建立一套写入策略,以保证C a c h e与内存的一致性,称之为数据一致性。图1 2 - 1 4 a给出了C P U
数据只写入C a c h e的情况。此时主存中的数据是旧的,不能反映最新情况,若没有主存刷新策略,
程序就无法得到正确结果。图1 2 - 1 4 b说明了C a c h e写穿透策略,此时数据既刷新了C a c h e也刷新
了主存。这样保持了C a c h e与主存的一致性,但它强制每个写操作都与慢速的内存互换数据,这
就降低了系统操作的速度。一个折衷的办法是“回写”策略。它只刷新那些需要刷新的主存。
回写策略的设计比较复杂,因为它要决定什么时候刷新,并且不能降低系统的性能。
C a c h e通常按使用情况分级,如图1 2 - 1 5所示。一级C a c h e(L 1)最接近中央处理器,它很
小,用于存储最常用的数据。对微处理器而言, L1 Cache直接由芯片本身提供,是处理器的
组成部分;二级C a c h e(L 2)通常比L1 Cache大,它位于L 1与主存之间。L2 Cache中存有与
L1 Cache一样的数据,只是有更大的存储空间,存储了一些其他模块。L2 Cache提高了L 1
C a c h e的性能,它是L 1与主存之间的高速中介。
图12-14 高速缓存(Cache)的刷新和一致性。
图12-15 一级Cache和二级Cache
342 数字系统设计基础教程
下载
从CPU来
的数据
从CPU来
的数据
地址
地址
主存
主存
考数据
一致
地址
Cache
Cache
a) 只刷新C a c h e
b) Cache写穿透
中央处理
单元(小) (大)
地址
输出
地址
数据数据
数据
地址
输入
系统
主存
V L S I与C a c h e
所有高性能微处理器芯片都把板上的L1 Cache纳入设计中,一级C a c h e可提供比只有主存
的系统更快的访问速度。从体系结构上
来说,系统希望有一个大的C a c h e,因
为大的C a c h e可全面提升操作速度。另
外V L S I处理器设计者认为用S R A M构
成的C a c h e必须与C P U电路设计在同一
芯片上,因此C a c h e的尺寸受到物理条
件的限制。
让我们回顾一下CMOS SRAM单元
(如图1 2 - 1 6),它需要6个M O S管。若
存储一个8位的字节需要6×8 = 4 8个晶
体管。如果数据总线为3 2位宽,则一个
字为4个字节,需要4×4 8 = 1 9 2个M O S管。对一个能存储1 0 2 4个3 2位字( 1 K字)的C a c h e阵列
需使用1024*192=196 608个晶体管。除此之外还需再加上读写电路和地址译码,由此可以看
出C a c h e所需的晶体管数量。并且,随着芯片设计复杂度的增加, C a c h e的尺寸也需大大地增
加。如果我们设计很大数量的晶体管,则芯片的整体尺寸也将增加,相应的芯片制作工艺宽
度必须减小。在生产时缩小工艺宽度意味着提高单位存储的价格,这将导致用户群体减小、
产品利润减少,从而使电路板设计者由于价格的限制选择较便宜的芯片。
为解决这个问题, C a c h e的尺寸必须在设计时就考虑两者的均衡。系统要求的L 1阵列的能
力必须与V L S I关心的芯片面积、复杂度及生产工艺相均衡,目标是既要构造高性能的设计,又
要满足适当的工艺,二者折衷来达到目的。这就是一个例子,说明一个复杂的数字系统需要考
虑许多看起来似乎无关的事情。全面考虑先进的理论与工艺技术,是成为成功设计师的关键。
图1 2 - 7是I n t e l公司生产的奔腾Pro CPU外型。这是一块包含两个独立硅芯片的P G A封装,
第12章先进计算机概念343
下载
WL(字线)
位线
非位线
图12-16 六管CMOS SRAM单元
图12-17 Intel公司奔腾Pro微处理器
其中大芯片是C P U本身,带有内建L1 Cache,相邻的小芯片是L2 Cache。这是一种“双芯片
模式”,L2 Cache与主处理器直接用线连接。
12.4 超标量结构
超标量结构使用多条流水线同时处理指令,它以更复杂的系统结构为代价来提高指令的
吞吐量。
图1 2 - 1 8给出的是最基本的双道超标量模块图。两条独立的流水线分别命名为流水线1和流
水线2,它们可以同时处理指令。注意,两条流水线共享公共指令C a c h e,并在访存时操作同一
数据C a c h e。流水线中的各栈同单流水线结构类似,只是存储访问(M E M)与回写寄存器(W B)
互换顺序,并使两条流水线共用一个存储访问单元。这种改变不会影响流水线本身的特性。
双道超标量结构的操作直截了当。指令预取缓存单元负责从内存里的程序中找出指令,
并分析其数据流要求。图1 2 - 1 9描述了处理每个任务的基本子单元。取指令网络使用程序计数
器( P C)中的内容来跟踪指令流,当系统总线空闲时把指令装入指令缓存。一旦指令进入
“代码缓存”就由“指令发布逻辑”子块进行分析,判断出不需交互就能被两条流水线处理的
独立代码块。增加C a c h e尺寸,可以增加找出独立代码块的可能性。一旦找出独立代码块,即
可把它们划分出来并发布到各自的流水线上去,“双道”的含义就是指两条流水线的代码序列
可以同时流动。公共的数据缓存接在流水线末端,如图1 2 - 2 0所示,该单元从两条流水线中接
收数据,把结果分类并送入每条指令指定的位置。
图12-18 双道超标量结构
图12-19 指令缓存的细节
344 数字系统设计基础教程
下载
流水线1
取指令网络
指令
流水线2 存贮器
局部存
贮器
地址
指令
指令发布逻辑
流水线2 流水线1
图1 2 - 2 1为I n t e l奔腾微处理器中使用超标量结构的实例,它使用两条分别命名为“ U”和
“V” 的流水线,V流水线有五栈,它提供整数操作; U流水线既提供整数操作,又提供浮点
操作。U流水线的第五栈命名为W B / F P 1,在处理整数操作时用于回写,在处理浮点指令时用
于准备数据格式并把它传送倒浮点操作栈F P 2,F P 2栈包含有浮点操作执行电路。F o r m a t栈用
于完成浮点计算收尾工作,最后一栈E r r o r s负责错误报告。值得注意的是奔腾处理器的外部时
钟频率为6 0 M H z,低于早先的6 6 M H z的4 8 6处理器,并且它们使用相同的C M O S工艺。这说明
优化结构可提供更好的性能。
图12-20 数据缓存分类存储结果图12-21 Intel公司奔腾微处理器的结构
这个例子简要说明了超标量结构的作用,当然,我们是在屏蔽掉所有逻辑网络及延时等
细节的情况下,从系统级角度来分析系统的。其实要设计这样的系统是极具挑战性的,需要
大量的工程师合作完成,这支队伍要包含逻辑综合、体系结构、电子电路、超大规模集成电
路等许多方面的专家。
12.5 并行计算的基本概念
并行计算的概念源自同时使用多个处理器解决一个问题。相似的另一个思想是“分布计
算”,它把整个任务分为多段,每段分派给不同的处理器,所有处理器同时处理数据。并行计
算和分布计算被认为将是2 1世纪最重要的概念。
让我们回顾一下在传统的冯·诺依曼结构计算机上运行程序的过程。对每条指令,计算
机的处理分为四个主要操作:
1. 取指令(I F)
2. 指令译码( I D)
3. 执行(E X E)
4. 存储(S TO)
这里“存储”具有双重含义,包含回写(当结果要放入寄存器中时)和存储结果到内存。
第12章先进计算机概念345
下载
指令Cache
双指令发布
流水线2 流水线1
数据
数据分类逻辑
到Caohe/主存
预取
译码1 译码1
译码2 译码2
执行
数据
执行
Format
Errors
预取
由于计算机程序是一个许多独立指令组成的序列,所以计算机执行程序的速度依赖于处理器
的吞吐量,即每秒执行指令数。
让我们来比较一下不同处理速度的两个处理器的结果。设Ta为处理器A完成一条指令需要
的时间,Tb为处理器B完成一条指令所需的时间,图1 2 - 2 2比较了当Tb理器B比处理器A的性能高。由于处理器都执行相同的操作流程( I F - I D - E X E - S TO),因此可
说处理器B的性能比处理器A高。这其中隐含着处理器B中的电路比处理器A中的电路快。这
个结论也可以推广到流水线结构,因为流水线并没有减少执行一条指令所需的时间。
这个简单的比较点出了冯·诺依曼结构的要害。为提升系统的计算速度,我们必须减少
通过各个单元的延时。这一点可以通过在改进电路的同时增加时钟频率来达到。这个特点被
称为冯·诺依曼瓶颈。它说明这样一个事实,限制计算速度的是结构。
并行计算机使用多个处理器同时执行一个程序的方法,克服了冯·诺依曼瓶颈。并行计
算虽然听起来有点像流水线,但其概念更具有普遍意义。特别地,并行计算网络的速度并不
受限于每个处理器的时钟速度,而是取决于处理器的使用数目以及它们的互连方式。
图12-22 提升冯·诺依曼处理器的速度
并行计算机由被称为处理器单元( P E)的基本实体组成,它们互连在一起共享数据。每
个P E都有输入输出以及控制信号,并进行一定的操作。图1 2 - 2 3是我们用以表示P E的符号。
一个处理单元可以很简单,也可以很复杂,随机器而定。其具体功能依据将处理的计算类型
来选择。图1 2 - 2 4给出了一些基本例子。一个P E可以仅有一个简单门,而大的设计可能定义
346 数字系统设计基础教程
下载
一条指令
一条指令一条指令一条指令一条指令
一条指令一条指令
输出
a) 简单门
输入输出
c) CPU核
图12-23 通用处理器单元的符号表示图12-24 处理器单元的例子
b) 全加器
控制
输入
P E为一个加法器甚至一个通用微处理器。就我们目前的并行计算知识而言,一般不选择过于
复杂的P E,因为这样将增加系统的复杂性。但从进化的角度来看,更强大复杂的P E必定会成
为超级系统的组成构件。
12.5.1 并行机分类
并行计算机可按如下基本参数分类:
• 同一时刻能处理的指令数N;
• 同一时刻能处理的数据段数S。
传统的冯·诺依曼计算机同一时刻仅能做一条指令,处理一个数据段,所以其N= 1;S= 1。
这类计算机被称为S I S D(单指令流单数据流)结构。在本文的讨论中,通常的S I S D机器用图
1 2 - 2 5的简单图形表示。处理单元接受输入D并按Inst X指令产生输出结果Rx(D)。这个简单
的图示表示出了它在系统结构层所处的位置。
更复杂的并行结构可分为如下三组:
• S I M D:单指令流,多数据流(N= 1,S> 1);
• M I S D:多指令流,单数据流(N> 1,S= 1);
• M I M D:多指令流,多数据流(N> 1,S> 1)。
每种结构有其独特的特性应用于不同的领域。
S I M D
图1 2 - 2 6所示为一个S I M D结构,它有4个处理器: P E 0、P E 1、P E 2和P E 3。在这种结构中,
每个处理器做同样的操作,但处理的是不同的数据。当输入为D0、D1、D2和D3时,对应于
P E 0、P E 1、P E 2和P E 3处理器单元的输出结果为
RX( D 0 ),RX( D 1 ),Rx( D 2 ),RX( D 3 ) ( 1 2 - 1 2 )
例如:如果指令为A D D(加),则每个处理器都做加法,但输入不同,因此处理结果也不同。
图12-25 单指令流,单数据流(SISD)机器图12-26 单指令流,多数据流(SIMD)机器
M I S D
在M I S D结构中每个处理器接受不同的指令,但各处理器使用同一数据,图1 2 - 2 7所示为
一个M I S D机器的例子。此时数据D被加以不同的操作产生4个不同的结果。图中在指令I n s t A,
I n s t B,I n s t C,I n s t C的分别操作下,产生4个结果:
第12章先进计算机概念347
下载
处理单元
输入结束
RA( D ),RB( D ),RC( D ),RD( D ) ( 1 2 - 1 3 )
图12-27 多指令流,单数据流(MISD)机器
M I M D
这是最全面的并行机类型。图1 2 - 2 8所示为一个M I M D结构,它允许几个操作同时处理不
同的数据。图中并行网络的输入为D0、D1、D2、D3,每个处理器处理不同的指令,所以结
果为:
RA( D 0 ),RB( D 1 ),RC( D 2 ),RD( D 3 ) ( 1 2 - 1 4 )
这种类型的系统使程序员编程具有最大的灵活性,但系统的设计、构造和使用复杂化了。
图12-28 多指令流,多数据流(MIMD)机器
12.5.2 并行计算示例
以上介绍的并行结构分类直接易懂,但没有显示出这些结构的有用之处。让我们给出几
个例子来展示并行结构的作用。
向量与矩阵计算
并行机在处理含有向量和矩阵计算的任务时特别有用,如在数字信号处理(D S P)中。
通常一个向量是一维列表,如4元素的列向量[A]可被表示为:
348 数字系统设计基础教程
下载
( 1 2 - 1 5 )
其中A1、A2、A3、A4为元素。一个4元素行向量[B]可表示为:
( 1 2 - 1 6 )
其中B1、B2、B3、B4为元素。
一个4×4方阵[C]可表示为:
( 1 2 - 1 7 )
其中元素可用Ca b表示,a为行号(从1到4),b为列号(从1到4)。
现在让我们回顾一些矩阵运算。若要给列向量[ 4 ]乘2,意味着向量的每个元素都要乘以2,
其结果为:
( 1 2 - 1 8 )
在传统的S I S D计算机中,计算2 * [ A ]的顺序为:
计算2 *A1,然后
计算2 *A2,然后
计算2 *A3,然后
计算2 *A4。
图12-29 处理列向量乘法的SIMD网络
第12章先进计算机概念349
下载
乘2
模块
输入输出
这要使用4个指令周期才能完成。但对S I M D(单指令流、多数据流)结构,只要用一条
指令“乘2”处理多个数据A1,A2,A3,A4即可。如图1 2 - 2 9所示,矩阵计算在一个周期内完成。
如果我们简单假定每个处理器单元P E与S I S D中处理器单元所花的时间一样,则S I M D阵列处
理完全部计算时S I S D机器才处理完一项。并行结构的速度优势在此非常明显。
再考虑行向量与列向量相乘得一个标量P的情况,其计算公式为:
( 1 2 - 1 9 )
一个S I S D机器首先计算每个乘积项AkBk(k = 1,2,3,4),然后把它们相加:
( 1 2 - 2 0 )
这将需要多个指令周期:每个乘法1个、乘积项累加要3个,总共7个指令周期。
S I M D机器的操作如图1 2 - 3 0所示。在网络中,我们使用向量元素Ak,Bk作为相应P E的输入,
并产生乘积结果。需要说明的是每个向量元素用n位二进字表示,则P E产生的乘积项为2n位的,
把它们并行加入加法网络(图中用Σ表示)产生一个2 n位的标量结果P。进一步的研究是将加
法直接加入P E单元,这样可去除外部附加电路。
图12-30 处理行列向量相乘产生标量的SIMD网络
最后一个例子是由向量产生矩阵的操作。考虑列向量乘以行向量,计算公式如下:
( 1 2 - 2 1 )
350 数字系统设计基础教程
下载
SIMD模块
多个输入
全加器
输出
输入
方阵[C]中元素由下式给出:
Ci j=AiBj (1 2 - 2 2 )
其中i, j = 1 , 2 , 3 , 4。使用标准的S I S D计算机需要1 6个指令周期,每个乘积项一个周期。但如用
具有1 6个处理器单元的S I M D处理器,如图1 2 - 3 1,则每个处理器单元处理一项,全部矩阵可
在一个周期内计算完毕。
图12-31 处理两向量相乘产生矩阵的SIMD网络
基于矩阵计算的例子揭示了并行结构的主要思想。在每个例子中,任务都被分解成不同
的部分,并指派给协同工作的各个处理器去处理,然后把结果组合在一起产生最终结果。这
一思想可以扩展到更通用的系统设计,可以使用不同的连线模式和功能更强的处理器单元。
12.5.3 一般结构
一个并行计算机由以某种方式互连在一起的几个处理器单元组成,互连方式要便于通讯
和数据流动。从概念上看,并行结构依关心点的不同有大量各种各样的形态;如
• 处理器数目;
• 处理器相互通信的方式;
• 数据流的控制。
并行计算机可根据结构上的共同特征进行分析。要明白这些概念,让我们简捷地介绍一下上
述关心点,讲述中多考虑一点细节,以便明白它们的思想是如何相关的。
第12章先进计算机概念351
下载
多个输入
SIMD模块
行1
行2
行3
行4
处理器数目
根据特定的应用选择特定设计的处理器数目。假设我们要设计一个更大的系统,一种极
端是指定P E具有强大的处理能力,这使我们能用少数复杂的处理单元来完成任务;另一极端
是我们选择许多简单的P E,把计算负担放到系统结构特征上。这两种情况用图1 2 - 3 2表示。需
折衷考虑单个处理单元的复杂性和许多简单单元所需的互连网络的复杂性。
图12-32 处理器数目与PE的复杂性
图12-33 互连级别
连通性级别
另一个关心的方面是选择一种把P E互连在一起的方法,图1 2 - 3 3给出了两种极端的情况。
对于轻拓扑连接,处理器互相作用的方式很有限,这意味着指定的P E只能与系统处理器集中
的少数处理器“交谈”。此时系统设计的复杂点在于怎样在分解任务和加载任务到各个处理单
元时考虑互连因素。
对于重连接(如图1 2 - 3 3),此时P E可与系统中大量的其他P E通讯,其极端情况是一个P E
可与系统中任意P E通信。重连接系统简化了任务分解过程,但增加了物理设计难度,因为大
量的通信路径需要大量的连线。
控制
我们关心的第三个方面是控制的级别——是在系统级统一控制还是把大量的控制放入各
个处理器单元,图1 2 - 3 4描述了这个问题。“松散”控制系统是许多控制逻辑包含在处理器单
元中的系统。它允许各个P E可以不管其他P E而制定自己的操作,但它本身的电路就复杂多了。
此时,处理器的数据流由系统控制,那么系统和各处理器谁来决定输入输出呢?
“紧密”控制系统由系统控制逻辑给各P E产生控制信号,并决定数据在网络中的流动。由
于P E并不控制它们自己,所以它们的电路比松散控制系统的P E简单,但紧密控制系统增加了
网络连线的复杂性。
352 数字系统设计基础教程
下载

复杂
复杂复杂
简单
简单
简单
简单简单
简单
简单
简单简单
简单
简单
简单

轻重
图12-34 并行计算机的控制
12.5.4 通用设计变量
为简化并行结构中的概念,让我们考虑一下
以上讨论的三个参数:处理器单元数N,连通性
等级I以及控制程度C。任意一个处理器都可以用
以三个变量为坐标轴的一个三维点表示。如图1 2 -
3 5所示,要设计一个并行计算系统既要分别考虑
三个变量,又要充分考虑三个变量的组合。对于
一个复杂的系统,在设计时就从各种视角考虑,
并分析折衷,可使设计师找到合理的解决方案。
12.5.5 互连网络
构造并行计算机的关键之一是处理器单元的互连方式。如上所述,若增加处理器单元的
通信路径使其适应更通用的处理,则互连线路将非常复杂,而且不同互连连线延时也将难以
处理。
这里有几种常用的互连技巧值得一提,它们已成了标准的拓扑连接方法。最简单的方法
如图1 2 - 3 6所示。环状网络(图1 2 - 3 6 a)中,每个处理器只与其相邻的两个单元连接,构成一
个闭环,此时数据流被限制在这些路径上。星形网络(图1 2 - 3 6 b)允许每个处理单元与其他
的任意单元通信,这增加了互连。
图12-36 基本互连模式
另一个有趣的拓扑结构是n立方结构。一个n立方有2n个处理单元,每个单元与n个其他的
P E相连接。图1 2 - 3 7 a所示为2立方结构,它是一个正方形,其每个角上有一个P E。对3立方,
第12章先进计算机概念353
下载
系统控制系统控制


控制控制控制
控制控制控制
图12-35 并行计算机的设计空间


处理器设计


双向连接
a) 环型b) 星型
如图1 2 - 3 7 b所示,可用三维立方体表示,它的每个角上有一个P E。当n> 3时n立方结构复杂得
难以画出,我们称其为超立方。图1 2 - 3 8为一个4立方结构,它包含了24= 1 6个独立的处理器单
元,每个P E与4个其他的P E相连。可以把它看成是一个3立方中嵌入了另一个3立方,且其对
应顶点相互连接。
图12-37 n=2和n=3的立方结构
在超立方结构中,每个处理节点用二进制地址表示; n立方需要n位二进制来表示地址,
每个节点只能与地址与其只相差一位的节点通信。如n= 3时, 3立方地址可用( n2,n1,n0),
(ni= 0,1)表示。例如地址为( 0 0 0)的节点只能与地址为( 0 0 1),(0 1 0),(1 0 0)的三个节
点相通信。要访问其他节点,信号必须通过其他处理器。这种连接模式限制了程序类型和编
程结构,但对某些结构的程序特别有效。
图12-38 n = 4时的超立方结构
354 数字系统设计基础教程
下载
双向连接
a) 2立方b) 3立方
内部立方
外部立方
内外立方互连
12.5.6 并行计算的挑战
本节简单介绍了一些并行计算领域的基本思想。同任何复杂的领域一样,前进的脚步是
放慢还是“以光速前进”,依赖于工程师与科学家的智慧和创造性(运气也常常在努力和成功
中唱主角)。
在并行计算机的能力被真正开发完之前有许多障碍需要越过,其中包括许多基本问题:
结构的选择、处理器单元的设计细节、互连策略以及并行程序设计的有效技巧等等。为什么
我们要解决这么多问题呢?因为实际上掌握在我们手中的计算能力是无限的!这是一个极具
吸引力的目标,不是吗?
12.5.7 光互连
作为最后一个主题,让我们来谈谈并行计算的直接结果:使用激光束作为传输线。定义
用光束连接两个电路的数据通路为“光互连”。随着计算系统复杂性的增加,复杂的连线和串
扰成为问题。那种大型计算系统中厚厚的像打包式的连线行话称为“老鼠窝”。由于光互连具
有许多很好的特性,所以被建议用来代替传统的连线模式。虽然光互连还未应用到商业系统
中,还是值得在这里简单讨论一下它的发展。
数据传输可用光发射器如L E D或激光来完成,它们的开和关分别表示逻辑1和0;光束直
接到达系统另一端的光电子器件—光电二极管上。当光线照到光电二极管上时,电流就从
中流过。光互连的概念与第6章中介绍的纤维光学系统中的概念一样,只是没有称之为光纤结
构而已。我们称这种类型的连接为“自由空间”互连以区别于导向型线互连。
自由空间的光互连有几个基本的光特性非常有趣,如图1 2 - 3 9所示。光束可以交叉而不互
相干扰。如图1 2 - 3 9 a所示,这意味着没有串扰,从而使互连问题大大地简化了。另一有用的
特性是一个光束可以全息图方式分解成几个独立的光束,送到不同的目的地。图1 2 - 3 9 b表示
的是我们可以把一个光束同时广播到几个接收器上。
在实际实现中,我们必须提供光电设备给标准逻辑电路(如印刷电路板或集成电路)。图
1 2 - 4 0是一个简单的配置示例,一个激光阵列用于产生输出光束,一个光探测器阵列用于提供
电路必须的输入光探测,并把它们转变为电脉冲。增加激光阵列和光探测器阵列会增加网络
的复杂性。
图12-39 光互连的特性
图1 2 - 4 1给出了一个使用光互连提供分布时钟的例子。在这个网络中系统时钟clock ø被送
入激光器,光束按时钟频率打开和关上,光束照到全息图上,并被其分散成几个光束。做在
逻辑电路上的探测器电路探测这些信号,并把它们返还成网络中能使用的电脉冲信号。这种
系统避免了连线问题,并确保了所有时钟脉冲相互同步(因为没有互连延迟)。
第12章先进计算机概念355
下载
输入
全息图
输出
a) 交叉光束b) 分布
光互连在并行计算机中具有巨大的潜能,因为它可以提供纯电子技巧通常不可能做到的
三维连接。如图1 2 - 4 2所示,它允许几个逻辑电路板用光进行通信。其中每个电路板都有光发
射器和光探测器阵列,作为输出输入通道。全息图插在相邻的两块电路板之间,把光束导向
适当的位置。光传输路径(图中用虚线表示)可在没有串扰和电子干扰的情况下传输数据。
需要强调的是互连光束的数目受限于探测器和发射器阵列的大小。从光学的角度来说,全息
图可以很容易把一个输入光束分解成成千上万个输出。这个技术可用于解决高互连并行处理
器的连接问题。
图12-40 光电子学光发射与光探测器阵列图12-41 光学时钟分布系统
图12-42 系统级光互连
光互连问题只是并行处理领域要研究的问题之一。所有这些都为了一个目的:解决必须
解决的问题,把梦想变为现实。
12.6 问题
1. 性能测试用于比较两台计算机。设计算机A用TA时间运行完一个11 0 0 0 0条指令的会计
程序。计算机B用TB时间完成8 4 0 0 0条指令的进行分子能量级的量子力学计算程序。你如何决
定两台计算机的性能?
2. 一台计算机能够每个时钟周期执行一条指令(细节见图1 2 - 1)。请分别计算以下列时钟
频率运行的处理器,处理1 0 0 0 0 0条指令需花多少时间:
(a) f = 66 MHz
(b) f = 100 MHz
(c) f = 300 MHz
356 数字系统设计基础教程
下载
逻辑电路芯片
或电路板
激光阵列
光学输出
探测阵列
光学输入
光学时钟
全息图
光探测器
逻辑电路
激光器
电路
电路
电路
全息图
全息图
(d) f = 333 MHz
(e) f = 450 MHz
3. 研究一下最近报纸和杂志中的个人计算机价格,根据广告准备一份相同配置下处理机
速度与价格对照表。你能据此发表一些评论并给出企划方案吗?
4. 一台计算机使用如图1 2 - 1所示的五栈结构。各单元的延迟时间分别为t I F= 1 . 6 n s,
tI D= 1 . 4 n s,tE X E= 3 . 2 n s,tM E M= 3 . 7 n s,tW B= 1 . 8 n s
(a) 若要做到每个时钟周期出一条指令,则时钟频率f1是多少?
(b) 若改为如图1 2 - 2的时钟同时驱动每一栈,则时钟频率f2是多少?
(c) 比较一下以上两种的时间ti n s t,从直观比较上看哪一个更短一些?
5. 考虑如图1 2 - 4的五栈流水线结构,假设该结构的时钟频率为3 0 0 M H z,一个有8 0 0 0 0 0
条指令的程序在上面运行。
(a) 计算一下一条指令所需的执行时间;
(b) 计算一下全部程序执行时间;
(c) 同五栈非流水线结构相比速度提高了多少百分比?
6. 让我们把流水线设想成汽车通过隧道。
(a) 如果汽车以如图1 2 - 1数据流方式移动,试描述一下汽车通过隧道的过程;
(b) 如果用流水线的概念来看,汽车流像什么?
7. 一个五栈流水线以最大2 0 0 M H z的时钟频率操作。系统若要重新设计成七栈流水线以增
加系统的吞吐量。
(a) 求出若增加5 %的吞吐量七栈流水线的时钟频率为多少?
(b) 被分配到五栈与七栈流水线的时间周期差占多少百分比?
8. 研究一下报纸和杂志上的计算机广告,看一下你能找到的计算机参考缓存是多大。典
型的尺寸和应用是什么?你能找出L 1或L 2缓存与应用的对应关系吗?
9. 一台具有局部缓存的计算机在执行一个很大的程序时,缓存从系统具有很高的命中率
一下几乎下降到0。
(a) 这种情况什么时候发生?
(b) 假如你要在程序运行中追踪命中率,你希望什么事情发生?为什么?
10. 考虑一个如图1 2 - 1 8的双道超标量机器。当只有流水线1被激活时,它把指令从I F执行
到数据缓存单元需要8 8 n s。流水线2也同样。
(a) 计算由2 2 5 0 0 0条指令组成的程序通过一条流水线所需的时间tp i p e。
(b) 假如系统按超标量结构运行,两条流水线一起工作,则运行同一程序需要花多少时
间?
11. 考虑如下两个矩阵

设计一个S I M D网络计算[a]·[x]。
12. 考虑两个向量
第12章先进计算机概念357
下载

把它们作为并行计算机的输入。
( a )设计一个子系统产生如下矩阵
( b )再设计一个子系统产生如下矩阵
( c )最后组合两子系统,建立一个系统产生输出[Z] = [X] + [Y]。
13. 考虑两个矩阵

( a )设计一个S I M D模块计算矩阵和[c] = [a] + [b];
( b )在( a )的结果基础上设计一个新S I M D模块计算[c]的K倍;
( c )你能实现一个单一的S I M D模块产生K [c]吗?
14. 考虑如下行矩阵
[u] = [u1 u2 u3]
假如我们想要设计一套系统,它用[u]作为输入,同时产生输出2 [u],3 [u],1 0 [u]和[u/ 2 ]。
( a )这属于什么类型的并行结构?
( b )设计出该系统。
15. 考虑一个使用通用P E的M I M D机器的编程概念。程序通常都用顺序方式编写,任务按
指令预定的顺序执行。试设想一下这样的程序加载到M I M D计算机上将会发生什么问题? [不
要失望,这是一个很难想象的问题,且没有唯一解。]
16. 画出n= 3的超立方设计并标明节点,用地址( 0x x)表示内部立方,(1x x)表示外部立
方。讨论一下结构中两个点之间的最长通信路径。
17. 考虑一个n= 3的超立方并行计算机,其节点由( n2 n1 n0)标识。
(a) 列出能与处理节点( 1 0 1)直接通信的节点;
(b) 假设节点( 1 0 0)要与节点(111)通信,最有效的通信路径是什么?
18. 构造一个使用光互连、垂直堆叠电路板的2立方网络设计,在需要时使用镜子把激光
束投射到适当的位置。
358 数字系统设计基础教程
下载
19. 一个使用光互连的计算机既可以提供电信号还可以提供光束作为输入输出。那么,使
用有规律变动的激光束作为数据的优点是什么? [提示,复习第6章后的讨论]。
12.7 参考文献
本章介绍了许多先进计算理论的概念。下面列出的几本书在这方面的研究很深。为帮助
读者了解书的深浅,每本书标有一个字母,用于表示书的深度,(I)表示中间级别讨论;(A)
表示较深入的研讨。用大学年级来说,(I)表示未毕业大学生参考资料水平,(A)表示大学
毕业生参考资料水平。
[1] Don Anderson and Tom Shanley. PentiumT M Processor System Architecture,2nd ed.
R e a d i n g , M A : A d d i s o n - We s l e y, 1 9 9 5 .(Ⅰ)关于Intel Pentium微处理器及应用的非常好的研讨。
[2] James M. Feldman and Charles T. Retter. Computer Architecture. New York: McGraw-
Hill, 1994.(A).强调高层次设计的教科书。
[3] David A. Patterson and John L. Hennessy. Computer Organization & Design, 2nd ed. San
Francisco: Morg a n - K a u ffman Publishers, 1997.(Ⅰ). 一本由两位开发R I S C计算机的先驱编写
的著名的教科书。
[4] Tom Shanley and Don Anderson. ISA System Architecture, 3rd ed. Reading, MA:
A d d i s o n - We s l e y, 1995.(Ⅰ). 一本通俗易懂的关于P C机板级结构和概念的读物。
第12章先进计算机概念359
下载
下载
结束语
至此,我们已接近了旅行的终点。这几百页书里,我们遍览了从二进制到计算机;从电
子到微处理器芯片等整个数字系统设计世界。我希望您能从这艰苦的跋涉中获益,并且懂得
这样一个道理:一门中间学科的发展需要所有有志者的努力。如果说这本书使您迸发出想要
从事前面讲述的某项领域的研究的话,这正是本书的目的。如果您已经在从事数字系统设计,
请记住,数字系统在现代社会中将持久发展,本书中学到的知识将使你永远受益。 

你可能感兴趣的:(Hardware,存储,c,cache,网络,任务,工作)