对程序员来说CPU是什么
问题
1. 程序是什么?
2. 程序是由什么组成的?
3. 什么是机器语言?
4. 正在运行的程序存储在什么位置?
5. 什么是内存地址?
6. 计算机的构成元件中,负责程序的解释和运行的是哪个?
参考
1. 指示计算机每一步动作的一组指令
2. 指令和数据
3. CPU 可以直接识别并使用的语言
4. 内存
5. 内存中,用来表示命令和数据存储位置的数值
6. CPU
解析
- 一般所说的程序,譬如运动会、音乐会的程序等,指的是“行事的先后次序”。计算机程序也是一样的道理。
- 程序是指令和数据的组合体。例如,C语言“printf ("你好");”这个简单的程序中,printf是指令,"你好"是数据。
- CPU 能够直接识别和执行的只有机器语言。使用C、Java等语言编写的程序,最后都会转化成机器语言。
- 硬盘和磁盘等媒介上保存的程序被复制到内存后才能运行。
- 内存中保存命令和数据的场所,通过地址来标记和指定。地址由整数值表示。
- 计算机的构成元件中,根据程序的指令来进行数据运算,并控制整个计算机的设备称作CPU。大家熟知的奔腾(Pentium)就是CPU的一种。
1 CPU的内部结构解析
CPU的内部由寄存器、控制器、运算器和时钟四个部分构成,各部分之间由电流信号相互连通。
- 寄存器可用来暂存指令、数据等处理对象,可以将其看作是内存的一种。根据种类的不同,一个CPU内部会有20~100 个寄存器。
- 控制器负责把内存上的指令、数据等读入寄存器,并根据指令的执行结果来控制整个计算机。
- 运算器负责运算从内存读入寄存器的数据。
- 时钟负责发出CPU开始计时的时钟信号。不过,也有些计算机的时钟位于CPU的外部。
程序启动后,根据时钟信号,控制器会从内存中读取指令和数据。通过对这些指令加以解释和运行,运算器就会对数据进行运算,控制器根据该运算结果来控制计算机
主存
通常所说的内存指的是计算机的主存储器(main memory),简称主存。主存通过控制芯片等与CPU相连,主要负责存储指令和数据。主存由可读写的元素构成,每个字节(1字节 = 8位 )都带有一个地址编号。CPU可以通过该地址读取主存中的指令和数据,当然也可以写入数据。
主存位于计算机机体内部,是负责存储程序、数据等的装置。主存通常使用DRAM(Dynamic Random Access Memory,动态随机存取存储器)芯片。
DRAM可以对任何地址进行数据的读写操作,但需要保持稳定的电源供给并时常刷新(确保是最新数据),关机后内容将自动清除。
2 CPU是寄存器的集合体
程序是把寄存器作为对象来描述的
汇编语言采用助记符(memonic)来编写程序,每一个原本是电气信号的机器语言B指令都会有一个与其相应的助记符,助记符通常为指令功能的英语单词的简写。例如,mov和add分别是数据的存储(move)和相加(addition)的简写。汇编语言和机器语言基本上是一一对应的。
机器语言级别的程序是通过寄存器来处理的。也就是说,在程序员看来“CPU是寄存器的集合体”。至于控制器、运算器和时钟,程序员只需要知道CPU中还有这几部分就足够了。
寄存器中存储的内容既可以是指令也可以是数据。其中,数据分为“用于运算的数值”和“表示内存地址的数值”两种。
对程序员来说,CPU是什么呢?如图1-3所示,CPU是具有各种功能的寄存器的集合体。其中,程序计数器、累加寄存器、标志寄存器、指令寄存器和栈寄存器都只有一个,其他的寄存器一般有多个。