zoukankan      html  css  js  c++  java
  • 计算机组成原理入门

    计算机组成原理入门

    文中如有错误或不足还望指出,十分感谢。——keep250

    正在持续更新中ing

    名词解释

    1. 起始位:先发出一个逻辑“0”信号,表示传输字符的开始。
    2. 资料位:紧接着起始位之后。资料位的个数可以是4、5、6、7、8等等。通常采用ASCII码。从最低位开始传送,靠时钟定位。
    3. 奇偶校验位:资料位加上这一位后,使得“1”的尾数应为偶数(偶校验)或者奇数(奇校验),以此来校验资料传送的正确性。
    4. 停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。
    5. 空闲位:处于逻辑“1”状态,表示当前线路上没有资料传送。
    6. 波特率:衡量资料传送数据的度量衡。表示每秒钟传送的二进制位数。例如资料传送速率为20字符/秒,而一个字符为10位,则其传送的波特率为20*10=200字符/秒=200波特率。
    7. CPI(Clock cycle Per Instruction):每条计算机指令执行所需的时钟周期,有时简称为指令的平均周期数。
    8. ASCII码:标准ASCII码是7位,7位共27=128种,拓展ASCII码是8位,共28=256种。

    Cache基本原理

    多路相联:Cache基本原理之:结构

    Cache写入

    为了同步Cache和主存中的内容,需要及时同步Cache和主存间的信息,这种同步本质上是一种写入过程,分为以下三种:

    1. 直写式系统(Write Through):同时将数据写入Cache和主存储器(主存)中,可以保证Cache中内容与主存的内容完全一致。但是因为每次对Cache的更新都要通过总线对主存储器操作,会降低整体写入速度。
    2. 缓冲直写式系统:对直写式系统的改进,在其基础上加一个缓存,每次写入主存储器时写入缓存,就不需要等待主存储器写完。但是缓存只能写连续写一次,连续写两次时仍需等待。
    3. 回写式系统(Write Back):直接写Cache,通过算法尽可能同步Cache和主存之间的信息。现代的Cache大多采取这种解决方案。

    CPU寻址

    现代处理器使用的是一种被称为虚拟寻址(Virtual Addressing)的寻址方式。使用虚拟寻址,CPU需要将虚拟地址翻译成物理地址,如此一来CPU才能通过物理地址访问到真实的物理内存。

    虚拟寻址

    虚拟寻址需要硬件与操作系统之间的合作。CPU中含有一个被称为内存管理单元(Memory Management Unit, MMU)的硬件,它的功能是将虚拟地址转换为物理地址。MMU需要借助存放在内存中的页表动态翻译虚拟地址,该页表由操作系统管理。

    访问局部性

    访问局部性分为时间局部性空间局部性,它们的概念如下:

    1. 时间局部性:一旦一条指令被执行,则在不久的将来它可能再次被执行。
    2. 空间局部性:一旦一个存储单元被访问,那么它附近的存储单元也很快被访问。

    寻址方式

    要学习寻址方式,必须先了解一下指令格式:为了方便各种数据寻址方式,在指令字中设一个字段,用来指明这个指令术语哪种寻址方式。指令格式如下:

    操作码OP 寻址特征 形式地址A
    即寻址方式 即偏移量

    操作码的位数决定了指令的条数,寻址特征和形式地址A共同决定了可寻址的范围。

    下面介绍几种重要的寻址方式:

    1. 一次间址(直接寻址):在指令的地址字段直接指出操作数的有效地址。可扩大寻址范围,便于编程。需多次访存,速度慢。有效地址EA=(A),访存次数为2。
    2. 相对寻址:PC的内容为基地址,以指令中形式地址A的地址为偏移量确定有效地址,便于程序浮动。广泛应用于指令转移。有效地址EA=(PC)+A,访存次数为1。
    3. 寄存器寻址:直接给出操作数所在寄存器编号Ri。指令执行阶段不访存,速度快,价格昂贵。有效地址EA=Ri,访存次数为0。
    4. 变址寻址:在变址操作时,将计算机指令中的形式地址A变址寄存器IX中的地址相加,得到有效地址,指令提供数组首地址,由变址寄存器IX来定位数据中的各元素。所以它最适合按下标顺序访问一维数组元素。有效地址EA=(IX)+A,访存次数为1。
    5. 基址寻址:基址寄存器BR的内容加上形式地址A形成有效地址,便于程序浮动。BR的内容由操作系统确定,在程序执行中,其内容不变(作为基址地址),形式内容A可变(作为偏移量),有利于多道程序设计。有效地址EA=(BR)+A,访存次数为1。

    CPU中的寄存器

    CPU中的寄存器分为用户可见于用户不可见两大类:

    分类 寄存器 功能
    用户可见 通用寄存器 存放操作数和地址信息;作为基址寄存器、变址寄存器等
    用户可见 程序状态字寄存器(PSWR) 保留由逻辑运算指令或测试指令的结果建立的各种状态信息
    用户可见 程序计数器(PC) 指出下一条指令在主存中的存放地址
    用户可见 累加寄存器(ACC) 暂时存放ALU运算的结果信息,用于实现加法运算
    用户不可见 指令寄存器(IR) 保存当前正在执行的的那条指令
    用户不可见 暂存寄存器(DR) 暂存从主存读来的数据
    用户不可见 存储器地址寄存器(MAR) 存放所要访问的主存单元的地址
    用户不可见 粗初起数据寄存器(MDR) 存放向主存写入的信息或从主存中读出的信息

    指令周期

    指令周期是指从取指令、分析取数到执行完该指令所需的全部时间。指令周期通常包含若干个机器周期,每个机器周期完成一个基本操作。一个机器周期又包含若干个时钟周期(也称为“节拍”,它是CPU操作最基本的单位)。

    一个完整的指令周期经过:曲直轴器、间址周期、执行周期、中断周期。这4个周期都可能有CPU访存,只是目的不同。取指周期是为了取指令,间址周期是为了取有效地址,执行周期是为了取操作数,中断周期是为了保存程序断点

    I/O端口

    I/O端口又称I/O接口,是CPU与设备之间的交接面。由于主机和I/O设备的工作方式和工作速度有很大差异,I/O端口就应运而生。在执行一条指令时,CPU使用地址总线选择所请求的I/O端口,使用数据总线在CPU通用寄存器I/O端口之间传输数据。

    流水线

    指令流水线数据通路

    五阶段流水线可分为取值(IF)、译码/取数(ID)、执行(EXC)、存储器读(MEM)、写会(Write Back)。数字系统中,各个子系统通过数据总线连接形成的数据传送路径称为数据通路,这条由组合逻辑电路时序逻辑电路组合而成的通路包括了程序计数器(PC)、算术逻辑运算部件(ALU)、通用寄存器组、取指部件等,注意其中不包括控制部件

    超标量流水线

    超标量是指在CPU中有一条以上的流水线,并且每个时钟周期内可以完成一条以上的指令,其实质是以空间换时间。它不影响流水线功能段的处理时间(即并不会缩短或者增长流水线功能段的处理时间)。超标量流水线相对于普通流水线技术的优点是能在一个时钟周期内同时发射多条指令,能结合动态调度技术提高指令执行并行性。

    多总线结构

    多总线结构用速率高的总线连接高速设备,用速率低的总线连接低速设备。一般来说,CPU是计算机的核心,是计算机中速度最快的设备之一,所以靠近CPU的总线速度较快。

    在总线中,突发传送(也称为数据突发,在短时间内进行非常高带宽的数据传输)方式把多个数据单元作为一个独立传输处理,从而最大化设备的吞吐量。现实中一般支持用突发床送房是的总线提高存储器的读写效率,所以一般来说存储器总线可以支持突发传送方式。

    多总线系统中的总线之间通过桥接器相连接,桥接器起着流量交换的作用。

    PCI-Express总线都采用串行数据包传输数据(即使用串行传输方式),目前的主流PC都配备较好的SSD,拥有极高的IO速率,一般都需要使用PCI-Express总线等方式来支持数据的传输。因为并行数据传输会在CPU频率提升的情况下出现较大的信息干扰以降低传输效率,所以目前主流传输方式为串行传输。

    主存储器MM和控制存储器CS

    主存储器(MM)用RAM和ROM实现(内存),它在CPU外,与CPU通过主线连接,存储指令和数据。控制存储器(CS)是CPU内部的一个寄存器,存储实现指令系统的所有微指令,用ROM实现,只可读不可写。MM按照地址访问,CS按照微指令的地址访问。

    零碎知识点

    1. 程序运行时间 = (指令数目*CPI)/ 主频;

    文中如有错误或不足还望指出,十分感谢。——keep250

    参考资料

    1. 百度百科
    2. 百度知道
    3. Wikipedia
    4. 【转】uart中:起始位,停止位,就校验位,数据位,数据位的位数,波特率,数据通讯的接口定义
    5. 三种Cache写入方式原理简介
    6. 计算机组成与设计(二)
    7. 虚拟内存的那点事儿
    8. 王道《2020年计算机专业基础综合考试真题思路分析》
  • 相关阅读:
    修改docker+jenkins挂载目录
    Kunbernetes从私有仓库nexus拉取镜像
    kubernetes忘记token或者token过期怎么加入k8s集群
    kubernetes命令详情
    一些缩短树莓派学习曲线的书籍、课程和网站
    如何在Linux 中获取硬盘分区或文件系统的UUID?
    介绍Kubernetes监控Heapster
    对比剖析Swarm Kubernetes Marathon编排引擎
    Linux高效数据统计命令wc
    linux中make的有关规则的特性
  • 原文地址:https://www.cnblogs.com/keep250/p/12023000.html
Copyright © 2011-2022 走看看