keyword:
模型;状态机;指令;C语言;寄存器
abstract:
f4讲了关于状态机的事情,有指令编码,然后是寄存器,还有高级语言及其编译。CPU设计-指令状态机-C语言状态机之间的对应关系。重点是状态机模型:状态-激励-执行(?)
处理器的组成和工作原理
指令及其编码
指令包含:加工["操作码"(opcode)字段] + 原料["操作数"(operand)字段]
so编码是什么?指令格式很重要!
这里的"编码"通常指的是计算机指令 在二进制层面的表示形式,它涉及如何将操作码和操作数转换为机器能执行的二进制代码。
为什么需要编码?
- 指令在硬件中不能直接使用文本(如"ADD R1, R2"),++必须转换为二进制,CPU才能通过电路识别和执行。++ 例如:
- 文本指令:
ADD R1, R2(意为"将R1和R2寄存器相加,结果存到R1")。- 对应编码:操作码部分表示"加法",操作数部分表示"R1"和"R2"的编号。
- 编码长度:取决于指令集。一些简单架构(如RISC)有固定长度指令(例如32位),而复杂架构(如x86)可能有变长指令。
二进制表示:操作码定义操作是add,还是lim;操作数部分则是指明原料在哪里,具体在哪个通用寄存器里。
编码表:汇编器或编译器会根据指令集手册(如Intel或ARM手册)将文本指令转换为二进制。
假设一个简单的RISC指令集,其中指令格式为:
操作码(6位) | 目的寄存器(5位) | 源寄存器1(5位) | 源寄存器2(5位) | ...(其他字段)。
存储程序
计算机就是靠不断执行一条条指令来完成各种复杂任务的.程序的本质 就是 ++一段指令序列++.(就是一堆二进制码)。有两个问题,什么地方存储,指令执行的顺序呢(更确切是状态)?
| 1. | 是存储器(如现代计算机的内存)中 |
|---|---|
| 2. | 能让计算机知道下一条指令在哪 里, 还需要有一个用于指示 当前执行到哪条指令的部件, 这个部件称为"程序计数器"(Program Counter, PC). |
从此以后,计算机只需要做一件事情:
重复以下步骤:
从PC 指示的存储器位置取出指令
执行指令
更新PC
PC总不能一直顺序执行,于是有了判断类型的指令,bner0
Branch if Not Equal r0 的缩写, 如果执行这条指令的时候 R[rs2] 与 R[0] 不相等, 则将PC寄存器更新为 addr , 即让PC指向 addr 处的指令.
主频很快巴拉巴拉
审视编程
上述的 add 和 li 等指令, 在计算机领域里面属于汇编语言的范畴. 汇编语言 是指令的符号化 表示. 与汇编语言相比, 还有更底层的机器语言, 它就是指令的二进制表示, 可以被通过数字电路 实现的处理器直接执行.
处理问题的,先把输入和输出扒出来,
输入输出? → 数学描述? → 匹配算法模式? → 边界在哪? → 写测试用例!

指令集架构的状态机模型
指令及其执行过程, 在计算机领域中属于指令集架构(Instruction Set Architecture, 缩写为ISA, 也简称指令集)的范畴.ISA的本质是一系列规范, 这些规范通常记录在相应的手册中, 它们定义了一台模型机的功能和 行为.
状态机模型
定义:

状态机延伸:

一定要记住需要哪些材料,以及指令存放的位置
C语言及其状态机模型
C语言中一些关键的组成要素:
-
变量, 它们是C程序处理的对象
-
语句, 它们是C程序处理的操作流程
-
输出函数, 它们是C程序中让变量与外界交互的桥梁
这里C语言比指令阶段的更加抽象了,但其实就是换了一种人类更能理解的方式,比如就是value变量,

数字电路的状态机模型
-
状态集合:只有时序逻辑电路才能存储信息, 因此一个状态是时序逻辑元件所 存储的具体信息, 而全体状态的集合 则是时序逻辑元件所能存储信息的所有组合.
-
激励事件集合:让时序逻辑元件的状态发生变化的, 其实是组合逻辑电路输出的信号, 因此组合逻辑电 路就是这个状态机的激励事件.
-
状态转移规则. 时序逻辑元件的状态具体应如何变化, 是由组合逻辑电路的具体逻辑决定的.
-
初始状态. 即电路在复位时, 时序逻辑元件的状态.
程序, ISA和CPU之间的联系
到此, 我们可以来简单梳理程序, ISA和CPU之间的联系:
1.根据ISA手册的功能描述, 画一张CPU的结构图 -> 处理器微结构设计
-
根据结构图设计具体的电路 -> 逻辑设计
-
开发程序 -> 软件编程
-
将程序翻译成ISA手册中描述的指令序列 -> 编译
-
在CPU上执行程序 = 用程序编译出的指令序列控制CPU电路进行状态转移
是一个硬件到软件,最后再有硬件执行的过程。
Ending
怎么说呢,感觉没必要太纠结这些基础的,我感觉还是孰能生巧。当然状态机的思维要有,这是最顶层的,条理的思路。
piano:最左键是A ,最右键是C
|2 |3 黑键,C|D|E F|G|A|B
D is sort like of den(槽)
A is the middle of three black key,G is left
C is the left of two black key,so do the F,all the left
F is simlar with C,all the left ,but three black key
E and B, all the right ,but two for E,three for B