F4 状态机模型

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语言中一些关键的组成要素:

  1. 变量, 它们是C程序处理的对象

  2. 语句, 它们是C程序处理的操作流程

  3. 输出函数, 它们是C程序中让变量与外界交互的桥梁

这里C语言比指令阶段的更加抽象了,但其实就是换了一种人类更能理解的方式,比如就是value变量,

数字电路的状态机模型

  • 状态集合:只有时序逻辑电路才能存储信息, 因此一个状态是时序逻辑元件所 存储的具体信息, 而全体状态的集合 则是时序逻辑元件所能存储信息的所有组合.

  • 激励事件集合:让时序逻辑元件的状态发生变化的, 其实是组合逻辑电路输出的信号, 因此组合逻辑电 路就是这个状态机的激励事件.

  • 状态转移规则. 时序逻辑元件的状态具体应如何变化, 是由组合逻辑电路的具体逻辑决定的.

  • 初始状态. 即电路在复位时, 时序逻辑元件的状态.

程序, ISA和CPU之间的联系

到此, 我们可以来简单梳理程序, ISA和CPU之间的联系:

1.根据ISA手册的功能描述, 画一张CPU的结构图 -> 处理器微结构设计

  1. 根据结构图设计具体的电路 -> 逻辑设计

  2. 开发程序 -> 软件编程

  3. 将程序翻译成ISA手册中描述的指令序列 -> 编译

  4. 在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

相关推荐
GUET_一路向前1 小时前
【C语言无符号常量好处】`4U` 表示一个无符号整数常量 4
c语言·开发语言·无符号常量
玖剹1 小时前
floodfill算法题目(二)
c语言·c++·算法·leetcode·深度优先·dfs·深度优先遍历
自然常数e1 小时前
深入理解指针(3)
c语言·visual studio
序属秋秋秋2 小时前
《Linux系统编程之进程环境》【地址空间】
linux·运维·服务器·c语言·c++·系统编程·进程地址空间
Tandy12356_2 小时前
中科大计算机网络——网络安全
c语言·python·计算机网络·安全·web安全
枫叶丹42 小时前
【Qt开发】Qt窗口(五) -> 非模态/模态对话框
c语言·开发语言·数据库·c++·qt
zore_c12 小时前
【C语言】带你层层深入指针——指针详解2
c语言·开发语言·c++·经验分享·笔记
奔跑吧邓邓子14 小时前
【C语言实战(72)】C语言文件系统实战:解锁目录与磁盘IO的奥秘
c语言·文件系统·目录·开发实战·磁盘io