• 【计算机组成】常用总结


    计算机的组成


    • 运算器:用来完成算术运算和逻辑运算,并将中间结果暂存在运算内。
    • 存储器:用来放数据和程序。
    • 控制器:用来控制、指挥程序和数据的输入、运行以及处理运算结果。
    • 输入设备:用来将人们熟悉的信息形式转换为机器能识别的信息形式。

      常见的键盘、鼠标等。

    • 输出设备:用来将机器运算的结果转换为人们熟悉的信息形式。

      如打印机输出、显示器输出等。

    计算机的结构

    冯·诺依曼结构:指令和数据存放在同一个存储器

    • 计算机由运算器存储器控制器输入设备输出设备五大部件组成。
    • 指令和数据以同等地位存放于存储器内,并可按地址寻访。
    • 指令和数据均用二进制数表示。
    • 指令由操作码和地址码组成
      • 操作码:用来表示操作性质
      • 地址码:用来表示操作数在存储器中的位置
    • 指令在存储器内按顺序存放。通常指令是顺序执行的,在特定条件下,可根据运算结果或根据设定的条件改变执行顺序。
    • 机器以运算器为中心,输入输出设备与存储器间的数据传送通过运算器完成。

    哈佛结构:指令和数据分别放在两个存储器

    哈佛结构的计算机比冯·诺依曼结构的计算机速度更快。

    计算机性能指标

    • 平均执行周期数(Clock cycle Per Instruction, CPI):表示每条指令的时钟周期数,即 执行一条指令所需的平均时钟周期数。
      [CPI=执行某段程序所需的 CPU 时钟周期数÷程序包含的指令条数]

    • 单字长定点指令平均执行速度(Million Instructions Per Second, MIPS):表示平均每秒执行多少百万条定点指令数。
      [MIPS=指令数÷(程序执行时间*10^6)]

      理解:Million 百万,当然是(10^6)

    • 主频/时钟周期:CPU 的工作节拍受主时钟控制,主时钟不断产生固定频率的时钟,主时钟的频率CPU的主频
      主频即 CPU 的时钟频率,计算机的操作在时钟信号的控制下分步执行,每个时钟信号周期完成一步操作,时钟频率的高低在很大程度上反映了 CPU 速度的快慢。
    • 外频:通常为系统总线的工作频率(系统时钟频率),CPU 与周边设备传输数据的频率,具体是指 CPU 到芯片组之间的总线速度。外频是 CPU 与主板之间同步运行的速度。

    多层次的存储器

    • 高级缓存(Cache):它是介于 CPU 与内存之间,常用有一级缓存(L1)、二级缓存(L2)、三级缓存(L3)(一般存在于 Intel 系列)。它的读写速度比内存还快,当 CPU 在内存中读取或写入数据时,数据会被保存在高级缓冲存储器中,当下次访问该数据时,CPU 直接读取高级缓冲存储器,而不是更慢的内存。
    • 内存:内存(Memory)也被称为内存储器主存储器,是 CPU 能直接寻址的存储空间,其作用是用于暂时存放 CPU 中的运算数据,以及与硬盘等外部存储器交换的数据。

      内存是计算机中重要的部件之一,它是外存与 CPU 进行沟通的桥梁。
      计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。

      只要计算机在运行中,操作系统就会把需要运算的数据从内存调到 CPU 中进行运算,当运算完成后CPU再将结果传送出来,内存的运行也决定了计算机的稳定运行。
      例如:计算机中的内存条,内存条是由内存芯片、电路板、金手指等部分组成的。

      • 随机存取存储器(Random Access Memory, RAM):我们不仅可以从中读取数据,而且还可以写入数据。但是机器电源关闭时,数据就会丢失。

        内存条(SIMM)就是把RAM集成块集中在一小块电路板上。

      • 只读存储器(Read Only Memory, ROM):它是把数据或程序永久保存在其中,不能更改,只能读取。即使机器断电,数据也不会丢失。
    • 外存:外储存器是指除计算机内存及 CPU 缓存以外的储存器,此类储存器一般断电后仍然能保存数据。

      例如:常见的外存储器有硬盘、软盘、光盘、U盘等。


    • 主存:就是内存,主存储器(Main memory),简称主存。是计算机硬件的一个重要部件,其作用是存放指令和数据,并能由中央处理器(CPU)直接随机存取。现代计算机是为了提高性能,又能兼顾合理的造价,往往采用多级存储体系。即由存储容量小,存取速度高的高速缓冲存储器,存储容量和存取速度适中的主存储器是必不可少的。

    • 辅存:就是外存,辅存狭义上是我们平时讲的硬盘。科学地说是外部存储器(需要通过I/O系统与之交换数据,又称为辅助存储器)。


    • 数据存储的方式:
      • 小端方式:先存储低位字节,后存储高位字节
      • 大端方式:先存储高位字节,后存储低位字节
    • 边界对齐方式

      字节不论在哪个 CPU 上都是 8bit。
      是根据处理器的特性决定的。

      例如:ARM 是 32bit 处理器,所以它的字是 32bit的,半字就是 16bit。
      假设存储字长为 32 位,可以按照字节、半字、字寻址。在对准边界的 32 位字长的计算机中,半字地址是 2 的整数倍,字地址是 4 的整数倍,当所存数据不能满足此要求时,可以填充空白字节。
      这样保证对齐以后,可以使得每次取数据都是一次访存取出。

    Cache 缓存

    Cache:是一种高速缓冲存储器,是为了解决 CPU 和主存之间速度不匹配而采用的一项重要技术。
    是位于 CPU 与内存间的一种容量较小但速度很高的存储器。
    CPU 的速度远高于内存,当 CPU 直接从内存中存取数据时要等待一定时间周期,而 Cache 则可以保存 CPU 刚用过或循环使用的一部分数据
    如果 CPU 需要再次使用该部分数据时可从 Cache 中直接调用,这样就避免了重复存取数据,减少了 CPU 的等待时间,因而提高了系统的效率。

    cache 存储速度比主存快,通过向 CPU 高速提供指令和数据,加快了程序的执行速度。

    计算 cache 的命中率

    • 在一个程序执行期间,设(N_c)表示cache完成存取的总次数,(N_m)表示主存(memory)完成存取的总次数,h 定义为命中率(hit),则有
      [h={{N_c} over {N_c+N_m}}]

    • (t_c)表示命中时的cache访问时间,(t_m)表示未命中时的主存(memory)访问时间,1-h 表示未命中率,则cache/主存系统的平均访问(access)时间(t_a)为:
      [t_a=ht_c+(1-h)t_m]

    • (r=t_m/t_c)表示主存慢于 cache 的倍率(rate),e 表示访问效率(efficiency),则有
      [e={{t_c} over {t_a}}={{t_c} over {ht_c+(1-h)t_m}}={{1} over {h+(1-h)r}}={{1} over {r+(1-r)h}}]

    主存→cache的地址映射

    主存→cache):为了把主存块放到cache中,必须应用某种方法把主存地址定位到cache中,称作地址映射
    当中央处理器存取主存某一单元时,计算机硬件就自动地将包括该单元在内的那一组单元内容调入高速缓存

    Cache 通常由相联存储器实现。相联存储器的每一个存储块都具有额外的存储信息,称为标签(Tag)。当访问相联存储器时,将地址和每一个标签同时进行比较,从而对标签相同的存储块进行访问。

    基础知识:

    • cache 与主存之间的数据交换以“块”为单位进行的。
      一个“块”中包含若干个“字”,字长由实际情况确定。

      注意:习惯上,cache中的“块”称为“行”,主存中称为“块”
      cache的“行”与主存的“块”存储容量相同

    • 相联存储器(Content Addressed Memory, CAM)是一种不根据地址而是根据存储内容来进行存取的存储器,可以实现快速地查找块表。
      既可以按照地址寻址也可以按照内容寻址(通常是某些字段),为了与传统寄存器作区别,称为按内容寻址的存储器。
      下面所提到的标记(tag)存于该存储器中。
    • cache 中的标记 tag 与 cache 的“行”一一对应的。
      如果某一块主存数据块拷贝到 cache 中的某一行,该 cache 行就会形成相应的标记 tag。

      思考:如果没有按照存储内容进行存取的相联存储器中的 tag,那么你将无法得知缓存 Cache 中存储的到底是些什么东西。
      例子:比如说,我看个视频,视频中的某一段从我的主存中放到了我的缓存 Cache 中,tag 就会标记“XXX视频”等信息(毕竟是按内容寻址,所以存这个内容就够了),方便查找。
      如果不用 tag 标记的话,缓存里面有图片、有文档、有视频这哪知道我正在看的视频那部分的缓存放在哪了。

    地址映射的方式有直接映射方式、全相联映射方式、组相联映射方式:

    • 直接映射方式:直接映射是一种多对一的映射关系,但一个主存块只能拷贝到 cache 的一个特定行位置上去。
      cache的行号i和主存的块号j有如下函数关系:
      [i=j mod m]

      式中:i为cache的行号,j为主存的块号,m为cache中的总行数

      解释:
      cache共4行

      组内编号为b0的主存块如果需要拷贝至cache,只能放置到L0;
      b1只能拷贝到L1;b2只能拷贝到L2;b3只能拷贝到L3。
      如上图所示,相同颜色的说明可以进行拷贝

    • 全相联映射方式:在全相联映射中,将主存中一个块的地址与块的内容一起存于 cache 的行中,其中块地址存于 cache 行的标记部分中。

      因为它块地址和块内容一起保存,所以叫全相联,它可使主存的一个块直接拷贝到cache中的任意一行上,非常灵活。

      全相联 cache 中,全部标记用相联存储器来实现,全部数据用一个 RAM 来实现。

    • 组相联映射方式:将 cache 分成 u 组,每组 v 行。主存块存放到哪个组是固定的,至于存到该组哪一行是灵活的。
      有如下函数关系:
      [m=u*v]
      [组号q=j mod u]

      式中:m为cache中的总行数,u为总组数,v为每组总行数;
      q为组号,j为主存的块号,u为总组数。

      解释:
      cache共 4 行,分为 2 组

      凡是组内编号为 b0 的主存块,可以拷贝至 cache 的 G0 组,至于是2行中的哪一行,是随机的无硬性规定的。
      依次类推,组内编号 b1 的主存块可以拷贝至 G1 组。

    • 总结:
      • 直接映射方式中每一个内存块只能放置到计算好的特定位置上。
      • 全相联映射方式是整块空间都可以放元素,元素放置的位置不固定
      • 组相联映射方式则是要求每个内存块只能放到固定的组中,但是在组中位置不固定

    内存

    RAM

    随机存取存储器(Random Access Memory, RAM):我们不仅可以从中读取数据,而且还可以写入数据。但是机器电源关闭时,它中数据就会丢失。

    RAM 是一种可读/写存储器,其特点是存储器的任何一个存储单元的内容都可以随机存取,而且存取时间与存取单元的物理位置无关。

    计算机系统中的主存都采用这种随机存储器。

    ROM

    只读存储器(Read Only Memory, ROM):它是把数据或程序永久保存在其中,不能更改,只能读取。即使机器断电,数据也不会丢失。

    只读存储器是能读出其存储的内容,而不能对其重新写入的存储器。
    这种存储器一旦存入了原始信息后,在程序执行过程中,只能将内部信息读出,而不能随意重新写入新的信息去改变原始信息。

    用途:通常它存放固定不变的程序、常数和汉字字库,甚至用于操作系统的固化。

    它与随机存储器可共同作为主存的一部分,统一构成主存的地址域。

    指令系统

    • 复杂指令系统计算机(Complex Instruction Set Computer, CISC):采用一整套计算机指令进行操作的计算机。指令系统多达几百条。
    • 精简指令系统计算机(Reduced Instruction Set Computer, RISC):它精简了指令集,只保留了那些常用的指令,降低了控制器设计的难度。

    指令的格式

    一条指令分为操作码字段地址码字段
    根据一条指令中有几个操作数地址,可将该指令称为几操作数指令几地址指令

    • 零地址指令:指令中只有操作码,没有地址码。
    • 一地址指令:只有一个地址码,它指定一个操作数,另一个操作数地址是隐含的。
    • 二地址指令:常被称为双操作数指令,它有两个地址码字段(A_1)(A_2),分别指明参与操作的两个数在内存或运算器中通用寄存器地址,其中地址(A_1)兼做存放操作结果的地址。
    • 三地址指令:有三个操作数地址(A_1),(A_2)(A_3)(A_1)为被操作数地址,(A_2)为操作数地址,(A_3)为存放操作结果的地址。

    寻址方式

    指令寻址

    • 顺序寻址:由于指令地址在内存中按顺序安排,当执行一段程序时,通常是一条指令接一条指令地顺序进行。也就是说,从存储器取出第一条指令,然后执行这条指令;接着从存储器取出第二条指令,再执行第二条指令;接着再取出第三条指令。
      这种程序顺序执行的过程,称为指令的顺序寻址方式。为此,必须使用程序计数器(又称指令计数器)PC来计数指令的顺序号,该顺序号就是指令在内存中的地址。

      程序计数器(Program Counter, PC):用来存放当前欲执行指令的地址,它与主存的MAR之间有一条直接通路,且具有自加1的功能,即可形成下一条指令的地址。

    • 跳跃寻址:当程序转移执行的顺序时,指令的寻址就采取跳跃寻址方式。所谓跳跃,是指下条指令的地址码不是由程序计数器给出,而是由本条指令给出。

      注意:程序跳跃后,按新的指令地址开始顺序执行
      因此,程序计数器的内容也必须相应改变,以便及时跟踪新的指令地址。

      用途:可以实现程序转移或构成循环程序,从而能缩短程序长度,或将某些程序作为公共程序引用。指令系统中的各种条件转移或无条件转移指令,就是为了实现指令的跳跃寻址而设置的。

    操作数寻址

    • 隐含寻址:在指令中不是明显的给出操作数的地址,而是在指令中隐含着操作数的地址

      例如:单地址的指令格式,就不是明显地在地址字段中指出第 2 操作数的地址,而是规定累加寄存器 AC 作为第 2 操作数地址
      指令格式明显指出的仅是第 1 操作数的地址 D。
      因此,累加寄存器 AC 对单地址指令格式来说是隐含地址。如:DAA(涉及到汇编语言)(加法指令中隐含着操作数的地址

    • 立即寻址:指令的地址字段指出的不是操作数的地址,而是操作数本身
    • 直接寻址:在指令格式的地址字段中直接指出操作数在内存的地址
    • 间接寻址:指令地址字段中的形式地址不是操作数的真正地址,而是操作数地址的指示器

      指示器:其实就是指针,是一个始终指示某单元位置的地址寄存器。

    • 寄存器寻址:操作数不在内存中,而是放在 CPU 的通用寄存器中。指令中给出的操作数地址不是内存的地址单元号,而是通用寄存器的编号。
    • 寄存器间接寻址:指令中的寄存器内存不是操作数,而是操作数的地址
    • 偏移寻址:它要求指令中有两个地址字段,其中一个为形式地址,另一个是指的是某个寄存器寄存器的内容加上形式地址以后就能得到有效地址
    • 段寻址:段寄存器中的地址左移 4 位后,加上某个寄存器中存储的偏移量,即可得到所需的内存地址。
    • 堆栈寻址:数据存储与栈顶地址有关,需要一个栈顶指示器。


    • 相对寻址方式:相对寻址是把程序计数器PC的内容加上指令格式中的形式地址D而形成操作数的有效地址。程序计数器的内容就是当前指令的地址。“相对”寻址,就是相对于当前的指令地址而言。采用相对寻址方式的好处是程序员无须用指令的绝对地址编程,因而所编程序可以放在内存的任何地方。

      指令格式:MOV AX,[BX+1200H] 操作数物理地址 PA=(DS/SS)*16H+EA EA=(BX/BP/SI/DI)+(6/8)位偏移量 Disp 对于 BX,SI,DI 寄存器来说段寄存器默认为 DS,对于 BP 来说,段寄存器默认为 SS

    • 基址寻址方式:在基址寻址方式中将 CPU 中的基址寄存器的内容,加上变址寄存器的内容而形成操作数的有效地址。基址寻址的优点是可以扩大寻址能力,因为与形式地址相比,基址寄存器的位数可以设置得很长,从而可以在较大的存储空间中寻址。
    • 变址寻址方式:变址寻址方式与基址寻址方式计算有效地址的方法很相似,它把 CPU 中某个变址寄存器的内容与偏移量 D 相加来形成操作数有效地址。
      但使用变址寻址方式的目的不在于扩大寻址空间,而在于实现程序块的规律变化。为此,必须使变址寄存器的内容实现有规律的变化(如自增 1、自减 1、乘比例系数)而不改变指令本身,从而使有效地址按变址寄存器的内容实现有规律的变化。
    • 块寻址方式:
      块寻址方式经常用在输入输出指令中,以实现外存储器或外围设备同内存之间的数据块传送。块寻址方式在内存中还可用于数据块移动。

    中央处理器

    CPU的基本结构

    中央处理器(central processing unit, CPU)作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。


    CPU由控制器、运算器、cache 组成。

    • 控制器:由程序计数器、指令寄存器、指令译码器、时序产生器和操作控制器组成。
      它是发布命令的“决策机构”,即 完成协调和指挥整个计算机系统的操作。
      主要功能:
      • 从指令 cache 中取出一条指令,并指出下一条指令在 cache 中的位置。
      • 对指令进行译码或测试,并产生对应的操作控制信号,以便启动规定的动作。
    • 运算器:由算术逻辑单元、通用寄存器、数据缓冲寄存器和状态条件寄存器组成。
      它是数据加工处理部件。
      主要功能有:
      • 执行所有的算术运算
      • 执行所有的逻辑运算,并进行逻辑测试
    • 高级缓存(Cache):它是介于 CPU 与内存之间,常用有一级缓存(L1)、二级缓存(L2)、三级缓存(L3)(一般存在于 Intel 系列)。它的读写速度比内存还快,当 CPU 在内存中读取或写入数据时,数据会被保存在高级缓冲存储器中,当下次访问该数据时,CPU 直接读取高级缓冲存储器,而不是更慢的内存。

    控制器

    组合逻辑控制器

    组合逻辑控制器:采用组合逻辑技术实现,其微操作信号发生器是由门电路组成的复杂树形网络构成的。

    微程序控制器

    科普:

    • 微命令:控制部件通过控制线向执行部件发出的各种控制命令。它构成控制信号的最小单元。
    • 微操作:执行部件接受微命令后所进行的操作。它是由微命令实现的最基本操作。
    • 微指令:在机器的一个 CPU 周期中,一组实现一定操作功能的微命令的组合。

      微地址:微指令的地址。

    • 微程序:实现一条机器指令功能的许多条微指令组成的序列。

    总结:
    程序由一组指令组成;
    指令由一个微程序实现;
    微程序由一组微指令实现;
    微指令由一组微操作实现。

    一层一层组装:微命令→微指令→微程序=指令→程序

    微程序控制器:是一种控制器,同组合逻辑控制器相比较,具有规整性、灵活性、可维护性等一系列优点,因而在计算机设计中逐渐取代了早期采用的组合逻辑控制器,并已被广泛地应用。
    在计算机系统中,微程序设计技术是利用软件方法来设计硬件的一门技术。

    微程序控制器:采用微程序控制方式的控制器。

    微程序控制方式:是指微命令不是由组合逻辑电路产生的,而是由微指令译码产生。
    一条机器指令往往分成几步执行,将每一步操作所需的若干位命令以代码形式编写在一条微指令中,若干条微指令组成一段微程序,对应一条机器指令。
    在设计 CPU 时,根据指令系统的需要,事先编制好各段微程序,且将它们存入一个专用存储器(称为控制存储器)中。

    微程序控制器主要由控制存储器、微指令存储器和地址转移逻辑三大部分组成。

    • 控制存储器:
      控制存储器用来存放实现全部指令系统的微程序,它是一种只读存储器。若指令系统中有多少条机器指令,就有多少微程序。一旦微程序固化,机器运行时则只读不写。
      其工作过程是:
      • 每读出一条微指令,则执行这条微指令;
        接着又读出下一条微指令,又执行这一条微指令……。
        读出一条微指令并执行微指令的时间总和称为一个微指令周期。

        注意:通常,在串行方式的微程序控制器中,微指令周期就是只读存储器的工作周期。
        控制存储器的字长就是微指令字的长度,其存储容量视机器指令系统而定,即 取决于微程序的数量。
        对控制存储器的要求是速度快,读出周期要短。

    • 微指令寄存器:
      微指令寄存器用来存放由控制存储器读出的一条微指令信息。其中微地址寄存器决定将要访问的下一条微指令的地址,而微命令寄存器则保存一条微指令的操作控制字段和判别测试字段的信息。
    • 地址转移逻辑:
      在一般情况下,微指令由控制存储器读出后直接给出下一条微指令的地址,通常我们简称微地址,这个微地址信息就存放在微地址寄存器中。
      如果微程序不出现分支,那么下一条微指令的地址就直接由微地址寄存器给出。
      当微程序出现分支时,意味着微程序出现条件转移。在这种情况下,通过判别测试字段 P 和执行部件的“状态条件”反馈信息,去修改微地址寄存器的内容,并按改好的内容去读下一条微指令。地址转移逻辑就承担自动完成修改微地址的任务。

    两者差别

    • 组合逻辑控制器采用组合逻辑技术实现,其微操作信号发生器是由门电路组成的复杂树形网络构成的。
    • 微程序控制器采用存储逻辑实现,将微操作控制信号以编码字(即 微指令)的形式存放在控制存储器中。执行指令时,通过依次读取一条条微指令,产生一组组操作控制信号,控制有关功能部件完成一组组微操作。

      微程序控制器的设计思想和组合逻辑设计思想截然不同。
      它具有设计规整,调试、维修以及更改、扩充指令方便的优点,易于实现自动化设计。但是,由于它增加了一级控制存储器,所以指令的执行速度比组合逻辑控制器慢。

    其实微程序控制器其实就是将组合逻辑控制器的操作控制信号分解成更小的步骤。

    类比:如果我们需要将桌子上的咖喱放入冰箱。(别问为什么是咖喱,因为我喜欢。。)
    组合逻辑控制器:操作控制信号——将桌子上的咖喱放入冰箱。
    微程序控制器:微指令——拿起来、走过去、放进去。
    这两者都能使我们将桌子上的咖喱放入冰箱,但是组合逻辑控制器一步完成,更加连贯快捷;
    而微程序控制器虽然慢一些,但是易于扩展,比如我们要把火锅放进冰箱,微程序控制器就更容易扩展做到,而组合逻辑控制器要从头设计。

    CPU 指令流水线

    指令执行过程分为多个阶段,每个阶段需要的资源不一样,因此可以采用流水线技术,同时执行多条指令的不同阶段。

    • CPU指令流水线:将一个重复的时序过程分解成多个子过程 Subprocess。每个子过程都可有效地在其专用功能段上与其他子过程同时执行。

      例如:分成四个功能段

    影响流水线性能的因素:(冲突)

    • 资源相关:指多条指令进入流水线后在同一机器时钟周期内争用同一个功能部件所发生的冲突,那么这两条指令就是资源相关的。
    • 数据相关:在一个程序中,如果必须要等前一条指令执行完毕后,才能执行后一条指令,那么这两条指令就是数据相关的。
    • 控制相关:控制相关冲突是由转移指令引起的。当执行转移指令时,依据条件的产生结果,可能为顺序取下条指令,也可能转移到新的目标地址取指令,从而使流水线发生断流。

    采用以下方法来减少转移指令对流水线性能的影响:

    • 延迟转移法:由编译程序重新排指令序列来实现。
      基本思想是:
      • “先执行再转移”:
        发生转移指令(转移取)时并不排空指令流水线,而是让紧跟在转移指令lb之后已进入流水线的少数几条指令继续完成
        如果这些指令是与Ib结果无关的有用指令,那么延迟损失时间片正好得到了有效的利用。
    • 转移预测法:用硬件方法来实现,依据指令过去的行为来预测将来的行为。
      基本思想是:
      • 通过使用转移取(指令)顺序取(指令)两路指令预取队列器以及目标指令 cache,可将转移预测提前到取指阶段进行,以获得良好的效果。

    控制方式

    控制器的控制方法:控制不同操作序列时序信号的方法。

    常见的有同步控制、异步控制、联合控制三种方式,其实质反映了时序信号的定时方式

    • 同步控制方式:在任何情况下,已定的指令在执行时所需的机器周期数和时钟周期数都是固定不变的。
      根据不同的情况,同步控制方式可选取如下方案:
      • 采用完全统一的机器周期执行各种不同的指令:这意味着所有指令周期具有相同的节拍电位数和相同的节拍脉冲数。

        显然,对简单指令和简单操作来说,将造成时间浪费。

      • 采用不定长机器周期:将大多数操作在较短机器的周期完成,对一些时间紧张的操作,则采取延长机器周期的办法。
      • 中央控制与局部控制结合:
        • 中央控制:将大部分指令安排在固定的机器周期完成。
        • 局部控制:对少数复杂指令(乘、除、浮点运算)采用那个另外的时序进行定时。
    • 异步控制方式:每条指令、每个操作控制信号需要多少时间就占用多少时间
      用这种方式形成的操作序列没有固定的 CPU 周期数(节拍电位)或者严格的时钟周期(节拍脉冲)与之同步。

      注意:这意味着每条指令的指令周期可由多少不等的机器周期数组成;
      也可以是当控制器发出某一操作控制信号后,等待执行播讲完成操作后发回“回答”信号,再开始新的操作。

    • 联合控制方式:同步控制方式和异步控制方式结合。
      一种情况是,大部分操作序列安排在固定的机器周期中;
      对某些时间难以确定的操作,则以执行部件的“回答”信号作为本次操作的结束。

      注意:同步控制方式要求了每个指令只能是固定的机器周期数,即 指令的时间是机器周期的倍数,经过对应的时间周期就意味着指令执行完了。
      异步则没有这个要求,每个指令需要多少时间就占用多少时间,发出对应信号才意味着执行完毕。

    总线的作用

    总线(bus):是构成计算机系统的互联机构,是多个系统功能部件之间进行数据传送的公共通路。

    总线分为如下三类:

    • 内部总线:CPU-寄存器)CPU 内部连接各寄存器及运算部件之间的总线。
    • 系统总线:CPU-功能部件)CPU同计算机系统的其他高速功能部件相互连接的总线。
    • I/O总线:CPU-I/O设备)CPU 同 I/O 设备之间互相连接的总线。

    输入输出系统

    磁盘的结构

    • 硬磁盘存储器:由磁盘驱动器、磁盘控制器和盘片三大部分组成。
    • 磁盘驱动器:包括主轴、定位驱动、数据控制三个部分。
      • 主轴:受传动机构控制,可使磁盘组作高速运动。
      • 定位驱动系统:可以驱动磁头沿盘面径向指定位置运动,以寻找目标磁道位置。
      • 数据控制:完成数据转换和读/写控制操作。
    • 磁盘控制器:是主机和磁盘驱动器的接口。它接受主机发来的命令,将它转换成磁盘驱动器的控制命令,实现主机和驱动器之间的数据格式转换和数据传送,并控制驱动器的读/写。
    • 盘片:盘片是存储信息的载体。
    • 磁头:由软磁材料做铁芯绕有读写线圈的电磁铁。写入时利用磁头来使盘片具有不同的磁化状态,读取时又利用磁头来判别这些不同的磁化状态。
    • 磁道:通常将磁盘片表面称为记录面。记录面上一系列同心圆称为磁道。
    • 扇区:将磁道划分为若干个小的区段,这个区段就被称为扇区。

    磁盘操作时间:包括寻道时间、延迟时间和传输时间。

    • 寻道时间:指将磁头移动到指定磁道所需要花费的时间。
    • 延迟时间:指磁头定位到某一磁道的扇区所需要的时间。
    • 传输时间:指从磁盘读出或者向磁盘写入数据所经历的时间。

    中断响应过程

    中断响应过程包括保护现场、获取入口地址、中断返回恢复现场这样三个步骤。

    1. 当中断处理的 CPU 控制权转移涉及特权级改变时,必须把当前的 SS 和 ESP 两个寄存器的内容压入系统堆栈予以保存;
    2. 将标志寄存器 EFLAGS 的内容也压入堆栈;
    3. 消除标志触发器 TF 和 IF;
    4. 当前的代码段寄存器 CS 和指令寄指针EIP也压入此堆栈;
    5. 如果中断发送伴随有错误码,则错误码也压入此堆栈;
    6. 完成上述终端现场保护后,从中断向量号获取的中断服务子程序入口地址分别为装入 CS 和 EIP,开始执行中断服务子程序;
    7. 中断服务子程序最后的 IRET 指令使中断返回。保存在堆栈中的中断现场信息被恢复,并由终端点继续执行原程序;

    DMA 传送方式

    DMA(Direct Memory Access,直接内存存取):是指外部设备不通过CPU,而直接与系统内存交换数据的接口技术。
    DMA 是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依赖于 CPU 的大量中断负载;
    否则,CPU 需要从来源把每一片段的资料复制到暂存器,然后把它们再次写回到新的地方。在这个时间中,CPU 对于其他的工作来说就无法使用。

    • 在 DMA 方式中,一批数据传送前的准备工作,以及传送结束后的处理工作,均为管理程序承担,而DMA控制器仅负责数据传送的工作。

    DMA 方式基本流程:

    1. 从外围设备发出 DMA 请求
    2. CPU 响应请求,把 CPU 工作改成 DMA 操作方式DMA控制器从 CPU 接管总线的控制;
    3. DMA控制器对内存寻址,并执行数据传送,向 CPU 报告 DMA 操作结束。

    DMA 和CPU 分时使用内存采用如下方式:

    • 停止 CPU 访问内存
    • 周期挪用
    • DMA 与 CPU 交替访问内存
  • 相关阅读:
    解决拼团首页swiper组件手动轮播卡顿问题
    mac上charels抓包工具使用技巧
    加载图片优化(先用一张小图片做高斯模糊, 再加载大图)
    requirejs2读书笔记
    escape encodeURI encodeURIComponent区别
    js与cookie的domain和path之间的关系
    Oracle使用——数据泵导入导出数据库——impdp/expdp使用
    Oracle基础知识点——Oracle服务端和客户端
    Oracle使用——oracle11g安装——Oracle要求的结果: 5.0,5.1,5.2,6.0 6.1 之一 实际结果: 6.2
    Spring 学习——Spring AOP——AOP配置篇Advice(有参数传递)
  • 原文地址:https://www.cnblogs.com/blknemo/p/12332395.html
Copyright © 2020-2023  润新知