计算机基础知识复习

计算机基础知识复习

主要涉及的知识有计算机基本组成流水线与并行处理数据运算存储体系和寻址方式RISC和CISC指令体系多处理机总线接口

计算机基本组成

在一台计算机中,主要有6中部件,分别是控制器运算器内存储器外存储器输入和输出设备。其关系如图1-1。

1-1.png

其中控制器和运算器共同构成了中央处理器(CPU)。CPU主要通过总线和其他设备进行联系。另外再嵌入式系统涉及中,外部设备也常常直接连接到CPU的外部I/O脚的中断脚上面。

(1)运算器

运算器的主要功能实在控制器的控制下完成各种算术运算、逻辑运算和其他操作。运算器重要包括算术逻辑单元(ALU)加法器/累加器数据缓冲寄存器程序状态寄存器四个子部件构成。

算术逻辑单元(ALU)主要是完成对二进制数据的定点算术运算(加减乘除)、逻辑运算(与或非异或)以及位移操作。

累加器寄存器(AC)通常称为“加法器/累加器",是一个通用寄存器。其功能是相当运算器中的算术逻辑单元(ALU)执行算术或者逻辑运算时为 ALU 提供一个工作区,用于传输和暂存用户的数据。

数据缓冲寄存器 用来暂时存放由内存储器读出的一条指令或者一个数据字。反之,当向内存存入一条指令或者一个数据字时,也暂时将他们存放在数据缓冲寄存器中,缓冲寄存器的作用:

①作为CPU和内存、外部设备之间的信息传送的中转站;

②补偿CPU和内存、外围设备之间在操作速度上的差别;

③在单累加器结果的运算器中,数据缓冲寄存器还是可以兼作操作数寄存器。

程序状态寄存器 用来存放两类信息:

①体现当前指令执行结果的各种状态信息,如CF、OF、SF、ZF、PF位等;

②控制信息,允许中断(IF)和跟踪标志(TF)位等。

(2)控制器

控制器是有程序计数器(PC)指令寄存器指令译码器时序产生器操作控制器组成,完成整个计算机系统的操作。

程序计数器(PC)是专用寄存器,具有存储和计数两种功能,又称”指令计数器“,在程序开始执行的时前将程序的起始地址送入 PC ,在程序加载到内存时依此地址为基础,因此 PC 的的促使内容为程序第一条指令的地址。执行指令时 CPU 将自动修改 PC 的内容,以便使其保持的总是要执行的是下一条指令的地址。由于大多数指令都是按顺序执行,因此修改的过程通常只是简单的将 PC 加上1.当遇到转移指令时后续指令的地址与前指令的地址加上一个向前或者后的转移的位偏移量得到,或则根据转移指令给出的直接转移的地址得到。

指令寄存器 存储当前正在被 CPU 执行的指令。

指令译码器 将指令的操作码解码,告诉 CPU 该做什么。可以说指令寄存器的输出时指令译码器的输入。

时许产生器 用以产生各种时序信号,以保证计算机能准确、迅速、有条不紊地工作。

(3)内存储器

又称内存或者主存:存储现场操作的信息与中间结果,包括机器指令和数据。

(4)外存储器

又称外存或者辅助存储器(Secondary Storage 或 Permanent Storage)。存储需要长期保存的各种信息。

(5)输入设备(Input Devices)

输入设备用以接收外界向计算机输入的信息。

(6)输出设备(Input Devices)

输出设备用以将计算机中的信息向外界输送。

流水线与并行处理

流水线技术是通过并行硬件来提高系统性能的常用方法,它其实是一种任务分解的技术,把一件任务分解为若干顺序执行的子任务,不同的子任务由不同的执行机构来负责执行,而这些执行几个可以同时并行工作。

其中流水线与并行处理中,流水线的执行时间吞吐率加速比的计算比较重要。

流水线的执行时间计算:

假如有某种类型的任务,共可分成 n 个子任务,每个子任务需要时间 t ,则完成该任务需要的时间为 n * t。若以传统的方式,则完成 k 个任务所需的时间时 knt;而使用流水线技术执行,则花费的时间是 (n+k-1) * t 。也就是说,除了第一个任务需要完整的时间以外,其他的都通过并行执行,节省下了大量的时间,只需要一个子任务的单位时间就够了。

值得注意的是,如果每个子任务所需的时间不同,则其速度取决于执行顺序中最慢的那个(也就是流水周期值等于最慢的那个指令周期),要根据实际情况进行调整。

计算采用流水线指令执行时间的计算公式: 

流水线指令执行的 总时间 = 第一条指令顺序执行时间 + ( 指令条数 - 1 ) * 流水线周期

例如:若指令流水线把一条指令分为取指、分析和执行三部分,且三部分的时间为别是取指 2ns ,分析 2ns,执行 1ns。那么。

解:   最长的指令执行时间是 2ns 。

∴ ( 2 + 2 + 1) + ( 100 - 1) * 2 = 203ns 。

 执行完 100 条指令全部执行完索要的时间为 203ns 。

流水线的吞吐率计算(Though Put Rate 即 TP):

流水线的吞吐率为流水线单位时间内流水线流出的任务数量或者结果数量。

流水线吞吐率计算的公式:

1.png

其中 n 为任务数、2.png为完成n个任务所用的时间。

例如,在上述例子中,203ns的时间内完成了100条指令,则从指令的角度来看,该流水线的吞吐率为:

3.png

流水线的加速比计算:

不使用流水线所用的时间与使用流水线所用的时间之比称为流水线的加速比(Speed-Up Ratio)。

在上述例子中:

∵ 不使用流水线完成100条指令的时间为 n * t:

100 * (2ns + 2ns +1ns) = 500ns

    使用流水线执行完100条指令的时间为:203ns。

∴  加速比为500/203=2.46。

另外,要特别注意影响流水线的三个因素:转移指令共享资源访问冲突响应中断

转移指令

因为前面的转移指令还没有完成,流水线无法确定下一条指令的地址,因此也就无法向流水线中添加这条指令。从这里的分析可以看出,无条件跳转指令是不会影响流水线的。

共享资源访问的冲突

它也就是后一条指令需要使用的数据,与前一条指令发生冲突,或者相邻的指令使用了相同的寄存器,这也会使流水线失败。为了避免冲突,就需要把相互有关的指令进行阻塞,这样就会引起流水线效率的下滑。一般地,指令流水线级数越多,越容易导致数据相关,阻塞流水线。

当然,也可以在编译系统上进行设备,当发现相邻的语句存在资源共享冲突的时候,在两者之间插入其他语句,将两条指令进入流水线的时间拉开,以避免错误。

响应中断

当有中断请求时,流水线也就会停止。流水线中断有两种方式,一种是立即停止现有的流水线,称为精确断点法,这种方法能够立即响应中断,缩短了中断响应时间,但是增加了中央处理器的硬件复杂程度。

还有一种是在中断时,在流水线内的指令继续执行,停止流水线的入口,当所有流水线内的指令全部执行后,再执行中断处理程序,这种方式中断响应时间长。被称为不精确断点,优点是实现控制简单。

数据运算

在数据运算这一块,主要是学习移码、原码、反码和补码的计算。

传送门(之前的文章)

存储体系和寻址方式

在存储体系和寻址方式方面,主要是学习主存储器的种类、组成和地址编码高速缓存寻址方式

主存储器的种类

①RAM:随机存储器,可读写,断电后数据无法保存,只能暂存数据。

②SRAM:静态随机存储器,在不断电时信息能够一直保持。

③DRAM:动态随机存储器,需要定时刷新以维持信息不丢失。

④ROM:只读存储器,出厂前用掩膜技术写入,常用于存放BIOS和微程序控制。

⑤PROM:可编程ROM,只能够一次写入,需用特殊的电子设备进行写入。

⑥EPROM:可擦除的PROM,用紫外线照射15~20分钟可擦去所有信息,可写入多次。

⑦E^2PROM:电可擦除EPROM,可以写入,但是速度慢。

⑧闪速存储器:现在的U盘使用的种类,可以快速写入。

记忆时,可以抓住几个关键的字母。

A,即 Access ,说明读写都行; 

O,即 Only ,说明只读;

P,即 Programmable,说明可以通过特殊的电子设备写入;

E,即 Erasable,说明可以擦写;

E^2,说明是两个E,第二个E是指的电子,即电子可擦写。

另外存储器根据类别来分的话,主要分为所处位置存储材料工作方式访问方式寻址方式这5种类别。参见图1-2:

1-2.png

主存储器的组成

主存储器主要是由存储体,控制线路,地址寄存器,数据寄存器和地址译码器这五部分组成。

存储器总是由一片或者多片存储器配以控制电路构成。其容量是 W * B , W 是存储单元(word 即字)的数量,B表示每个 word 由多少 bit 位组成。如果某一芯片的规格为 w * b ,则组成 W * B 的存储器,则计算芯片片数的公式应该为:

5.png

例如:若采用 4K * 16bit 的存储芯片构成 2M * 16 bit 的存储器需要多片?

解:根据题意得:

6-1.png

6-3.png

6-2.png

综上所示,一共需要使用 256 片的 4K * 16bit 的存储芯片才能满足 2M * 16bit 的存储容量。

主存储器的地址编码

主存储器(内存)采用的是随机存取的方式,需对每个数据块进行编码,而在主存储器中,数据块是以 word 为单位来标识的,即每个字一个地址,通常采用的是十六进制表示。

计算器存储空间的公式为:

存储空间 = 末地址 - 首地址 + 1

例如:按字节编制,地址从 A4000H ~ CBFFFH,则表示有:

CBFFFH - A4000H + 1 = 28000H = 163840Byte =  160KB

需要注意的是,编址的基础可以是字节,也可以是字(字是由一个或者多个字组成的),要计算其地址位数,首先应该计算要编址的字或者字节数,然后求2的对数即可得到。

高速缓存

Cache的功能是提高 CPU 数据输入/出的速率,突破所谓的“冯·诺依曼瓶颈”,即 CPU 与存储系统间数据传送带宽限制。告诉存储器能以极高的速率进行数据的访问,但因其价格昂贵,如果计算机的内存完全由这种高速存储器组成,则会大大增加计算机的成本。所以通常只在 CPU 和内存之间设置小容量的高速存储器 Cache。Cache 容量小但是速度快,内存速度较低但容量大,通过优化调度算法,系统的性能会大大改善,其存储系统容量与内存相当而且访问速度近似于 Cache。

在 Cache 这方面我们主要学习:Cache原理、命中率和失效率Cache 存储器的映射机制Cache 淘汰算法Cache存储器的写操作

Cache原理、命中率和失效率

使用 Cache 改善系统性能的主要依据是程序的局部性原理。通俗的说,就是一段时间内,执行的语句常集中于某个局部。而 Cache 正是通过将访问集中的内容放在速度更快的 Cache 上来提高性能的。引入 Cache 后,CPU 在需要数据时,先找 Cache ,没找到的话再去内存中找。

如果 Cache 的访问命中率为 h (通常是 1 -h 就是 Cache 的失效率),而 Cache 的访问周期时间时 t1,主存储器的访问周期时是 t2,则整个系统的平均访存时间就是:

t3 = h * t1 +(1-h)* 2

从公式可以看出,系统的平均访存时间和命中率有很密切的关系。灵活地利用这个公式就可以计算出所有情况下的平均访存时间。

例如:假设某流水线计算主存的读/写时间为 100ns ,有一个指令和数据合一的 Cache,已知该 Cache的读/写的时间为 10ns,取指令的命中率为 98%,去数据的命中率为 95%,在执行某类程序时,约有 1/5 指令需要存/取 一个操作数。假设指令流水线在任何时候都不阻塞,则设置 Cache 后,每条指令的平均访存时间约多少?

(2% * 100ns + 98% * 10ns)+ 1/5 + (5% * 100ns + 95% * 10ns)= 14.7ns


Cache 存储器的映射机制

分配给 Cache 的地址存放在一个相联存储器(CAM)中。CPU发生访存请求时,会先让 CAM 判所要访问的字的地址是否在 Cache 中,如果命中则就直接使用。这个判断过程就是 Cache 地址映射,这个速度应该尽可能的快。常见的映射方法有直接映射全相联映射组相联映射

直接映射:是一种多对一的映射关系,但一个主存块只能够拷贝到 Cache 的一个特定的位置上去。Cache的行号 i 和主存的块号 j 有函数关系:

i = j % m (m 为 Cache总行数)

全相联映射:将主存中一个块的地址与块的内容一起存于 Cache 的行中,任一主存块能映射到 Cache 中任意行(主存块的容量等于 Cache 行容量)。速度更快,但控制复杂。

组相联映射:是前两种方式的折中方案。它将 Cache中的块再分组,然后通过直接映射方式决定组号,再通过全相联映射的方式决定 Cache 的块号。


回复列表



回复操作

正在加载验证码......

请先拖动验证码到相应位置

发布时间:2020-06-17 10:56:06

修改时间:2020-06-19 11:27:41

查看次数:47

评论次数:0