声明:本文转载自微信公众号SoftAuto文章《嵌入式软件时序(2)—— 微处理器结构》,略有改动。
硬件是软件运行的载体,嵌入式系统的时序自然要以处理器硬件为基础。本节我们以双核处理器为例介绍一下微处理器的结构。
下图显示了处理器的两个核、各种存储器、外围单元和两条不同的总线。注意: 并非所有的处理器都遵循这种结构。
每个处理器在其执行单元中都有一组特殊的存储单元,名为寄存器。一些常用的寄存器在下面有更详细的描述,详述如下:
1.程序计数器(Program Counter)
程序计数器(PC)通常也被称为 "指令指针"(IP)。程序存储器中的每条指令在存储器中都有一个特定的地址。PC包含当前正在处理的指令的地址。
2.数据寄存器(Data Register)
数据寄存器用于逻辑运算、计算,以及对存储器进行读写操作。
3.累加器(Accumulator)
尤其是RISC处理器有一个特殊的数据寄存器,即累加器。累加器用于大多数逻辑和算术操作。
4.地址寄存器(Address Register)
地址寄存器被用来从内存中读取数据,将数据写入内存,执行间接跳转,或间接调用函数。并非所有的处理器都区分了地址寄存器和数据寄存器。
5.状态寄存器(Status Register)
状态寄存器也可以被称为 "程序状态字"(PSW)、"条件代码寄存器"(CCR)或"标志寄存器"。它是一组数据位的集合,每位表示一个特定的状态。每位的作用就像一个标志,通常被缩写为一个或两个字母。它们所代表的状态取决于所使用的处理器,以下标志在大多数架构上是常见的:
6.当前CPU优先级
这个值在某些处理器上是一个单独的寄存器,而在其他处理器上则是状态寄存器的一部分。当前执行的代码的优先级决定了中断是否被接受。只有当中断的优先级高于当前执行的代码时,当前执行的代码才会被中断。这也意味着中断要先被使能(IE=1)。
7.堆栈指针(Stack Pointer)
堆栈指针包含一个地址,标志着到目前为止使用的堆栈的当前范围。
本期就介绍基本指令集分类和寄存器两个知识点,下期着重介绍寻址方式。
Peter Gliwa, 《Embedded Software Timing》
Schäuffele, 《Automotive Software Engineering》