系列文章

一、程序员进阶架构师的基础知识【计算机基础】
二、程序员进阶架构师的基础知识【操作系统】
三、程序员进阶架构师的基础知识【计算机网络基础】
四、程序员进阶架构师的专业知识【软件工程基础】
五、程序员进阶架构师的专业知识【UML建模工具】
六、程序员进阶架构师的专业知识【系统分析】
七、程序员进阶架构师的专业知识【系统设计】
八、程序员进阶架构师的专业知识【架构设计】
九、程序员进阶架构师的专业知识【架构质量及评估】
十、程序员进阶架构师的专业知识【软件测试及维护】

文章目录

  • 系列文章
  • 前言
    • 冯诺依曼计算机
    • 现代计算机
  • 计算机组成及作用
    • CPU
      • 运算器
      • 控制器
    • 存储器
      • 分类
        • 主存储器
        • 高速缓冲存储器(Cache)
        • 磁盘存储器
      • 数据校验
        • 奇偶校验码
        • 海明码
        • CRC循环冗余码
    • 总线
  • 指令系统
    • 复杂指令系统CISC
    • 精简指令系统RISC
    • 指令工作

前言

冯诺依曼计算机

  冯诺依曼被称为计算机之父,其提出的思想:计算机执行的指令、数据要以二进制形式存放在存储器当中,运算器与存储器进行交互,利用晶体管以及相应的电路很好的实现相应计算功能。基于其思想将计算机进一步细化有6个方面:

  1. 计算机由五大部件组成
  2. 指令及数据以同等的地位存放在存储器并且按地址寻找
  3. 指令及数据以二进制形式表示
  4. 指令由两个部分组成,操作码+地址码。其中操作码说明指令的功能,比如加法、乘法等。地址码存放指令涉及到的数据所在内存或寄存器的单元地址
  5. 在做相应的计算先把指令、数据存放在内存当中
  6. 计算机由运算器为中心

冯诺伊曼计算机包括的5大部件如图所示

现代计算机

  现代计算机结构建立在冯诺伊曼计算机结构之上,不同之处是冯诺伊曼计算机以运算器为中心,而现代计算机以存储器为中心,同时运算器和控制器不在分开,集成在CPU上。

计算机组成及作用

CPU

  CPU由运算器、控制器以及寄存器组成。其中运算器负责算术运算和逻辑运算。控制器负责调度运算器把计算做好。寄存器一种有限存储容量的高速存储部件,可用来暂存指令、数据和地址,既要接收控制器的命令,将命令传给运算器,又要帮运算器负责记录已处理完或即将要处理的数据。

运算器

  运算器一般包括3个寄存器和1个算数逻辑单元。

  • 算数逻辑单元(ALU):负责算数运算(+、-、*、/等基本运算)和逻辑运算(与、或、非和异或等逻辑运算及比较、传送等操作)
  • 累加寄存器(ACC):为ALU提供一个工作区,存放被计算的数据以及计算结果
  • 操作数寄存器(X):存放操作数(+、-、*、/)
  • 乘商寄存器(MQ):存放乘积和商
  • 状态条件寄存器(PSW):存放当前运算状态(运算结果溢出、为负数等标志)及系统工作状态(中断)

控制器

  控制器由程序计数器、指令寄存器、指令译码器、时序产生器、操作控制器组成。

  • 操作控制器(CU):根据指令所需完成指令执行
  • 程序计数器(PC):存储下一条要执行的指令所在的地址
  • 指令寄存器(IR):存放当前正在执行的的一条指令
  • 指令译码器(ID):对指令中的操作码字段进行分析解释
  • 时序部件:控制指令执行顺序

数据缓冲寄存器(DR):作为CPU和存储器之间信息传输的中转站,暂存存储器中的数据、指令,弥补CPU和存储器之间的操作速度。
地址寄存器(AR):预访问的存储单元的地址。

存储器

分类

主存储器

  主存储器(Main memory),简称主存。是计算机硬件的一个重要部件,主要由存储体、控制线路、地址寄存器、数据寄存器和地址译码电路五部分组成。其作用是存放指令和数据,并能由中央处理器(CPU)直接随机存取。存储器的基本单位是存储单元,一般以8位2进制表示一个存储单元,存储单元都有一个地址,一般用16进制表示。

  存储计算:存储地址从A4000H到CBFFFH,共占用160个KB,如果用存储容量32KB*8bit的存储芯片构成内存,则需要5片。160KB=CBFFFH+1-A4000H=CC000H-A4000H=28000H=2✖️16^4+8✖️16^3=32✖️4KB+8✖️4KB=160KB

高速缓冲存储器(Cache)

  高速缓冲存储器是存在于主存与CPU之间的一级存储器, 由静态存储芯片(SRAM)组成,容量比较小但速度比主存高得多, 接近于CPU的速度,解决CPU和主存之间速度的差异,避免CPU“空等”现象。在计算机存储系统的层次结构中,是介于中央处理器和主存储器之间的高速小容量存储器。它和主存储器一起构成一级的存储器。高速缓冲存储器和主存储器之间信息的调度和传送是由硬件自动进行的。

  • cache&主存&CPU交互过程
  • 地址映象与转换
    地址映象是指某一数据在内存中的地址与在缓冲中的地址,两者之间的对应关系。下面介绍三种地址映象的方式。

    • 直接相联方式
      地址映象规则: 主存储器中一块只能映象到Cache的一个特定的块中。
      (1) 主存与缓存分成相同大小的数据块。
      (2) 主存容量应是缓存容量的整数倍,将主存空间按缓存的容量分成区,主存中每一区的块数与缓存的总块数相等。
      (3) 主存中某区的一块存入缓存时只能存入缓存中块号相同的位置。
      优点:地址映象方式简单,数据访问时,只需检查区号是否相等即可,因而可以得到比较快的访问速度,硬件设备简单。
      缺点:替换操作频繁,命中率比较低,块冲突率高。
    • 全相联方式
      地址映象规则:主存的任意一块可以映象到Cache中的任意一块
      (1) 主存与缓存分成相同大小的数据块。
      (2) 主存的某一数据块可以装入缓存的任意一块空间中。如果Cache的块数为Cb,主存的块数为Mb,则映象关系共有Cb×Mb种。
      优点:命中率比较高,Cache存储空间利用率高。
      缺点:访问相关存储器时,每次都要与全部内容比较,速度低,成本高,因而应用少
    • 组相联方式
      组相联的映象规则:
      (1) 主存和Cache按同样大小划分成块。
      (2) 主存和Cache按同样大小划分成组。
      (3) 主存容量是缓存容量的整数倍,将主存空间按缓冲区的大小分成区,主存中每一区的组数与缓存的组数相同。
      (4) 当主存的数据调入缓存时,主存与缓存的组号应相等,也就是各区中的某一块只能存入缓存的同组号的空间内,但组内各块地址之间则可以任意存放,即从主存的组到Cache的组之间采用直接映象方式;在两个对应的组内部采用全相联映象方式。
      优点:块的冲突概率比较低,块的利用率大幅度提高,块失效率明显降低。
      缺点:实现难度和造价要比直接映象方式高。
  • 写策略
    因为cache的内容是部分主存内容的副本,应该与主存内容保持一致,如何保持一致就有几种写操作工作方式可供选择,统称为写策略。

    • 写回法
      只修改cache的内容而不立即写入主存,当该内容在cache被淘汰时再写入主存。
    • 写直达法
      又称全写法,cache与主存同时发生修改操作。
    • 标记法
      数据写入cache后,有效标记为1,当cpu对数据修改时,数据只写入主存同时缓存中设置有效标记为0。读取数据时有效标记位为1命中,否则直接去主存读取。
  • 替换算法
    当缓存无容量或缓存中的某些数据不需要时需要将数据进行替换,有以下几种替换算法:

    • 随机:随机法是随机地确定替换的存储块,简单粗暴。
    • 先进先出(FIFO):先进先出法是选择那个最先调入的那个块进行替换。
    • 最近最少使用(LRU):LRU法是依据各块使用的情况, 总是选择那个最近最少使用的块被替换。
    • 最不经常使用( LFU):将访问次数最少的内容替换出Cache。

磁盘存储器

  磁盘存储器(magnetic disk storage),以磁盘为存储介质的存储器。它是利用磁记录技术在涂有磁记录介质的旋转圆盘上进行数据存储的辅助存储器。具有存储容量大、数据传输率高、存储数据可长期保存等特点。

  • 工作原理
    当需要从磁盘读取数据时,系统会将数据逻辑地址传给磁盘,磁盘的控制电路按照寻址逻辑将逻辑地址翻译成物理地址,即确定要读的数据在哪个磁道,哪个扇区。
    ① 首先必须找到柱面,移动机械臂将磁头移动对准相应磁道,这个过程叫做寻道,所耗费时间叫做寻道时间,一般都在10ms左右。
    ② 然后磁盘旋转将目标扇区旋转到磁头下。这个过程耗费的时间叫做旋转时间,普通硬盘一般都是7200rpm,慢的5400rpm。
    ③ 激活磁头存取数据。
  • 存取时间
    磁盘上读取扇区数据(一块数据)所需时间:寻道时间+旋转时间+读/写时间,读/写时间可以忽略不计。
  • 存储容量
    存储容量:磁盘面×磁道×每道扇区数 × 每扇区字节数

数据校验

  数据存取和传送的过程中,由于元器件或者噪音的干扰等原因会出现错误,这个时候我们就需要采取相应的措施,发现并纠正错误。对于错误的检测和校正,大多采取“冗余校验”的思想,即除原数据外,额外增加若干位编码,这些新增的代码称为校验位

奇偶校验码

1.编码方式

  • 无论数据位多少位,校验位只有一位
  • 数据位和校验位一共所含的1个数为奇数,称为奇校验
  • 数据位和校验位一共所含的1个数为偶数,称为偶校验

例如(加粗为校验位)

数据 奇校验编码 偶校验编码
1001 11001 01001
1011011 01011011 11011011

2.错误检测
  在数据传输之前,我们会求一次校验位,传输后,会求一次校验位,那么,在奇偶校验中,我们通过比较这两个校验位是否相同,一般是采用异或的方式,若结果为1,则说明有奇数个错误,结果为0,则说明正确或者偶数个错误。
  奇偶校验位是一种错误检测码,但是由于没有办法确定哪一位出错,所以它不能进行错误校正。发生错误是必须扔掉全部的数据,然后从头开始传输数据。

海明码

  海明码基于奇偶校验,将有效信息按某种规律分成若干组,每组安排一个校验位,做奇偶测试,就能提供多位检错信息,以指出最大可能是哪位出错,从而将其纠正。
1.确定校验位个数
  假设为n个数据位设置k个校验位,则校验位能表示2^k个状态,可用其中的一个状态指出 “没有发生错误”,用其余的2 ^k -1个状态指出有错误发生在某一位,包括n个数据位和k个校验位,因此校验位的位数应满足如下关系:2^k-1 ≥ k + n
   例如: 0101应有几位校验位?将32带入公式,求k=3
2.确定校验位分布
  校验位通常分布在数据位的2^*
   例如: 0101 的校验码分布,4个数据位+3个校验位构成7个信息位,分别在2^0, 2^1, 2^2加上校验码

7 6 5 4 3 2 1 信息位
1 0 1 k3 0 k2 k1 校验位

3.信息位分组,确定校验位
  分组方式:将有效信息位二进制n位为1分为一组,分别是:

  • 第1位为1的信息位:3(011),5(101),7(111)
  • 第2位为1的信息位:3(011),6(110),7(111)
  • 第3位为1的信息位:5(101),6(110),7(111)

   求校验位:有效数据位 异或运算(相同为0,不同为1)

  • k1=3(0)+5(1)+7(1)=0
  • k2=3(0)+6(0)+7(1)=1
  • k3=3(0)+5(1)+7(1)=0
7 6 5 4 3 2 1 信息位
1 0 1 0 0 1 0 校验位

   海明码=0100101

CRC循环冗余码

   循环冗余校验则是通过某种数学运算来建立数据位和校验位的约定关系的。它是利用除法及余数的原理来作错误侦测的,如果码字无误则余数应位0,如果有某一位出错,则余数不为0,不同位数出错余数不同。
   例如:采用CRC进行校验,生成多项式为G(X)=X^4+X+1,信息码字为10111,校验码为?CRC冗余码是?

  • 多项式化解做为除数 X^4+X+1= 2^4+ 2^3+ 2^2+ 2^1+ 2^0=10011 (补全后存在为1,不存在为0)
  • 信息码加多项式最高次方个0作为被除数10111+0000=101110000
  • 做模2除运算,余数为校验位(以下图为例子)1100
  • CRC码格式为信息码+余数(10111+1100=101111100)

总线

   总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束,按照计算机所传输的信息种类,计算机的总线可以划分为数据总线地址总线控制总线,分别用来传输数据、数据地址和控制信号。总线是一种内部结构,它是cpu、内存、输入、输出设备传递信息的公用通道,主机的各个部件通过总线相连接,外部设备通过相应的接口电路再与总线相连接,从而形成了计算机硬件系统。

  • 传输形式

    • 并行
      并行总线对n位二进制信息用n条传输线同时传送,其特点是传输速度快,但系统结构较复杂,它用于计算机系统内的各部件之间的连接。
    • 串行
      串行总线对多位二进制信息共用一条传输线,多位二进制信息按时间先后顺序通过总线,它的特点是结构简单,但其传输速度较慢。
  • 传输方向
    • 单工:A只能发信号,B只能接信号,通信是单向的。
    • 半双工:A能发信号,B也能发信号,但是不能同时只能轮流。
    • 双工:A和B可以同时发送信号。

指令系统

   指令系统是指计算机所能执行的全部指令的集合,它描述了计算机内全部的控制信息和“逻辑判断”能力。

复杂指令系统CISC

  • 指令数量众多。指令系统拥有大量的指令,通常有 100~250 条。
  • 指令使用频率相差悬殊。最常使用的是一些比较简单的指令,仅占指令总数的20%,但在程序中出现的频率却占80%。而大部分复杂指令却很少使用。
  • 支持很多种寻址方式。支持的寻址方式通常为 5~20 种。
  • 变长的指令。指令长度不是固定的,变长的指令增加指令译码电路的 复杂性。
  • 指令可以对主存单元中的数据直接进行处理。典型的 CISC 通常都有指令能够直接对主存单元中的数据进行处理,其执行速度较慢。
  • 以微程序控制为主。CISC 的指令系统很复杂,难以用硬布线逻辑 (组合逻辑)电路实现控制器,通常采用微程序控制。

精简指令系统RISC

  • 指令数量少。优先选取使用频率最高的一些简单指令和一些常用指令,避免使用复杂指令。只提供了 LOAD和 STORE两条指令对存储器操作,其余所有的操作都在CPU 的寄存器之间进行。
  • 指令的寻址方式少。通常只支持寄存器寻址方式、立即寻址方式和相对寻址方式。
  • 指令长度固定,指令格式种类少。因为 RISC 指令数量少、格式少、相对简单,译码相对容易。
  • 以硬布线逻辑控制为主。为了提高操作的执行速度,通常采用硬布线逻辑(组合逻辑)来构建控制器。
  • 单周期指令执行,采用流水线技术。因为简化了指令系统,很容易利用流水线技术,使得大部分指令都能在一个机器周期内完成。少数指令可能会需要多周期,例如, LOAD/STORE 指令因为需要访问存储器,其执行时间就会长一些。
  • 优化的编译器:RISC 的精简指令集使编译工作简单化。因为指令长度固定、格式少、寻址方式少,编译时不必在具有相似功能的许多指令中进行选择,也不必为寻址方式的选择而费心,同时易于实现优化,从而可以生成高 效率执行的机器代码。
  • CPU中的通用寄存器数量多,一般在 32 个以上,有的可达上千个。

指令工作

  • 指令组成:指令由操作码和地址码组成。操作码指出该指令完成操作的类型,如加、减、乘、除、传送等。地址码指出参与操作的数据和操作结果存放的位置。
  • 指令周期:取出并执行一条指令的全部时间,可分为取值周期、分析周期、执行周期。
  • 工作方式
    • 顺序:各指令顺序串行执行,执行完一条指令才取下一条指令
    • 重叠:解释K条指令操作完成之前就开始解释第K+1条指令。
    • 流水线:n条指令每个步骤并行执行。

      流水线建立的时间:第一条指令执行完成的时间。
      流水线执行周期:一条指令执行时间最长的一段。
      指令执行时间:首条指令执行时间+(指令数-1)×流水线执行周期。
      流水线吞吐率:指令数/执行时间。
      流水线最大吞吐率:流水线执行周期的倒数。
      流水线加速比:不采用流水线执行时间/采用流水线执行时间。
      公式应用
       某计算机系统采用 5 级流水线结构执行指令,设每条指令的执行由取指令(2 Δt )、分析指令(1Δt )、取操作数(3Δt )、运算(1Δt )和写回结果(2Δt ) 组成, 并分别用5 个子部件完成,该流水线的最大吞吐率为( 1/3Δt) ;若连续向流水线输入10条指令,则该流水线的加速比为( 5:2) 。
      解析:流水线周期为:3Δt,所以最大吞吐率为:1/3Δt。
       10条指令不用流水线的执行时间=(2Δt+1Δt+3Δt+1Δt+2Δt) *10=90Δt。
       10条指令使用流水线的执行时间=(2Δt+1Δt+3Δt+1Δt+2Δt)+(10-1) *3Δt=36Δt。
       所以加速比为:90Δt/36Δt=5:2。
  • 指令执行步骤

    程序执行前:将程序的首条指令地址放至程序计数器(PC)。
    开始执行程序:
    ① 根据PC取指令地址。
    ② 从地址寄存器(AR)中读取指令。
    ③ 将指令送往指令寄存器(IR)。将指令从数据寄存器中取出,经数据总线送入控制器的指令寄存器中。
    ④ 指令译码。指令寄存器中的操作码部分送指令译码器(ID),经译码器分析产生相应的操作控制信号,送往各个执行部件。
    ⑤ 按指令操作码执行。
    ⑥ 修改PC的值(+1),形成下一条要取指令的地址。

一、软考·系统架构师——计算机基础相关推荐

  1. 三、软考·系统架构师——计算机网络基础

    系列文章 一.程序员进阶架构师的基础知识[计算机基础] 二.程序员进阶架构师的基础知识[操作系统] 三.程序员进阶架构师的基础知识[计算机网络基础] 四.程序员进阶架构师的专业知识[软件工程基础] 五 ...

  2. 软考系统架构师-计算机组成和体系结构

    计算机组成和体系结构 1.信息系统 1.1 信息和信息化的概念 信息:信息就是信息,不是物质也不是能量 信息化:就是计算机,网络,通信技术的现代化 1.2 信息系统的概念 系统是指由多个元素有机的结合 ...

  3. 软考系统架构师倒计时第6天

    码云参考资料: https://gitee.com/lxmuyu/soft_examination 整理到2018资料下载: 迅雷网盘链接:https://pan.xunlei.com/s/VNFbm ...

  4. 软考系统架构师倒计时第2天

    软考系统架构师倒计时第2天 分片透明性:是指用户不必关心数据是如何分片的,它们对数据的操作在全局关系上进行,即如何分片对用户是透明的,因此,当分片改变时应用程序可以不变.分片透明性是最高层次的透明性, ...

  5. 软考系统架构师教材推荐和学习方法

    软考系统架构师教材推荐<系统架构设计师教程>(清华大学出版社) 学习方法建议 上午题经验分享 复习教材+做题 教程看不懂的可以去网上找视频结合一起看,书本知识复习完后做题. 上午题只有多做 ...

  6. 2023年软考系统架构师新版专栏导读

    目录 新的改变 软考是不是内卷? 老版教材删减章节 建议学习计划 专栏更文列表 新的改变 软考今年改版啦 高级系统架构师考试在2022年12月底出了第二版教材,比第二版多出来140页,虽然看起来好像更 ...

  7. 九、软考·系统架构师——系统架构质量及评估

    系列文章 一.程序员进阶架构师的基础知识[计算机基础] 二.程序员进阶架构师的基础知识[操作系统] 三.程序员进阶架构师的基础知识[计算机网络基础] 四.程序员进阶架构师的专业知识[软件工程基础] 五 ...

  8. 软考系统架构师、信息系统项目管理师、系统分析师、系统规划与管理师和网络规划师资料大汇总

    公众号此文章地址:https://mp.weixin.qq.com/s/ojzMFODodAnKkhNSmLg1kg 前言 在软考交流群的几天,很多准备2021年软考的同学已经开始准备整理复习资料了. ...

  9. 十、软考·系统架构师——软件测试及维护

    一.程序员进阶架构师的基础知识[计算机基础] 二.程序员进阶架构师的基础知识[操作系统] 三.程序员进阶架构师的基础知识[计算机网络基础] 四.程序员进阶架构师的专业知识[软件工程基础] 五.程序员进 ...

最新文章

  1. linux内核添加c代码,如何从C代码加载Linux内核模块?
  2. Bridge Pattern
  3. freetype和libiconv编译
  4. 致力推广Vim的那个程序员走了,Vim之父:我要把9.0版献给他
  5. 实验一 小凡和VMware虚拟机的使用练习
  6. step1 . day5 C语言基础练习之日历(使用函数调用,优化至元年开始时间)
  7. Linux下配置DNS服务器之一--Master服务器
  8. Java并发:隐藏线程死锁
  9. python numpy.random模块中提供啦大量的随机数相关的函数
  10. oracle数据库报错: ORA-00257: archiver error. Connect internal only, until freed 错误的处理方法
  11. c 语言转换成php语言,C++_C 语言进制之间的转换,二进制、八进制和十六进制向 - phpStudy...
  12. android通用对话框,android-所有活动中的“通用”对话框
  13. html position属性作用,position(五种属性,以及每个属性的特点)
  14. java使用谷歌验证码google captcha
  15. 计算机内部复制粘贴文件速度慢,电脑复制粘贴速度慢为什么
  16. 点阵字模生成原理与方法
  17. 【神经网络】{4} ——多元分类
  18. Django使用pyjwt实现Token跨域认证登录过程实践
  19. mysql explain 性能分析_MySQL性能分析(Explain)
  20. gRPC源码阅读及实践之 Resolver

热门文章

  1. 竹间科技以知识图谱技术,助力保险客户公司智能转型
  2. python 箱线图
  3. 零基础小白学习3dmax,这几点学习建议,你必须要了解
  4. 俄罗斯方块linux服务器,安装Tint以在Linux终端下玩俄罗斯方块
  5. Process Environment Block(PEB)
  6. 自动控制原理绪论以及一般概念
  7. 嵌入式开发笔记-Arduino UNO入门
  8. 如何在亚马逊 AWS 市场启动 ABT 节点 | ArcBlock 博客
  9. 电子通信,嵌入式工程师应对中年危机的上中下策
  10. 用python的selenium写爬虫通过绝对坐标点击元素