C--计算机体系结构简介

一、计算机体系结构简图

1、⼀个简单的计算机系统包含了中央处理器(CPU)以及存储器和其他外部设备。⽽在CPU内部则由计算单元、通⽤⽬的寄存器、程序序列器、数据地址⽣成器等部件构成。简图如下:

 

二、贮存器

1、贮存器(Storage)尽管在图中没有表⽰出来,但我们对它⼀定不会陌⽣,⽐如我们在PC上使⽤的硬盘(Hard Disk)就是⼀种贮存器。贮存器是⼀种存储器,不过它可⽤于持久保存数据⽽不丢失。因此我们通常把具有可持久保存的存储器统称为贮存器。现在PC上⽤得⽐较现代化的贮存器就是SSD(Solid-State Disk)了,俗称固态硬盘。当然,贮存器就其存储介质来说属于ROM(Read-Only Memory),即只读存储器。这类存储器的特点是数据能持久保留,⽐如我们PC上的⽂件,即便在关闭计算机之后也⼀直会保存在你的硬盘上,⽽且PC上的软件往往也是以可执⾏⽂件的形式保存在硬盘上的。但是它的读写速度⾮常缓慢,尤其是⽼式的SATA磁盘,写操作则更慢。因为通常对ROM的数据修改都要通过先读取某段数据所在的扇区,然后对该数据进⾏修改,再擦除所涉及的扇区,最后把修改好的数据所包含的扇区再写回去。⽽对于ROM来说,其扇区是有写⼊次数限制的,所以写⼊次数越多,损耗就越⼤。当我们发现⼀个硬盘访问很慢的时候,通常就是其扇区(或磁道)已经破损严重了,这是在不断纠错并交换良好的扇区所引发的延迟。在嵌⼊式系统中,我们⽤的ROM⼀般是EPROM、EEPROM、Flash ROM等。这些硬件的详细资料链接RAM、ROM、FLASH(NAND&NOR)、固态硬盘SSD、机械硬盘详解(精贴)

 

三、存储器

1、存储器(Memory)⼀般是指我们通常所说的内存或主存(MainMemory)。其存储介质属于RAM(Random Access Memory),即随机访问存储器。它的特点是访问速度快,可对单个字节进⾏读写,这与ROM需要擦除整个扇区再对整个扇区写⼊的⽅式有所不同,因此更⾼效、灵活。但是RAM的数据⽆法持久化,掉电之后就会消失。此外,RAM的成本也⽐ROM⾼昂得多,我们对⽐⼀下16GB的内存条与256GB SSD的价格就能知道。然⽽正因为RAM的访问速度快,并且离CPU更近,所以在许多系统中都是将程序代码与数据先读取到RAM中之后再让CPU去执⾏处理的。当然,在⼀些嵌⼊式系统中也有让CPU直接执⾏ROM中的代码并访问ROM中常量数据的情况,因为这类系统中总线频率以及CPU频率都相对较低,并且ROM也是与CPU以SoC(System-On-Chip,系统级芯⽚)的⽅式整合在⼀块芯⽚上的,所以访问成本要低很多。⽽有些环境对ROM的读取速度甚⾄⽐读取RAM还更快些。这些硬件的详细资料链接RAM、ROM、FLASH(NAND&NOR)、固态硬盘SSD、机械硬盘详解(精贴)

 

四、寄存器

1、寄存器是在CPU核⼼中的、⽤于暂存数据的存储单元。⼀般处理器内部对数据的算术逻辑计算往往都需要通过寄存器(Register),⽽不是直接对外部存储器进⾏操作。因此,如果我们要计算⼀个加法或乘法计算,需要先把相关数据从外部存储器读到处理器⾃⼰的通⽤⽬的寄存器中,然后对寄存器做计算操作,再将计算结果也放⼊寄存器,最后将结果寄存器中的数据再写⼊外部存储器。寄存器的访问速度⾮常快,它是这三种存储介质中速度最快的,但是数量也是最少的。像在传统的32位x86处理器体系结构下,程序员⼀般能直接⽤的通⽤⽬的寄存器只有EAX、EBX、ECX、EDX、ESI、EDI、EBP这7个。还有⼀个ESP⽤于操作堆栈,往往⽆法⽤来处理通⽤计算。

 

五、计算单元

1、计算单元⼀般由算术逻辑单元(ALU)、乘法器、移位器构成。当然,像⼀般⾼级点的处理器还包含除法器,以及⽤于做浮点数计算的浮点处理单元(FPU)。它们⼀般都直接对寄存器进⾏操作。⽽涉及数据读写的指令会由专门的加载、存储处理单元进⾏操作。

 

六、程序执行流程

1、流水线执行图

2、处理器在执⾏⼀段程序时,通常先从外部存储器取得指令,然后对指令进⾏译码处理,转换为相关的⼀系列操作。这些操作可能是对寄存器的算术逻辑运算,也可能是对存储器的读写操作,然后执⾏相关计算。最后把计算结果写回寄存器或写回到存储器。不过处理器在执⾏⼀系列指令的时候并不是每条指令都必须先经过上⾯所描述的整个过程才能执⾏下⼀条,⽽是采⽤流⽔线的⽅式执⾏,如上图所⽰。图中体现了⼀个简单的处理器执⾏完⼀条指令的完整过程。我们这⾥假设从第⼀个取指令阶段到最后的写回阶段,这5个阶段均花费1个周期倘若不是采⽤流⽔线的⽅式,⽽是每完成⼀条指令的执⾏再执⾏下⼀条指令,那么每条指令的处理都需要5个周期。⽽⼀旦采⽤流⽔线⽅式处理,那么我们可以看到,在第⼀条指令执⾏到译码阶段时,处理器可以对第⼆条指令做取指令操作;当第⼀条指令执⾏到执⾏阶段时,第⼆条指令执⾏到了译码阶段,此时第三条指令开始做取指令阶段,然后以此类推。这样,当整条流⽔线填充满之后,即执⾏到了第5条指令,那么对于后续指令⽽⾔,处理每⼀条指令的时间均只需要⼀个周期

这⾥需要注意的是,并不是每条指令都需要访存操作,只有当需要对外部存储器做读写操作时才会动⽤访存执⾏单元。然⽽⼤部分指令都需要写回寄存器操作,即便像⼀条⽤于⽐较⼤⼩的指令,或⼀条系统中断指令,它们也会影响状态寄存器。当然,很多处理器会有空操作(NOP)指令,它仅仅占⽤⼀个时钟周期,⽽不会对除了指令指针寄存器以外的任何寄存器产⽣影响。

 

 

致谢

1、《C语言编程魔法书》作者 陈轶

2、RAM、ROM、FLASH(NAND&NOR)、固态硬盘SSD、机械硬盘详解(精贴)

 

 

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读