计算机组成原理自学笔记(一)


先给B站站个台?
也许是行业特性,不管是主动还是被动,码农总归是要学习的,就算你不学习,各大机构公众号也会制造各种焦虑让你去学习。作为底层群众能从事的职业,抛开其他因素,只看薪资的话,不管是入门起薪还是行业平准薪资都算不错了,从而导致很多人都投入到IT行业成为一名码农。就如同那个淘金的故事,众人都蜂拥投入到淘金大军中,最后这些淘金大军有没有淘到金子发家致富不知道,但是摆渡众人去对岸金矿的船夫是挣钱了。类比一下,各大培训机构和技术公众号一边鼓吹大厂高薪,一边面试碾压,一边技术迭代,一边中年危机,着实让人焦虑。不过也有一些好处,可能是竞争比较激烈,也有不少机构或者个人通过B站发布一些参杂推销的技术视频进行推广,加上B站对技术学习板块的一些扶持,从而B站上也有了一些质量不错的学习资料。同样作为转行过来的码农,貌似自然而然的站在技术鄙视链的底端,可能这是实力不够导致的自卑心理,但无论如何,欠下的基础还是应该要补的。目前的计划是先把计算机组成原理,操作系统,网络,算法这几块先补上,刚好这些在B站上找到了一些大学的mooc视频,希望我学完之前这些视频都还在。


引言

之所以要开始还基础的债,主要还是在了解一些知识点时经常就涉及到基础的知识。比如之前在看NIO相关的内容时说到DMA(直接存储器访问)等等基础知识,当时忍了忍就囫囵吞枣就这么过去了;接下来想着好好学学多线程,发现有什么缓存行对齐、锁总线等等奇奇怪怪的知识点时,实在时忍不住了,决定还是先把基础知识补一补。学习的确是枯燥的,进度也是不容乐观,加上基本上全是理论性的内容,听的时候可能明白,稍微过几天可能就没什么印象了,所以就有了这个系列的博文(希望是个完整的系列)。


最好的总结大概就是画图了,一目了然,所以大概率博客就是由图片构成的。

层次结构

计算机组成原理自学笔记(一)_第1张图片

冯诺依曼计算机特点

计算机组成原理自学笔记(一)_第2张图片

硬件框图:

计算机组成原理自学笔记(一)_第3张图片
运算器:
计算机组成原理自学笔记(一)_第4张图片
加法指令模拟:
计算机组成原理自学笔记(一)_第5张图片
控制器:
计算机组成原理自学笔记(一)_第6张图片

计算机组成原理自学笔记(一)_第7张图片

存储器

计算机组成原理自学笔记(一)_第8张图片

  • 存储体
    • 存储单元
      • 存储元件

存储体(火车) — 存储单元(车厢) — 存储元件(床位)
存储单元:存放一串二进制代码
存储字: 存储单元中二进制代码的组合
存储字长:存储单元中二进制代码的位数
每个存储单元赋予一个地址,一个存储单元中存储一个单元字
MAR: 存储器地址寄存器,反映存储单元的个数
MDR: 存储器数据寄存器,反映存储字长

计算机组成原理自学笔记(一)_第9张图片

存数指令的执行过程
计算机组成原理自学笔记(一)_第10张图片
程序运行过程
1.程序通过输入设备送至计算机
2.程序首地址 —> PC
3.启动程序
4.取指令:
PC —> MAR —> M —> MDR --> IR
(PC + 1) —> PC
5.分析指令:
OP(IR) —> CU (OP:指令中的操作码部分)
6.执行指令:
AD(IR) —> MAR —> M —> MDR —> ACC (AD:指令的地址码部分)


以上是基本的硬件认识,抛开CPU内的运算器/控制器,各硬件部件间连接的总线,其实整个大组成结构算是基本常识。总体而言硬件系统包含三个大的部分:
主机:CPU(运算器+控制器)、内存
外设:输入设备、输出设备、外存储器
总线:地址线、数据线、控制线

  • 衡量机器的指标
    • 非时间指标
      + 机器字长:机器一次能处理的二进制位数,由加法器、寄存器的位数决定,越长表示范围越大、精度越高。(机器字长与寄存器位数相等)
      + 总线宽度:数据总线一次能并行传送的最大信息位数
      + 主存容量:
      + 存储带宽:单位时间内与主存交换的二进制信息量B/s(字节每秒)。影响存储带宽的指标包括数据位宽和数据传输速率。

    • 时间指标
      +主频(f):CPU内核工作的时钟频率,即CPU内数字脉冲信号震荡的速率,与CPU实际的运算能力之间不是唯一的、直接关系
      +时钟周期(T):节拍周期/震荡周期(时钟晶振频率的倒数,晶振为12M,则时钟周期为1/12us),计算机中最基本的、最小的时间单位;在一个时钟周期内,CPU仅完成一个最基本的动作;
      +外频:CPU与主板之间同步的时间频率
      +倍频:CPU主频与外频之间的倍数
      +CPI:clock cycles per instruction 一条指令需要的时钟周期数(即时钟周期的个数)
      +IPC:instruction per clock 每个时钟周期内执行的指令条数(并行)
      +MIPS:million instruction pre second 每秒钟CPU能执行的指令总条数(百万条/秒)
      +CPU时间:执行一段程序所需的时间=CPU时间 + I/O时间 + 存储访问时间 + 各类排队延时等;
      备注:
      机器周期:在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。
      指令周期:指令周期是指取出并完成一条指令所需的时间,一般由若干个机器周期组成,分为单周期指令,双周期指令和多周期指令。对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。
      参考[http://www.51hei.com/bbs/dpj-154301-1.html]
      CPU时间片:CPU分给每个进程的时间
      CPU周期:读取一个指令节所需的时间
      参考https://www.cnblogs.com/yzjT-mac/p/6054457.html
      (墙上)时钟时间:程序从开始执行到结束的总时间(时钟走过的时间)
      用户CPU时间:CPU在用户态执行的时间
      系统CPU时间:CPU在内核态执行的时间
      参考[https://www.shuzhiduo.com/A/MAzAnkEqJ9/]


第一章是计算机组成的一个总的架构,差不多看完视频时我随手留的笔记也就这么多。当我整理的时候发现知识点有些不连贯,应该遗漏了些什么,不过也不要紧,也没指望这一次全搞定,先系统的过一遍,细节和遗漏的地方后面再慢慢找补吧。

你可能感兴趣的:(计算机基础)