对程序员来说CPU是什么


问题

1. 程序是什么?
2. 程序是由什么组成的?
3. 什么是机器语言?
4. 正在运行的程序存储在什么位置?
5. 什么是内存地址?
6. 计算机的构成元件中,负责程序的解释和运行的是哪个?

参考

1. 指示计算机每一步动作的一组指令
2. 指令和数据
3. CPU 可以直接识别并使用的语言
4. 内存
5. 内存中,用来表示命令和数据存储位置的数值
6. CPU

解析

  1. 一般所说的程序,譬如运动会、音乐会的程序等,指的是“行事的先后次序”。计算机程序也是一样的道理。
  2. 程序是指令和数据的组合体。例如,C语言“printf ("你好");”这个简单的程序中,printf是指令,"你好"是数据。
  3. CPU 能够直接识别和执行的只有机器语言。使用C、Java等语言编写的程序,最后都会转化成机器语言。
  4. 硬盘和磁盘等媒介上保存的程序被复制到内存后才能运行。
  5. 内存中保存命令和数据的场所,通过地址来标记和指定。地址由整数值表示。
  6. 计算机的构成元件中,根据程序的指令来进行数据运算,并控制整个计算机的设备称作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是具有各种功能的寄存器的集合体。其中,程序计数器、累加寄存器、标志寄存器、指令寄存器和栈寄存器都只有一个,其他的寄存器一般有多个。



3 决定程序流程的程序计数器

posted @ 2024-06-05 23:58  guanyubo  阅读(8)  评论(0编辑  收藏  举报