基本的电脑操作问题,但我不知道怎么问。当我们说计算机具有指令集时,计算机如何知道该指令集是什么?它存储在ROM芯片中吗?它是否存储在CPU中的某个地方?制造商将它放在哪里以便它可以读取磁盘并开始处理机器代码?
7 回答
简短的回答:计算机处理器中的实际电路是“决定”指令集的东西。
相对简短的回答:在处理器上运行的软件在物理上只是电信号的模式。计算机中的晶体管每秒打开和关闭很多次,根据其他信号修改这些信号模式。例如,考虑一下mov
几乎在每个处理器上都可以找到的指令:
mov dest, src
这是由“存储”在内存中的某种电信号模式编码的。由于电路的接线方式,该信号模式以这样的方式激活某些晶体管的开和关,即存储在的信号与 的信号dest
匹配。src
长答案:参加计算机体系结构课程。:-)
指令集硬连线到 CPU 中……这实际上是电路构建方式的结果,没有保存指令的实际空间。
当计算机启动时,ROM 上有一个小程序,它知道如何初始化所有组件并启动操作系统。由于计算机的构建方式,该程序是第一个运行的。
听起来您将两个不同的概念混为一谈:
指令系统
指令集是 CPU 用来处理的机器代码指令集。CPU 不必从任何地方加载它,它是 CPU 本身内置的。指令集的示例有:Intel x86、MIPS。
引导加载程序
引导加载程序是一个小程序,它告诉 CPU 如何启动计算机。显然它是使用 CPU 指令集编写的,通常驻留在 ROM 或 EEPROM 中。它告诉 CPU 如何与磁盘交互以加载引导扇区(然后加载更多操作系统)。在 PC 上,引导加载程序是 BIOS 的一部分。
当我们说计算机具有给定的指令集时,它是指处理器可以理解的指令集(操作码)。机器经过数字化设计,可以理解它将能够接收的指令。当你设计一个CPU时,其中一个组件就是解码器,它是CPU中对电信号进行解码的部分;并执行那些信号(指令)指示它计算的计算。如果您对计算机的核心工作方式感兴趣,我建议您阅读CODE或The Elements of a Computing Systems
CPU 有一个特定的指令集,它知道如何执行。当您打开计算机时,必须向 CPU 提供指令。如果到达的指令执行引导过程是有意义的。这些指令从何而来?通常是 ROM(例如 EPROM)。
您编写代码,最终编译为汇编指令,汇编指令最终编译为“机器代码”。当 CPU 从内存中获取指令时,它会对其进行解码。解码过程最终会在处理器管道中设置各种控制位,这些控制位确定 CPU 的工作(加载/存储数据,对操作数进行数学运算等)。指令集决定了硬件的实现方式。它实际上是处理器能够“在硬件中”执行的一组基本操作。
当处理器被描述为具有例如 6502 指令集时,这意味着如果处理器输出信号以从某个地址获取指令并接收某些数据作为返回(例如字节值 $A9),处理器的后续操作将如文档中所述。例如,6502 将从下一个地址获取一个字节,然后将该字节复制到累加器,同时为后续指令输出一条指令获取。
在大多数情况下,处理器不会获得指令集,就像灯泡获得将电转化为光的能力一样。处理器被构建为在接收某些输入时执行某些操作;虽然今天的处理器非常复杂,以至于它们的设计需要非常复杂的工具(不像'古代'时代,它们通常使用钢笔、铅笔和纸设计,并使用手工切割的红宝石薄膜来实现),但基本上处理器会做他们想做的事是为了做。