没想到吧,聪明可爱的我计组竟然挂了,只能寒假好好继续学习啦,争取在实习的期间晚上抽出两个小时来学习计组,周日学一上午计组,下午和晚上学点别的。挂科是挂科,前进还给前进,觉得汇编挺好玩的,上层应用基本就那些(写几个demo,http服务器啊,muduo网络库啊,了解了解protobuf、zookeeper这些分布式的小组件),在学学操作系统、计算机组成原理、汇编这些好玩的东西,深入理解计算机
计组
运算器:ALU、MQ寄存器、ACC寄存器、X寄存器由这四个东西组成的
控制器:CU、PC寄存器、IR寄存器。根据PC寄存器中的地址从MAR中取出指令放到IR寄存器中,然后PC寄存器就加1,所以说PC寄存器下一条指令的地址,IR寄存器存放的是当前要执行的指令。可以看这些步骤来熟悉一下取指令的过程
控制器的作用:解释指令,解释指令分为三部:取指令,分析指令、执行指令
主存储器由这些小东东组成。按我的理解,存储字就是以字节为单位了,存储字长就是多少位
机器字长:机器一次能处理的位数,称为机器字长。有的机器字长和寄存器的位数有关,但并不全都是。
看了这张图,也就是说把那些数据根据地址放到哪里对应的就是跟那个部件进行交流?
64位的CPU决定一次处理数据的长度,寄存器的宽度和字也跟CPU的位数有关。
64位系统又是啥,其实当有64位CPU、64位操作系统、64位的软件的时候,才是真正运行64位软件
时钟周期
时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12 us),是计算机中最基本的、最小的时间单位。(ps:这段我是真没懂,这三个周期是看的一篇博客,下方会给出参考的链接)
在一个时钟周期内,CPU仅完成一个最基本的动作。
机器周期
在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。
相当于干一个阶段就是一个机器周期
指令周期
指令周期是执行一条指令所需要的时间,一般由若干个机器周期组成(我计组考试题,答错了。。。)。指令不同,所需的机器周期数也不同。对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。
通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令
总结一下他们三个的关系
指令周期由若干个机器周期组成,机器周期由若干的时钟周期组成。
参考的博文地址
三个周期概念
三个周期概念加总结的参考
汇编安装
因为想到学习计组,顺便在好好学学汇编吧,汇编就大二的时候学过点皮毛,现在都忘光了。
汇编工具安装博客
汇编代码执行
我使用的是在windows的,一步一步来装的,总结一下流程,就是masm,然后link下obj文件。清晰的hello world,哈哈哈
汇编代码如下
DATA SEGMENT
STRING DB 'Hello World!', '$'
DATA ENDS
STACK1 SEGMENT PARA STACK
DW 20H DUP (0)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:STACK1
BEGIN: MOV AX, DATA
MOV DS, AX
LEA DX, STRING
MOV AH, 9
INT 21H
MOV AH, 4CH
INT 21H
CODE ENDS
END BEGIN