1.1 机器语言
每一种处理器,由于硬件设计和内部结构不同,就需要使用不同的电平脉冲来控制,使它工作。每一种微处理器都有自己的机器指令集,也就是机器语言。
我有限的认识当中,了解的CPU体系结构就两个,intel的x86架构和arm公司的arm架构,虽然我没有接触过arm处理器,但据我猜想,这两个不同的CPU架构的指令集应该是不同的。
1.2 汇编语言的产生
汇编指令和机器指令的差别在于指令的表示方法上。汇编指令是机器指令便于记忆的书写格式。
1.3 汇编语言的组成
汇编语言发展至今,由以下3类指令组成。
汇编指令:机器码的助记符,由对应的机器码。
伪指令:没有对应的机器码,由编译器执行,计算机并不执行。
其他符号:如+、-、*、/等,由编译器识别,没有对应的机器码。
1.4 存储器
磁盘不同于内存,磁盘上的数据或程序如果不读到内存中,无法被CPU使用。
1.5 指令和数据
指令和数据是应用上的概念,在内存和磁盘中指令和数据都是一样的,都是二进制信息。CPU在工作时把有的信息看作指令,有的信息看作数据。
哪些二进制信息看作指令,哪些看作数据呢?根据后面的知识CS和IP指向的二进制信息是看作指令的。
1.6 存储单元
我通过《计算机组成原理》这本书,对存储单元的理解是:存储单元应该是内存最小的寻址单位。一个存储单元有多少个二进制位?如果内存是字节编址就是8位;如果是字编址就是16位(普遍1word=2byte=16bit)。
CPU中MAR、MDR这两个寄存器,跟内存联系比较紧密。MAR寄存器反映了内存的地址空间大小,也就是可以寻址多少个存储单元。MDR反映了存储单元的大小,也就是一个存储单元可以保存多少个比特位。
1.7 CPU对存储器的读写
CPU要想进行数据的读写,必须和外部器件进行下面3类信息的交互。
存储单元的地址(地址信息);
器件的选择,读或写的命令(控制信息);
读或写的数据(数据信息)。
总线从物理上讲,就是一根根导线的集合。根据传送信息的不同,从逻辑上又分为3类,地址总线、控制总线和数据总线。
每个CPU芯片都有许多管脚,这些管脚和总线相连。也可以说,这些管脚引出总线。一个CPU可以引出3种总线的宽度标志了这个CPU的不同方面的性能:
地址总线的宽度决定了CPU的寻址能力;
数据总线的宽度决定了CPU与其他器件进行数据传送时的一次数据传送量;
控制总线的宽度决定了CPU对系统中其他器件的控制能力。
1.8 地址总线
1.9 数据总线
1.10 控制总线
1.11 内存地址空间(概述)
什么是内存地址空间呢?举例来讲,一个CPU的地址总线宽度为10,那么可以寻址1024个内存单元,这1024个可寻址的内存单元就构成这个CPU的内存地址空间。
1.12 主板
1.13 接口卡
计算机系统中,所有可用程序控制其工作的设备,必须受到CPU控制。CPU对外部设备都不能直接控制,如显示器、音箱、打印机等。直接控制这些设备进行工作的是插在扩展槽上的接口卡。
可能是因为这本书主要介绍的汇编语言,对接口卡这段只是简要介绍,所以我看这小节的表述时挺费劲的,并不是内容多难,只是不通透,可能是因为简要介绍的缘故。
写点我从《计算机组成原理》上获得的自己的理解。接口卡肯定指的的是IO设备相关的知识。IO设备又两部分组成:机、电、光、磁部件和设备控制器。
机、电、光、磁部件属于纯硬件范畴,每个IO设备利用的机、电、光、磁的原理都不同,跟计算机也是间接联系,我也不是很懂。
设备控制器是每个IO设备都有的,我们安装操作系统时,安装的驱动程序就是负责跟设备控制器交换信息的。CPU执行IO指令时的地址信息、控制信息、数据信息就是经过驱动程序到达设备控制器,在驱动设备的机、电、光、磁部件。
其实关于IO设备我也有些问题没有想通透。设备控制器中包含多个寄存器,IO编址时是不是对设备控制器中的每个寄存器都编址?还是只对一个设备编址,设备中设备控制器内的多个寄存器,设备有自己的方法区分?《微机原理与接口技术》这本书可能有我想要的答案,因为跟我看的《计算机组成原理》这本书重复内容太多,加上没时间,电子书下载了暂时没看,这点细节等我有空看了找到答案再补充。
1.14 各类存储器芯片
从读写属性上分类:随机存储器(RAM)和只读存储器(ROM)
从功能和连接上分类:
随机存储器(RAM):用于存放CPU使用的绝大部分程序和数据。
装有BIOS(Basic Input/Output System,基本输入输出系统)的ROM:某些接口卡上也存储有相应的BIOS的ROM。
接口卡上的RAM:某些接口卡需要对大批量输入、输出数据进行暂时存储,在其上装有RAM。最典型的是显卡上的RAM,一般称为显存。
在我原本的认知里,计算机的存储器,只有内存(RAM)存放指令和数据;主板上的只读存储器(ROM)存放BIOS,用于开机自检,安装操作系统。对于某些接口卡可能存在ROM存放BIOS完全没有这个概念。对于显存知道这个是和显卡相关的,完全没想到它是一个RAM,而且不只是显卡可能其他的接口卡上也存在这样的RAM.
1.15 内存地址空间
上述存储器,在物理上是独立器件,但是在以下两点上相同。
都和CPU的总线相连。
CPU对他们进行读或写的时候都通过控制线发出内存读写命令。
CPU在操作这些存储器时,把它们当作内存看待,把它们总的看作一个由若干个存储单元组成的逻辑存储器,这个逻辑存储器就是我们所说的内存地址空间。每个物理存储器在这个逻辑存储器中占有一个地址段,即一段地址空间。CPU在这段地址空间读写数据,实际上就是在相应的物理存储器中读写数据。
据我所知,CPU的工作模式有三种:实模式、保护模式、虚拟8086模式。后两种模式是因为计算机的发展而诞生的。一开始CPU只有访问物理地址的实模式这一种工作方式,经典的CPU8086诞生后,因为它的地址线是20位,所以能访问1M的内存地址空间。随着CPU处理能力的提升,在32位、64位CPU工作在实模式时是不是也只能访问1M的空间?我隐约记得我看的某个资料上好像介绍了32位、64位CPU可以通过某种方式访问1M以外的空间,后续确认了我再来补充。
不管你的计算机是什么样的CPU,在刚开机时,你的CPU都是先运行在实模式,做好加载系统的准备工作,系统启动后都运行在保护模式,如果需要在保护模式运行一个DOS程序,那么windows将CPU切换到虚拟8086模式下运行该程序。