“弃工从研”的路上很孤独,于是我记下了些许笔记相伴,希望能够帮助到大家
所有学过计组的人几乎都有一个烦恼 就是里面的概念无法记住
经典“转头忘”
那究竟是为什么?很显然 因为名词之间没形成结构化 点与点之间无法建立联系
在正式进入之前先跟大家讲几个比较关键的名词MAR和MDR 为什么这么说呢
因为我们从一开始学习计组的时候 估计就要接触到这两个 这也是很多新手们一直被困在的地方 就是这两个名词他们背后的多少位数究竟是什么?
我将从MAR和MDR入手 将下面一堆“字长” 从最容易理解的方式解释并且串联起来形成记忆宫殿
机器字长
我们都知道计算机是用来计算的
机器字长中的“机器”完全可以指代计算机的意思 也就是计算机的字长 那么好了 计算机的字长 我们把这里的计算机广义化 其实就是计算的机器
所以机器字长 就是 “用于计算的机器的字长”
官方定义:CPU内部用于整数运算的数据通路的宽度
很催眠吧?难记住吧? 抓关键词 CPU 整数运算 宽度 那不就是 计算的机器的字长吗?
为什么说是整数运算?因为整数运算是最基本最常用的类型
MDR=机器字长?
MDR(Memory Data Register)是存储器数据寄存器,用于暂存从存储器读取的数据或准备写入存储器的数据。
说白了 就是个放数据的地方 数据从哪里来?主存(通常情况下哈,缓存那些也只不过是从主存上摘抄下来的 总的来说还是源自于主存)
MDR说白了就是个主存刚出炉的数据要暂时放着的地方 所以MDR的位数 就是存储单元的字长
但是!
存储单元里边 只能放 运算用的数据吗? 不一定 人家能放地址 能放指令 能放指令和地址
说白了这就是个篮子里面纺纱也不一定 但机器字长是一次运算的数据长度 也没人规定哪个存储单元里面一整块都存的数据啊 所以 答案是不一定
存储字长通常由存储芯片的设计决定,而机器字长则由CPU的设计决定。分开独立设计
存储字长
存储字长指的是存储器中一个字的位数,刚刚上面提到了,即一个存储单元中存放的二进制代码的长度。存储字长与机器字长有密切关系,但它们并不总是相等。
操作位数
操作位数指的是计算机进行运算的位数。
有人说 要晕了 这不是机器字长吗?
别急
操作 何为操作? 计算是操作的一部分 所以 操作 一定是更大的概念
指的是CPU在执行算术或逻辑运算时能够处理的数据的位数。
操作位数可以是整数运算的位数,也可以是浮点运算的位数,具体取决于操作的类型。
应用上的区别:
- 机器字长:影响的是CPU在执行任何类型的操作时,数据传输和处理的基本单位。例如,一个32位的CPU在处理数据时,无论是整数还是浮点数,都会以32位为基本单位。
- 操作位数:更具体地指明了在特定运算(如算术运算或逻辑运算)中,CPU能够处理的数据的位数。例如,即使CPU的机器字长是32位,它也可能支持64位的浮点运算。
所以咱就记住操作包含的运算类型 更广 更大 但同时的要求也更高
硬件设计上的区别:
- 机器字长:在硬件设计中,机器字长决定了CPU内部寄存器的大小、数据总线的宽度以及内存地址的寻址能力,这是不能够 再变的了
- 操作位数:在硬件设计中,操作位数可能需要额外的硬件支持,特别是对于浮点运算。例如,一个CPU可能有一个32位的机器字长,但为了支持64位的浮点运算,它可能需要一个64位的浮点寄存器。这是灵活可变的
操作位数通常与机器字长相等,但在某些情况下,如使用扩展指令集时,操作位数可能会更大。
指令字长
指令的字长
指令字长是一个指令所包含的二进制位数。
指令的长度 他不一定等于或者小于MDR 不是说他存主存里吗
是 但是指令也可以分段存啊 这个时候可能需要多次读取主存才能获得完整指令
它决定了CPU一次能够处理的指令的复杂程度。指令字长越长,通常意味着指令可以包含更多的操作和数据,从而提高程序的执行效率。
数据通路带宽
“数据的宽度”
数据通路带宽是指数据总线一次能并行传送信息的位数。
由于数据必须经过cPU(不然人家算啥呀)所以数据通路带宽必须等于机器字长
它直接影响到计算机的有效处理速度。而外部数据通路带宽则等于系统数据总线一次所能并行传送的信息位数。
另外,利用了工作之余的一点点时间,整理了一套考研408的知识图谱,
我根据这一套知识图谱打造了这样一个408知识图谱问答系统
里面的每一个回答都是根据考研408的考点回复的