CN102262611A - 一种16位的risc cpu系统结构 - Google Patents
一种16位的risc cpu系统结构 Download PDFInfo
- Publication number
- CN102262611A CN102262611A CN201010183974XA CN201010183974A CN102262611A CN 102262611 A CN102262611 A CN 102262611A CN 201010183974X A CN201010183974X A CN 201010183974XA CN 201010183974 A CN201010183974 A CN 201010183974A CN 102262611 A CN102262611 A CN 102262611A
- Authority
- CN
- China
- Prior art keywords
- bus
- register
- address
- internal
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Executing Machine-Instructions (AREA)
Abstract
本发明公开了一种16位的RISC CPU结构,它具有数据总线输入输出缓冲、地址多路器、指令锁存及译码电路、寄存器地址译码电路、片内寄存器组、ALU、数据cache、常数发生器、内部数据总线接口。本发明的RISC CPU结构,通过指令锁存及译码电路产生源地址代码和目的地址代码以及寻址方式控制信号,并结合寄存器地址译码电路、片内寄存器组、ALU、数据cache、常数发生器、内部数据总线接口等模块,能实现灵活多变的寻址方式,如实现9种源操作数寻址方式和4种目的操作数寻址方式,从而提高16位的RISC CPU结构的编程设计的灵活性,提升指令的执行效率并节约程序代码空间。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种16位的RISC CPU系统结构。
背景技术
CPU是集成电路中最常见和应用最广泛的部件之一,在计算机、嵌入式系统、MCU和SOC芯片中随处可见。在这些应用场合中,CPU往往是系统或芯片的核心部件,起着关键作用。
CPU电路的设计首先取决于CPU结构的设计。不同结构的CPU,在电路实现、执行效率、编译器设计和软件编程等方面存在很大的差异。目前,主要有两种CPU结构:CISC(复杂指令集计算机)和RISC(精简指令集计算机)。CISC的主要特点是指令功能强大,指令集丰富,指令长度不相等,电路设计复杂,存储器-存储器操作较多,指令执行效率较低,但是相对来讲编程简单,代码长度短。RISC的主要特点是指令集精简,指令长度单一、格式规范,便于使用流水线结构,寻址方式简化,大量利用寄存器操作,存储器操作少,指令执行效率高。
RISC结构体系虽然具有上述诸多优点,但存在着汇编程序设计/编译器设计复杂、代码密度较低、生成的代码长度较长等缺点。由于传统RISC CPU结构体系本身指令集精简,寻址方式少,造成RISC CPU设计时编程的灵活性下降、工作量上升等缺陷。
发明内容
本发明的目的在于提供一种能提高编程灵活性的16位的RISC CPU结构。
本发明公开了一种16位的RISC CPU结构,它具有总线输入输出缓冲、地址多路器、指令锁存及译码电路、寄存器地址译码电路、片内寄存器组、ALU、数据cache、常数发生器、内部数据总线接口。其中,总线输入输出缓冲,用于传输CPU和外设之间的或指令;地址多路器,用于输出地址数据到与CPU连接的外部存储器;指令锁存及译码电路,连接于总线输入输出缓冲,用于依据指令输出读写控制信号,源地址代码和目的地址代码,以及寻址方式控制信号;寄存器地址译码电路,连接于指令锁存及译码电路,用于依据寻址方式控制信号及读写控制信号,对源地址代码及目的地址代码进行译码后输出片内寄存器组地址选通信号;片内寄存器组,连接于寄存器地址译码电路、内部数据总线接口和地址多路器,用于依据片内寄存器组地址选通信号,输入或输出数据;ALU,用于依据指令对输入的进行算术或逻辑运算后输出数据;数据Cache,用于数据暂存;常数发生器,用于产生常数;内部数据总线接口,用于对ALU、片内寄存器组、常数发生器及数据Cache之间的数据的传输。
进一步的,上述片内寄存器组具有通用寄存器组和特殊寄存器组。
进一步的,上述寄存器地址译码电路和片内寄存器组之间通过三组内部寄存器地址总线对片内寄存器组进行选通。
更进一步的,上述通用寄存器组的bank数目为N个,所述N为不小于1的自然数,每个通用寄存器组具有8个寄存器R0~R7,所述特殊寄存器组的bank数目为1个,所述特殊寄存器组具有PC、SP、SR、Rw、Rx、Ry、Rz特殊寄存器。且上述三组内部寄存器地址总线具有第一组内部寄存器地址总线、第二组内部寄存器地址总线及第三组内部寄存器地址总线。当所述通用寄存器组的bank数目为2个时,所述第一组内部寄存器地址总线具有第一、第二及第三子内部寄存器地址总线,所述第一子内部寄存器地址总线的位宽为7位,用于选通PC、SP、SR、Rw、Rx、Ry、Rz特殊寄存器,所述第二和第三子内部寄存器地址总线的位宽为8位,分别用于选通1个通用寄存器组;当所述通用寄存器组的bank数目为N个时,所述第一组内部寄存器地址总线具有第一、第二、…、第N+1子内部寄存器地址总线,所述第一子内部寄存器地址总线的位宽为7位,用于选通PC、SP、SR、Rw、Rx、Ry、Rz特殊寄存器,所述第二、第三、…、第N+1子内部寄存器地址总线的位宽为8位,分别用于选通1个通用寄存器组。当所述通用寄存器组的bank数目为2个时,所述第二组内部寄存器地址总选具有第一、第二及第三子内部寄存器地址总线,所述第一子内部寄存器地址总线的位宽为7位,用于选通PC、SP、SR、Rw、Rx、Ry、Rz特殊寄存器,所述第二和第三子内部寄存器地址总线的位宽为8位,分别用于选通1个通用寄存器组;当所述通用寄存器组的bank数目为N个时,所述第二组内部寄存器地址总线具有第一、第二、…、第N+1子内部寄存器地址总线,所述第一子内部寄存器地址总线的位宽为7位,用于选通PC、SP、SR、Rw、Rx、Ry、Rz特殊寄存器,所述第二、第三、…、第N+1子内部寄存器地址总线的位宽为8位,分别用于选通1个通用寄存器组。当所述通用寄存器组的bank数目为2个时,所述所述第三组内部寄存器地址总选具有第一、第二及第三子内部寄存器地址总线,所述第一子内部寄存器地址总线的位宽为2位,用于选通PC、SP特殊寄存器,所述第二和第三子内部寄存器地址总线的位宽为8位,用于选通1个通用寄存器组;当所述通用寄存器组的bank数目为N个时,所述第三组内部寄存器地址总线具有第一、第二、…、第N+1子内部寄存器地址总线,所述第一子内部寄存器地址总线的位宽为7位,用于选通PC、SP、SR、Rw、Rx、Ry、Rz特殊寄存器,所述第二、第三、…、第N+1子内部寄存器地址总线的位宽为8位,分别用于选通1个通用寄存器组。
本发明的16位的RISC CPU结构,通过指令锁存及译码电路产生源地址代码和目的地址代码以及寻址方式控制信号,并结合寄存器地址译码电路、片内寄存器组、ALU、数据cache、常数发生器、内部数据总线接口等模块,能实现灵活多变的寻址方式,如实现9种源操作数寻址方式和4种目的操作数寻址方式,从而提高16位的RISC CPU结构的编程设计的灵活性,提升指令的执行效率并节约程序代码空间。
附图说明
图1为本发明16位的RISC CPU的结构示意图;
图2为图1中数据总线输入输出缓冲模块结构示意图;
图3为图1中指令锁存和译码模块结构示意图;
图4为本发明运行RISC指令的4级流水线示意图;
图5为图1中寄存器地址译码电路模块结构示意图;
图6为图1中与ALU相关的总线结构示意图;
图7为图1中内部数据总线接口模块示意图;
图8为图1中ALU和内部寄存器组接口示意图;
图9为图1中ALU和内部寄存器内的SR寄存器接口示意图;
图10为图1中数据Cache模块结构示意图。
图11为图1中常数发生器结构示意图。
图12为图1中片内寄存器组结构示意框图
图13为图1中地址多路器结构示意图。。
具体实施方式
下面结合附图详细说明本发明的16位RISC CPU结构。
如附图1所示,本发明的16位RISC CPU结构的主要包括:数据总线输入输出缓冲模块、指令锁存及译码模块、寄存器地址译码电路模块、16位ALU模块、内部数据总线接口模块、数据Cache模块、常数发生器CONT模块、片内寄存器组模块(多个BANK的通用寄存器组和一个BANK的特殊寄存器组)、地址多路器模块、以及实现上述单元模块之间数据传输的内部总线A_BUS、B_BUS、C_BUS、D_BUS、DIN_BUS、S_BUS、FI_BUS、FO_BUS、F_WBUS、F_RBUS、I_BUS、In_BUS、R_BUS等,内部寄存器地址总线a1_bus、a2_bus、a3_bus,和多路二选一阵列MUX_A、MUX_B、MUX_C等。下面详细的对RISCCPU结构内的主要模块进行详细介绍。
一、数据总线输入输出缓冲模块:
用于实现CPU内外数据交换,其结构示意框图如附图2所示。附图2中,当Data_OEN有效时,CPU对外输出数据,S_BUS上的数据通过输出缓冲单元输出到数据总线DB_BUS上;而DB_BUS上的数据总是能通过输入缓冲单元输入到数据总线DIN_BUS上。
二、指令锁存和译码模块:
用于锁存指令代码并对其进行译码产生控制CPU数据流的各个微控制信号以及送出指令代码中的源地址代码和目的地址代码,其结构示意图如附图3所示。
本发明主要列出和寻址方式相关的微控制指令,包括:(1)寻址方式控制信号,控制寄存器地址译码;(2)常数发生指令,控制常数发生器产生相应的常数;(3)各二选一MUX阵列的选择信号,用于控制各MUX阵列选择不同的数据通路;(4)读写控制信号R/Wn,控制CPU对内部寄存器或外设存储器的读写。(5)其他控制指令,实现ALU的各个逻辑或算术运算功能。通过这些微控制信号的配合,可以实现本发明各种源操作数寻址方式和目的操作数寻址方式。
附图3中,采用了两级cache对指令代码进行锁存,第一级发生在取指阶段,将指令代码锁存在指令寄存器中,第二级发生在执行阶段,将指令代码中的源地址和目的地址代码锁存在寄存器地址cache中,利用寄存器地址cache的缓冲,可以实现RISC指令的4级流水线,如附图4所示。
接着对附图4做进一步的阐述,通过延时电路实现指令锁存滞后于系统时钟,而寄存器地址锁存发生在指令锁存之前,这样在进行指令锁存和译码阶段,寄存器地址cache中的内容不会发生变化,因此在对当前指令进行锁存和译码时,是在进行上条指令的执行和回写过程。
三、寄存器地址译码电路模块
寄存器地址译码电路模块,在寻址方式控制信号的作用下,对锁存的源地址代码和目的地址代码进行译码,通过3组内部寄存器地址总线即第一、第二、第三组内部寄存器地址总线a1_bus、a2_bus、a3_bus,用于选通内部寄存器组内的不同的寄存器单元,其具体工作原理如附图5所示。
对附图5中源地址代码和目的地址代码的编码方式进行解释:本发明实施例中的RISC指令采用了6位源地址和5位目的地址代码的编码方式,从而可以实现9种源操作数寻址方式和4种目的操作数寻址方式。9种源地址寻址方式和源地址代码对应关系如下:
寻址方式 | 寻址方式控制位 | 寄存器地址位 | 备注 |
寄存器模式 | 000 | xxx | 针对通用寄存器 |
4种目的地址寻址方式和目的地址代码对应关系如下:
在不违背本发明宗旨的前提下,可根据需要对寻址方式和代码对应关系做出相应更改。
对附图5的寻址方式控制信号信号进行解释,其中寻址方式控制信号有:
(1)Rn、Rn+、Rn-寻址方式读指令:在寄存器间接模式、寄存器增量模式、寄存器减量模式对Rn寄存器进行读操作时有效。
(2)对SP寻址读指令:在执行和堆栈相关指令如PUSH、POP、JSR、RET、RETI,对SP进行读操作时有效。
(3)Rn+、Rn-寻址方式写指令:在执行寄存器增量模式、寄存器减量模式对Rn寄存器进行回写操作时有效。
(4)对PC寻址写指令:PC内容需要读出或更新时有效,比如在执行子程序跳转指令JSR、中断返回RETI、子程序返回RET指令等。
(5)对SP寻址指令:SP内容需要读出或更新时有效,比如在执行PUSH、POP、RET、RETI指令时。
(6)对SR寻址指令:SR内容需要更新时有效,比如在执行RETI指令,恢复SR内容(TOS->SR)时。
BANK选择位:用于选择通用寄存器的bank,本发明实施例中定义了2个bank的通用寄存器组,BANK位的0/1决定了选择bank0通用寄存器还是bank1通用寄存器。
读写控制R/Wn:用于控制CPU对内部寄存器的读写操作,本发明实施例中,高电平表示对内部寄存器读有效,低电平表示对内部寄存器写有效。
a3_bus:和寄存器间接模式、寄存器间接增量模式、寄存器间接减量模式这3种寻址相关的一组内部寄存器地址总线,当该总线选择某个寄存器时,该寄存器的内容输出到第三内部总线R_BUS上。根据本发明内部寄存器资源的定义,a3_bus可分为3个子内部寄存器地址总线,分别为第一、第二、第三子内部寄存器地址总线a3_bus_spr、a3_bus_bank0、a3_bus_bank1:
(1)a3_bus_spr:用于选通特殊寄存器组,位宽为2,分别对应于PC和SP,涉及的寻址方式有立即数寻址方式(PC+)、寄存器增量模式SP+。
(2)a3_bus_bank0:用于选择bank0的8个寄存器组,位宽为8。
(3)a3_bus_bank1:用于选择bank1的8个寄存器组,位宽为8。
a1_bus:和第一内部总线I_BUS相关的一组寄存器地址总线。读操作时,读出选定的寄存器内容到内部总线I_BUS上。写操作时,将内部总线I_BUS上的内容写入到选定的寄存器中。a1_bus可分为3个子内部寄存器地址总线,分别为第一、第二、第三子内部寄存器地址总线a1_bus_spr、a1_bus_bank0、a1_bus_bank1:
(1)a1_bus_spr:用于选择特殊寄存器组,位宽为7,分别对应于7个特殊寄存器组(PC、SP、SR、Rw、Rx、Ry、Rz)。
(2)a1_bus_bank0:用于选择bank0的8个寄存器组,位宽为8。
(3)a1_bus_bank1:用于选择bank1的8个寄存器组,位宽为8。
a2_bus:和第二内部总线In_BUS相关的一组寄存器地址总线,读操作时,读出选定的寄存器内容到内部总线In_BUS上。写操作时,将内部总线In_BUS上的内容写入到指针指向的寄存器(由于内部寄存器采用的是RAM结构,因此对内部寄存器进行写操作时,a1_bus和a2_bus必须指向同一个寄存器,同时I_BUS和In_BUS上的内容必须互反。)同样的a2_bus可分为3个子内部寄存器地址总线,分别为第一、第二、第三子内部寄存器地址总线a2_bus_spr、a2_bus_bank0、a2_bus_bank1:
(1)a2_bus_spr:用于选择特殊寄存器组,位宽为7。
(2)a2_bus_bank0:用于选择bank0的8个寄存器组,位宽为8。
(3)a3_bus_bank1:用于选择bank1的8个寄存器组,位宽为8。
附图5中,组合译码逻辑1根据输入的寻址方式控制指令Rn、Rn+、Rn-寻址方式读指令和对SP寻址读指令、BANK选择位对应a3_bus总线,用于选择内部寄存器输出数据到内部总线R_BUS上,用作跳转的目的地址。其译码选通对应关系如下表所示:
附图5中,组合译码逻辑2在读写控制R/Wn的控制下,对送入的6位源地址代码以及BANK选择位进行译码,通过源寄存器总线sop_adr_bus选择源寄存器。
附图5中,MUX_D用于选择目的地址是从源地址代码中产生还是从目的地址代码中产生。这是根据本发明所涉及的寄存器增量模式和寄存器减量模式这两种特殊寻址方式而设计的。当指令涉及这两种寻址方式时,即Rn+、Rn-寻址方式写指令有效时,MUX_D选择源地址代码用作跳转的目的地址,将Rn加减后的内容回写至源寄存器Rn;当Rn+、Rn-寻址方式写指令无效时,MUX_D选择目的地址代码用作跳转的目的地址。
附图5中,组合译码逻辑3根据送入的目的地址以及寻址方式控制信号(对PC地址写指令、对SR地址写指令、对SP地址写指令)进行地址译码,以产生跳转目的地址,并通过内部寄存器地址总线a2_bus选通内部寄存器对应的寄存器,其译码选通对应关系如下:
寻址方式控制信号 | 寄存器选通 | 备注 |
对PC寻址指令有效 | PC←→In_BUS | 针对PUSH、POP、RETI、 |
附图5中,MUX_E主要用于寄存器回写时,通过内部寄存器地址总线a2_bus选通对应的目的寄存器。这个选择过程在系统时钟的控制下进行,本发明实施例中,指令的执行过程是在系统时钟的高电平进行,因此在系统时钟的高电平时,MUX_E选择源寄存器总线sop_adr_bus并从a1_bus输出,选择源寄存器,进行取源操作数过程;在系统时钟的低电平时,MUX_E选择目的地址总线a2_bus并从a1_bus的输出,选择目的寄存器,进行回写过程。
四、16位ALU模块
在指令译码产生的微指令控制下,执行程序设定的算术或逻辑运算单元,本发明实施例中所涉及的相对寻址、判断跳转类寻址等偏移量计算均是通过ALU来进行。和ALU相关的总线结构示意图如附图6所示。
ALU数据来源,主要有操作数A、操作数B以及各个输入标志位。其中:
操作数A:通过MUX_C选择阵列对外部数据(来自DIN_BUS)或内部寄存器数据(来自C_BUS)进行选择。
操作数B:通过MUX_D选择阵列对外部数据(来自DIN_BUS)或内部寄存器数据(来自D_BUS)进行选择。
输入标志位:主要有进位标志Cin、零标志Zin、溢出标志Vin、符号标志Nin等来自FI_BUS,由内部状态寄存器的标志位,通过内部数据总线接口缓冲输出。
ALU的输出,主要有运算结果Sout和运算产生的各个输出标志位,其中:运算结果Sout:送到S_BUS总线上,通过数据总线输入输出缓冲对外输出,或者通过内部数据总线接口送到内部寄存器总线即R_BUS上,写入到内部寄存器进行保存,或者输出到跳转cache进行保存,用作跳转目的地址。
输出标志位:主要是进位标志Cout、零标志位Zout、溢出标志位Vout、符号标志位Nout等,通过FO_BUS总线输出到内部数据总线接口,通过内部数据总线接口对内部状态寄存器进行标志位更新。
五、内部数据总线接口模块:
主要用于实现ALU和内部寄存器组之间的数据交换,其结构示意框图如附图7所示。根据其实现功能可以分为两个部分:一个部分负责ALU和内部寄存器进行数据交换,另外一个部分负责在运算过程中ALU和SR寄存器进行数据交换。
ALU和内部寄存器组进行数据交换:分为内部寄存器写入缓冲和内部寄存器读出缓冲两个通道,在REG_WnR信号的控制下,进行写入或读出操作,如附图8所示。本发明实施例中,当REG_WnR为低时,执行写入操作,将S_BUS总线上的内容通过写入缓冲一正一反送入内部数据总线I_BUS和In_BUS,将数据写入内部寄存器地址译码选通的相应的寄存器单元;当REG_WnR为高时,执行读出操作,将内部寄存器地址译码选通的寄存器单元内容通过读出缓冲分别送到C_BUS和D_BUS进行输出。读操作时,C_BUS和D_BUS总线上可以实现以下组合的数据输出:
C_BUS | D_BUS |
源寄存器数据 | 目的寄存器数据 |
数据cache数据 | 目的寄存器数据 |
常数发生器数据 | 目的寄存器数据 |
ALU和SR寄存器进行数据交换:主要体现在运算过程中,ALU读出SR寄存器中的标志位,进行算术或逻辑运算,再将运算后产生的标志位写入SR寄存器,这个过程只影响标志位;同时考虑到中断返回执行恢复现场时,如执行POP SR指令,这个过程会影响包括标志位在内的所有状态寄存器位。因此SR寄存器的写入通道分为非标志位写入通道和标志位写入通道,而ALU读SR标志位则通过读SR通道,在SR读出时钟控制下进行,如附图9所示。
对附图9做进一步描述:在SR更新有效使能时,SR寄存器的内容全部得到更新,此时SR更新使能和标志位更新使能均有效,标志位更新通道选择数据来源来自I_BUS,即更新的数据源来自内部总线I_BUS(更具体的,数据可来自数据cache或者内部寄存器),根据I_BUS上的数据对SR寄存器执行置位或复位动作;当SR更新使能无效时,但标志位更新使能有效,此时标志位更新通道选择数据来源来自ALU标志位输出总线FO_BUS,根据ALU运算产生的标志数据对SR寄存器的各个标志位执行置位或复位动作;当SR更新使能和标志位更新使能均无效时,SR_Write_BUS(即图1中的F_WBUS)输出无效数据,不对SR寄存器进行置位或复位动作,SR寄存器内容保持不变。
当然,内部数据总线接口可用于对所述ALU、片内寄存器组、常数发生器及数据Cache之间的数据的传输。
六、数据Cache模块
用作指令执行过程中的流水线缓冲,避免流水线冲突,提高指令执行效率,其结构示意框图如附图10所示。图中的In_BUS和I_BUS数据总线是连接内部寄存器组、常数发生器的两条内部数据总线,DIN_BUS是数据总线输入输出缓冲模块连接数据Cache的数据输入总线。通过MUX_C,数据Cache的数据来源可以来自内部寄存器组或者常数发生器(通过In_BUS获取),也可以来自外部存储器(通过DIN_BUS获取)。数据Cache的读写通过Cache_R和Cache_W控制信号来实现,当Cache_R有效时,数据Cache保持的数据输出到I_BUS总线上;当Cache_W有效时,MUX_C选通的数据被写入到数据Cache进行保存。
七、常数发生器模块:
用于产生指令执行过程中常用的常数,本发明中可以实现多达8个常数,其结构示意框图如附图11所示。常数代码通过常数发生器,可以产生8个常数,在Cont_OEN控制信号有效时输出到I_BUS和In_BUS,此时I_BUS和In_BUS是两组互反的数据。常数代码来自源地址代码,是源地址寻址方式中常数模式的特定组合代码,具体请参考源寻址方式和源地址代码对应表;当源地址代码符合常数代码组合时,指令译码产生有效的Cont_OEN控制信号,将常数发生器产生的常数送到I_BUS或In_BUS上。本发明实施例中实现的8个常数分别是:0H、1H、2H、4H、8H、100H、200H、FFFFH;当然也可以根据具体情况产生不同于上述8个常数之组合。
八、内部寄存器组模块
内部寄存器组模块内置多个内部寄存器,具体包括一个BANK的特殊寄存器组和多个BANK的通用寄存器组,其结构示意框图如附图12所示。片内寄存器模块包括特殊寄存器组和通用寄存器组,其中通用寄存器组可以根据需求扩展为N组,其中N为不小于1的自然数。特殊寄存器组是用作特殊目的的寄存器,共有7个,分别是:程序计数器PC、状态寄存器SR、堆栈指针SP、公共寄存器组Rw、Rx、Ry、Rz。通用寄存器组每个BANK有8个寄存器,按地址顺序排列为R0~R7。本发明实施例中,通用寄存器的BANK通过状态寄存器的BANK选择位来实现。在同一指令周期内,ALU可以分别同时访问特殊寄存器组和通用寄存器组,或者同时访问两组特殊寄存器,或者同时访问两组同一BANK里的通用寄存器,但是不能同时访问不同BANK内的两组通用寄存器。下面对bank进行解释说明,在存储器芯片的内部,存储的数据是以位(bit)为单位写入一张大的矩阵中,每个存储单元我们称为CELL,只要指定一个行(Row),再指定一个列(Column),就可以准确定位到某个CELL,这就是内存寻址的基本原理。这个矩阵阵列我们就称为内存的BANK,也称之为逻辑BANK(Logical BANK)。逻辑BANK的地址线是通用的,只要再有一个逻辑BANK编号加以区别就可以了,在一个时钟周期内只允许对一个逻辑BANK进行操作(实际上芯片的位宽就是逻辑BANK的位宽),而不是芯片组对内存芯片内所有逻辑BANK同时操作。
程序计数器PC,是一组16bits的特殊寄存器,用于存放下条指令的地址,当复位信号有效时,PC被置初值,指向复位地址向量。当程序顺序执行时,通过PC相关逻辑自动递增,程序计数器自动增加。
状态寄存器SR,是一组16bits的特殊寄存器,用于存放CPU的状态标志位C、Z、N、V、I等,本发明实施例的定义如下:
堆栈指针SP,是一组16bits的特殊寄存器。系统堆栈是在系统调用子程序或进入中断服务子程序时,用于保护现场的一组寄存器堆。本发明实施例中采用软堆栈的方式,利用堆栈指针指向的RAM地址空间来进行现场保存。堆栈指针SP总是指向堆栈的顶部,系统在将数据压栈时,总是先将堆栈指针SP值递减,然后再将数据送到SP所指的RAM地址;将数据从堆栈中弹出时,先将数据从SP所指的RAM地址中读出,再将SP值递增。SP值的递增或递减由ALU来实现。由于堆栈指针SP在上电时未定义初始值,需要系统程序对其设置栈顶。
公共寄存器组Rw、Rx、Ry和Rz,分别是一组16bits的特殊寄存器,可用于保存运算结果或者实现寄存器之间的数据传递。比如本发明中,不同bank的通用寄存器在同一指令周期不能同时访问,通过公共寄存器可以实现不同bank的通用寄存器数据传递。
通用寄存器组R0~R7,分别是一组16bits的通用寄存器,用于快速运算过程中的数据存储。本发明实施例中共设计了2个bank通用寄存器组,每个bank可寻址8组寄存器空间。
如附图12所示,特殊寄存器和通用寄存器共用数据总线I_BUS、In_BUS和R_BUS,分别受{a1_bus_spr、a1_bus_bank0、…、a1_bus_bankN}、{a2_bus_spr、a2_bus_bank0、…、a2_bus_bankN}和{a3_bus_spr、a3_bus_bank0、…、a3_bus_bankN}进行选通,选通信号的地址译码可参考前述寄存器地址译码模块,其中N为大于2的自然数。
九、地址多路器模块:
选择访问的外设地址是来自内部寄存器组还是来自ALU运算后得到的跳转目的地址,其结构示意框图如附图13所示。其中R_BUS是来自内部寄存器,S_BUS是来自ALU运算结果输出,S_BUS上的数据输出到跳转目的cache保存进行暂存。根据指令译码,MUX_G选择R_BUS中的数据还是跳转目的cache中的数据作为目的地址,经过地址总线缓冲进行输出。
通过地址多路器选择可实现的寻址方式和地址数据来源对应关系表如下:
寻址方式 | 地址数据来源 | 备注 |
寄存器模式 | - | 无需访问外设地址 |
常数模式 | - | 无需访问外设地址 |
寄存器间接模式Rn | R_BUS | R_BUS上的数据用作指针,指向目的地址 |
寄存器增量模式Rn+ | R_BUS | R_BUS上的数据用作指针,指向目的地址 |
寄存器减量模式Rn- | R_BUS | R_BUS上的数据用作指针,指向目的地址 |
立即数模式#N | R_BUS | 寄存器增量模式特例(PC+) |
变址模式X(Rn) | 跳转目的cache | ALU计算出变址+寄存器内容后暂存在cache中 |
相对模式X(PC) | 跳转目的cache | 变址模式特例 |
绝对模式&ABS | 跳转目的cache | 绝对地址经过ALU传递后暂存在cache中 |
跳转类指令,如JMP、JSR、BEQ等指令 | 跳转目的cache | 跳转地址经ALU判断计算后暂存在cache中 |
十、寻址方式实现方法
1)目的操作数采用寄存器模式
源操作数采用寄存器模式
举例:ADD R2,R1
说明:源寄存器R1中保存的是源操作数,目的寄存器R2中保存的目的操作数;将源操作数和目的操作数进行相加,结果保存至目的寄存器R2。
操作过程:
(1)指令锁存。
(2)指令译码。
(3)执行运算:源地址代码和目的地址代码锁存,并进行地址译码。a1_bus、a2_bus选通内部寄存器R1和R2,分别将R1和R2的数据输出到I_BUS、In_BUS上;ALU通过内部数据总线接口以及MUX_A、MUX_B这两路MUX,读取I_BUS和In_BUS总线上的数据,执行加法运算。
(4)回写目的寄存器和状态标志位:寄存器地址译码电路中的MUX_E选择目的地址,实现a1_bus和a2_bus选择同一目的寄存器R2;运算结果S和标志位通过内部数据总线接口分别写入到目的寄存器R2和状态寄存器SR。源操作数采用常数模式
举例:ADD R2,#1
说明:源地址代码为常数#1的组合代码,目的寄存器R2中保存的是目的操作数;将目的操作数和常数#1进行相加后,结果保存至目的寄存器R2。
操作过程:
(1)指令锁存。
(2)指令译码。
(3)执行运算:源地址代码和目的地址代码锁存,并进行地址译码。由于源地址代码中对应的是常数#1的组合代码,因此常数发生器产生常数#1,在常数指令的控制下输出到内部总线I_BUS上;a2_bus选通目的寄存器R2,将R2内容输出到内部总线In_BUS上;ALU通过内部数据总线接口以及MUX_A、MUX_B这两路MUX,读取I_BUS和In_BUS总线上的数据,执行加法运算。
(4)回写目的寄存器和状态标志位:寄存器地址译码电路中的MUX_E选择目的地址,实现a1_bus和a2_bus选择同一目的寄存器R2;运算结果S和标志位通过内部数据总线接口分别写入到目的寄存器R2和状态寄存器SR。源操作数采用寄存器间接模式
举例:ADD R2,R1
说明:源寄存器R1中保存的是源间接地址,目的寄存器R2中保存的是目的操作数;将目的操作数和源间接地址指向的存储器中的源操作数进行相加,结果保存在目的寄存器R2中。
操作过程:
(1)指令锁存。
(2)指令译码,源地址寻址
产生Rn寻址方式读指令,在Rn寻址方式读指令的控制下,图5中的组合逻辑译码1产生有效的a3_bus选择信号,选通R1,将R1的内容输出到内部总线R_BUS上。由地址多路器选择R_BUS上的数据后进行缓冲输出,选定外部存储器,实现源地址寻址。
(3)执行运算:源地址代码和目的地址代码被锁存,进行地址译码,a2_bus选定R2,将R2内容读出到In_BUS上;同时读外部存储器,将数据读入到CPU的DIN_BUS总线上;ALU通过内部数据总线接口以及MUX_A、MUX_B这两路MUX选择通路,读入In_BUS和DIN_BUS总线上的数据,执行加法运算。
(4)回写目的寄存器和状态标志位:寄存器地址译码电路中的MUX_E选择目的地址,实现a1_bus和a2_bus选择同一目的寄存器R2;运算结果S和标志位通过内部数据总线接口分别写入到目的寄存器R2和状态寄存器SR。源操作数采用寄存器间接增量模式
举例:ADD R2,R1+
说明:源寄存器R1中保存的是源间接地址,目的寄存器R2中保存的是目的操作数;将目的操作数和源间接地址指向的存储器中的源操作数进行相加,结果保存在目的寄存器R2中;然后源寄存器R1中的间接地址自加。
操作过程:
(1)指令锁存。
(2)指令译码,源地址寻址。
产生Rn+寻址方式读指令,在Rn+寻址方式读指令的控制下,图5中的组合逻辑译码1产生有效的a3_bus选择信号,选通R1,将R1的内容输出到内部总线R_BUS上,由地址多路器选择R_BUS上的数据进行缓冲输出,选定外部存储器,实现源地址寻址。
(3)执行源寄存器自加运算,读源操作数
a)先进行源寄存器内容更新:源地址代码和目的地址代码被锁存,进行地址译码,a1_bus选定R1,在Rn+写指令的控制下,a2_bus也选定R1;将R1内容读出到In_BUS和I_BUS上;ALU通过内部数据总线接口以及MUX选择通路,读取I_BUS总线上的数据,执行自加运算。
b)同时读外部存储器,将R1指向的外部存储器的内容通过DB_BUS读入到CPU的DIN_BUS总线上;(步骤a和步骤b同时进行)
(4)回写源寄存器和写数据cache:自加运算的结果通过内部数据总线接口写入到源寄存器R1,实现源寄存器内容自加;同时DIN_BUS上的数据通过MUX_C选择后写入到数据cache中。
(5)执行运算:
Rn+写指令失效,a2_bus选择目的寄存器R2,R2内容输出到In_BUS上;产生有效的读数据cache指令,禁止a1_bus选择源寄存器,读数据cache指令将数据cache的内容输出到I_BUS上;ALU通过内部数据总线接口以及MUX选择通路,读取I_BUS和In_BUS总线上的数据,执行加法运算。
(6)回写目的寄存器和状态标志位:寄存器地址译码电路中的MUX_E选择目的地址,实现a1_bus和a2_bus选择同一目的寄存器R2;运算结果S和标志位通过内部数据总线接口分别写入到目的寄存器R2和状态寄存器SR。
源操作数采用寄存器间接减量模式
举例:ADD R2,R1-
说明:源寄存器R1中保存的是源间接地址,目的寄存器R2中保存的是目的操作数;将目的操作数和源间接地址指向的存储器中的源操作数进行相加,结果保存在目的寄存器R2中;然后源寄存器R1中的间接地址自减。
操作过程:
(1)指令锁存。
(2)指令译码,源地址寻址。
产生Rn+寻址方式读指令,在Rn-寻址方式读指令的控制下,图5中的组合逻辑译码1产生有效的a3_bus选择信号,选通R1,将R1的内容输出到内部总线R_BUS上。地址多路器选择R_BUS上的数据进行缓冲输出,选定外部存储器,实现源地址寻址。
(3)执行源寄存器自减运算,读源操作数
a)先进行源寄存器内容更新:源地址代码和目的地址代码被锁存,进行地址译码,a1_bus选定R1,在Rn-写指令的控制下,a2_bus也选定R1;将R1内容读出到In_BUS和I_BUS上;ALU通过内部数据总线接口以及MUX选择通路,读取I_BUS总线上的数据,执行自减运算。
b)同时读外部存储器,将R1指向的外部存储器的内容通过DB_BUS读入到CPU的DIN_BUS总线上。(步骤a和步骤b同时进行)
(4)回写源寄存器和写数据cache:自加运算的结果通过内部数据总线接口写入到源寄存器R1,实现源寄存器内容自减;同时DIN_BUS总线上的数据经MUX_C选择后写入到数据cache中。
(5)执行运算:
Rn-写指令失效,a2_bus选择目的寄存器R2,R2内容输出到In_BUS上;产生有效的读数据cache指令,禁止a1_bus选择源寄存器,读数据cache指令将数据cache的内容输出到I_BUS上;ALU通过内部数据总线接口以及MUX选择通路,读取I_BUS和In_BUS总线上的数据,执行加法运算。
(6)回写目的寄存器和状态标志位:寄存器地址译码电路中的MUX_E选择目的地址,实现a1_bus和a2_bus选择同一目的寄存器R2;运算结果S和标志位通过内部数据总线接口分别写入到目的寄存器R2和状态寄存器SR。
源操作数采用立即数模式
举例:ADD R2,#N
说明:指令下一行为立即数#N,目的寄存器R2中保存的是目的操作数;将目的操作数和立即数#N进行相加后,结果保存在目的寄存器R2中。
操作过程:是源操作数采用寄存器增量模式的特例,等效于ADD R2,PC+。
源操作数采用变址模式
举例:ADD R2,X(R1)
说明:指令的下一行为偏移量数据X,源寄存器R1中保存的是源参考地址,将源参考地址和偏移量数据X进行相加,得到源变址地址;目的寄存器R2保存的是目的操作数;将目的操作数和源变址地址指向的存储器中源操作数进行相加后,结果保存在目的寄存器R2中。
操作过程:
(1)指令锁存。
(2)指令译码。
(3)读偏移量X,计算源操作数跳转地址
源地址代码和目的地址代码锁存,并进行地址译码。从指令下条地址取偏移量X送到CPU的DIN_BUS总线上,a1_bus选定源寄存器R1,将R1的内容送到I_BUS上;ALU通过内部数据总线接口以及MUX选择通路,读取I_BUS和DIN_BUS总线上的数据,相加得到源操作数跳转地址,送到跳转cache中暂存。
(4)源地址寻址:地址多路器选择跳转cache后缓冲输出,选定外部存储器,实现源地址寻址。
(5)执行运算:
CPU对外部存储器进行读取,将数据读至内部总线DIN_BUS上。a2_bus选定目的寄存器R2,将数据输出到内部总线In_BUS。ALU通过内部数据总线接口和MUX选择通路,读取DIN_BUS和In_BUS总线上的数据,进行加法操作。
(6)回写目的寄存器和状态标志位:寄存器地址译码电路中的MUX_E选择目的地址,实现a1_bus和a2_bus选择同一目的寄存器R2;运算结果S和标志位通过内部数据总线接口分别写入到目的寄存器R2和状态寄存器SR。源操作数采用相对模式
举例:ADD R2,X(PC)
说明:指令的下一行为偏移量数据X,将当前PC的值和偏移量数据X进行相加,得到源相对地址;目的寄存器R2保存的是目的操作数;将目的操作数和源相对地址指向的存储器中源操作数进行相加后,结果保存在目的寄存器R2中。
操作过程:是源操作数采用变址模式的特例。
源操作数采用绝对模式
举例:ADD R2,&ABS
说明:指令的下一行为源操作数绝对地址,目的寄存器R2中保存的是目的操作数;将目的操作数和绝对地址指向的存储器中的源操作数进行相加后,结果保存在目的寄存器R2中。
操作过程:
(1)指令锁存。
(2)指令译码。
(3)读绝对地址
源地址代码和目的地址代码锁存;从指令下条地址取绝对地址送到CPU的DIN_BUS总线上,由ALU进行传递送入至地址多路器的跳转cache进行暂存。
(4)源地址寻址:地址多路器选择跳转cache数据进行缓冲输出,选定外部存储器,实现源地址寻址。
(5)执行运算:对目的地址代码进行译码,a2_bus选定目的寄存器R2,将R2内容读出到In_BUS上,同时CPU读取外部存储器内容至内部总线DIN_BUS;ALU通过内部数据总线接口及MUX选择通路,读取DIN_BUS和In_BUS总线上的数据,进行加法运算。
(6)回写寄存器:寄存器地址译码电路中的MUX_E选择目的地址,实现a1_bus和a2_bus选择同一目的寄存器R2;运算结果S和标志位通过内部数据总线接口分别写入到目的寄存器R2和状态寄存器SR。
2)目的操作数采用变址模式
源操作数采用寄存器模式
举例:ADD X(R2),R1
说明:指令的下一行为偏移量数据X,目的寄存器R2中保存的是目的参考地址;将目的参考地址和偏移量X相加得到目的变址地址;源寄存器R1中保存的是源操作数;将源操作数和目的变址地址指向的存储器中的目的操作数进行相加后,结果保存在目的变址地址指向的存储器中。
操作过程:
(1)指令锁存。
(2)指令译码
(3)读偏移量X,计算目的操作数跳转地址
源地址代码和目的地址代码锁存;从指令下条地址取偏移量X送到CPU的DIN_BUS总线上;对目的地址代码进行译码,a2_bus选定目的寄存器R2,将R2内容读出到In_BUS上;ALU通过内部数据总线接口以及MUX选择通路,读取DIN_BUS和In_BUS总线上的数据,进行相加得到目的地址,将目的地址送到跳转cache进行暂存。
(4)目的地址寻址:地址多路器选择跳转cache数据进行缓冲输出,选定外部存储器,实现目的地址寻址。
(5)执行运算:
对源地址代码进行译码,a1_bus选定源寄存器R1,将R1内容读出至I_BUS上,同时CPU读取外部存储器内容至内部总线DIN_BUS上;ALU通过内部数据总线接口以及MUX选择通路,读取DIN_BUS和I_BUS总线上的数据,进行加法运算。
(6)回写数据cache和状态标志位:禁止a1_bus和a2_bus选择任何内部寄存器,运算结果S通过内部数据总线接口送到内部总线In_BUS上,由MUX_C选择In_BUS作为输入,将运算结果写入到数据cache中;同时运算产生的标志位通过内部数据总线接口写入到状态寄存器SR。
(7)回写目的地址存储器:由步骤(4)中,已选定外部存储器,CPU将数据cache中的数据通过ALU读出后送到外部数据总线DB_BUS上,对目的地址存储器进行回写操作。
源操作数采用常数模式
举例:ADD X(R2),#1
说明:指令的下一行为偏移量数据X,目的寄存器R2中保存的是目的参考地址;将目的参考地址和偏移量X相加得到目的变址地址;将目的变址地址指向的存储器中的目的操作数和常数#1进行相加后,结果保存在目的变址地址指向的存储器中。
操作过程:
(1)指令锁存。
(2)指令译码。
(3)读偏移量X,计算目的操作数跳转地址:
源地址代码和目的地址代码锁存;从指令下条地址取偏移量X送到CPU的DIN_BUS总线上;对目的地址代码进行译码,a2_bus选定目的寄存器R2,将R2内容读出到In_BUS上;ALU通过内部数据总线接口以及MUX选择通路,读取DIN_BUS和In_BUS总线上的数据,进行相加得到目的地址,送到地址多路器的跳转cache进行暂存。
(4)目的地址寻址:地址多路器选择跳转cache数据进行缓冲输出,选定外部存储器。
(5)执行运算:
对源地址代码进行译码,由于源地址代码中对应的是常数#1的组合代码,因此常数发生器产生常数#1,在常数指令的控制下输出到内部总线I_BUS上;同时CPU读取外部存储器内容至内部总线DIN_BUS上;ALU通过内部数据总线接口以及MUX选择通路,读取DIN_BUS和I_BUS总线上的数据,进行加法运算。
(6)回写数据cache和状态标志位:禁止a1_bus和a2_bus选择任何内部寄存器,运算结果S通过内部数据总线接口送到内部总线In_BUS上,由MUX_C选择In_BUS作为输入,将运算结果写入到数据cache中;同时运算产生的标志位通过内部数据总线接口写入到状态寄存器SR。
(7)回写目的地址存储器:由步骤(4)中,已选定外部存储器,CPU将数据cache中的数据通过ALU读出后送到外部数据总线DB_BUS上,对目的地址存储器进行回写操作。
源操作数采用寄存器间接模式
举例:ADD X(R2),R1
说明:指令的下一行为偏移量数据X,目的寄存器R2中保存的是目的参考地址;将目的参考地址和偏移量X相加得到目的变址地址;源寄存器R1中保存的是源间接地址;将源间接地址指向的存储器中的源操作数和目的变址地址指向的存储器中的目的操作数进行相加,结果保存在目的变址地址指向的存储器中。
操作过程:
(1)指令锁存。
(2)指令译码,源地址寻址
产生Rn寻址方式读指令,在Rn寻址方式读指令的控制下,图5中的组合逻辑译码1产生有效的a3_bus选择信号,选通R1,将R1的内容输出到内部总线R_BUS上,由地址多路器选择R_BUS上的数据后进行缓冲输出,选定外部存储器1,实现源地址寻址。
(3)读源操作数
源地址代码和目的地址代码被锁存,同时CPU执行读操作,将外部存储器1的内容读入至内部总线DIN_BUS上,
(4)写数据cache:通过MUX_C选择DIN_BUS上的数据后写入数据cache中,将源操作数保存在数据cache中。
(5)读偏移量X,计算目的操作数跳转地址
CPU读取指令下条地址的偏移量X至DIN_BUS上;对目的地址代码进行译码,a2_bus选定目的寄存器R2,将R2内容读出到In_BUS上;ALU通过内部数据总线接口以及MUX选择通路,读取DIN_BUS和In_BUS总线上的数据,进行相加得到目的地址,送到地址多路器的跳转cache进行暂存。
(6)目的地址寻址:地址多路器选择跳转cache数据进行冲输出,选定外部存储器2,实现目的地址寻址。
(7)执行运算:
CPU读取外部存储器2内容至内部总线DIN_BUS上;禁止a1_bus选通任意内部寄存器,数据cache中的内容输出到内部总线I_BUS上;ALU通过内部数据总线接口以及MUX选择通路,读取DIN_BUS和I_BUS总线上的数据进行相加。
(8)写数据cache和状态标志位:禁止a1_bus和a2_bus选择任何内部寄存器,运算结果S通过内部数据总线接口送到内部总线In_BUS上,由MUX_C选择In_BUS作为输入,将运算结果写入到数据cache中;同时运算产生的标志位通过内部数据总线接口写入到状态寄存器SR。
(9)回写目的地址存储器:由步骤(6)中,已选定外部存储器,CPU将数据cache中的数据通过ALU读出后送到外部数据总线DB_BUS上,对目的地址存储器进行回写操作。
源操作数采用寄存器增量模式
举例:ADD X(R2),R1+
说明:指令的下一行为偏移量数据X,目的寄存器R2中保存的是目的参考地址;将目的参考地址和偏移量X相加得到目的变址地址;源寄存器R1中保存的是源间接地址;将源间接地址指向的存储器中的源操作数和目的变址地址指向的存储器中的目的操作数进行相加,结果保存在目的变址地址指向的存储器中;然后源寄存器R1中的间接地址自加。
操作过程:
(1)指令锁存。
(2)指令译码、源地址寻址
产生Rn+寻址方式读指令,在Rn+寻址方式读指令的控制下,图5中的组合逻辑译码1产生有效的a3_bus选择信号,选通R1,将R1的内容输出到内部总线R_BUS上。由地址多路器选择R_BUS上的数据进行缓冲输出,选定外部存储器1,实现源地址寻址。
(3)执行源寄存器自加运算,读源操作数
a)先进行源寄存器内容更新:源地址代码和目的地址代码被锁存,进行地址译码,a1_bus选定R1,在Rn+写指令的控制下,a2_bus也选定R1;将R1内容读出到In_BUS和I_BUS上;ALU通过内部数据总线接口以及MUX,读取I_BUS总线上的数据,执行自加运算。
b)同时读外部存储器1,将R1指向的外部存储器的内容通过DB_BUS读入到CPU的DIN_BUS总线上;(步骤a和步骤b同时进行)
(4)回写源寄存器和写数据cache:自加运算的结果通过内部数据总线接口写入到源寄存器R1,实现源寄存器内容自加;同时DIN_BUS总线上的数据经MUX_C选择后写入到数据cache中。
(5)读偏移量X,计算目的操作数跳转地址
CPU读取指令下条地址的偏移量X至DIN_BUS上;对目的地址代码进行译码,a2_bus选定目的寄存器R2,将R2内容读出到In_BUS上;ALU通过内部数据总线接口以及MUX选择通路,读取DIN_BUS和In_BUS总线上的数据,进行相加得到目的地址,送到地址多路器的跳转cache进行暂存。
(6)目的地址寻址:地址多路器选择跳转cache数据进行缓冲输出,选定外部存储器2,实现目的地址寻址。
(7)执行运算:CPU读取外部存储器2内容至内部总线DIN_BUS上;禁止a1_bus选通任意内部寄存器,数据cache中的内容输出到内部总线I_BUS上;ALU通过内部数据总线接口以及MUX选择通路,读取DIN_BUS和I_BUS总线上的数据进行相加。
(8)回写数据cache和状态标志位:禁止a1_bus和a2_bus选择任何内部寄存器,运算结果S通过内部数据总线接口送到内部总线In_BUS上,由MUX_C选择In_BUS作为输入,将运算结果写入到数据cache中;同时运算产生的标志位通过内部数据总线接口写入到状态寄存器SR。
(9)回写目的地址存储器:由步骤(6)中,已选定外部存储器,CPU将数据cache中的数据通过ALU读出后送到外部数据总线DB_BUS上,对目的地址存储器进行回写操作。
源操作数采用寄存器减量模式
举例:ADD X(R2),R1-
说明:指令的下一行为偏移量数据X,目的寄存器R2中保存的是目的参考地址;将目的参考地址和偏移量X相加得到目的变址地址;源寄存器R1中保存的是源间接地址;将源间接地址指向的存储器中的源操作数和目的变址地址指向的存储器中的目的操作数进行相加,结果保存在目的变址地址指向的存储器中;然后源寄存器R1中的间接地址自减。
操作过程:
(1)指令锁存。
(2)指令译码、源地址寻址
产生Rn-寻址方式读指令,在Rn-寻址方式读指令的控制下,图5中的组合逻辑译码1产生有效的a3_bus选择信号,选通R1,将R1的内容输出到内部总线R_BUS上。由地址多路器选择R_BUS上的数据进行缓冲输出,选定外部存储器1,实现源地址寻址。
(3)执行源寄存器自减操作,读源操作数
a)先进行源寄存器内容更新:源地址代码和目的地址代码被锁存,进行地址译码,a1_bus选定R1,在Rn-写指令的控制下,a2_bus也选定R1;将R1内容读出到In_BUS和I_BUS上;ALU通过内部数据总线接口以及MUX选择通路,读取I_BUS总线上的数据,执行自减运算。
b)同时读外部存储器1,将R1指向的外部存储器的内容通过DB_BUS读入到CPU的DIN_BUS总线上;(步骤a和步骤b同时进行)
(4)回写源寄存器和写数据cache:自加运算的结果通过内部数据总线接口写入到源寄存器R1,实现源寄存器内容自减;同时DIN_BUS总线上的数据经MUX_C选择后写入到数据cache中。
(5)读偏移量X,计算目的操作数跳转地址
CPU读取指令下条地址的偏移量X至DIN_BUS上;对目的地址代码进行译码,a2_bus选定目的寄存器R2,将R2内容读出到In_BUS上;ALU通过内部数据总线接口以及MUX选择通路,读取DIN_BUS和In_BUS总线上的数据,进行相加得到目的地址,送到地址多路器的跳转cache进行暂存。
(6)目的地址寻址:地址多路器选择跳转cache数据进行缓冲输出,选定外部存储器2,实现目的地址寻址。
(7)执行运算:CPU读取外部存储器2内容至内部总线DIN_BUS上;禁止a1_bus选通任意内部寄存器,数据cache中的内容输出到内部总线I_BUS上;ALU通过内部数据总线接口以及MUX选择通路,读取DIN_BUS和I_BUS总线上的数据进行相加。
(8)写数据cache和状态标志位:禁止a1_bus和a2_bus选择任何内部寄存器,运算结果S通过内部数据总线接口送到内部总线In_BUS上,由MUX_C选择In_BUS作为输入,将运算结果写入到数据cache中;同时运算产生的标志位通过内部数据总线接口写入到状态寄存器SR。
(9)回写目的地址存储器:由步骤(6)中,已选定外部存储器,CPU将数据cache中的数据通过ALU读出后送到外部数据总线DB_BUS上,对目的地址存储器进行回写操作。
源操作数采用立即数模式
举例:ADD X(R2),#N
说明:指令的下一行为立即数#N,紧接着下一行为偏移量数据X;目的寄存器R2中保存的是目的参考地址,将目的参考地址和偏移量X进行相加得到目的变址地址;将立即数#N和目的变址地址指向的存储器中的目的操作数进行相加后,结果保存在目的变址地址指向的存储器中。
操作过程:是源操作数采用寄存器增量模式特例,等效于ADDX(R2),PC+
源操作数采用变址模式:
举例:ADD X(R2),Y(R1)
说明:指令的下两行分别为偏移量数据Y、X;源寄存器R1中保存的是源参考地址数据,目的寄存器R2中保存的是目的参考地址;将偏移量Y和源参考地址相加得到源变址地址,将偏移量X和目的参考地址相加得到目的变址地址;将源变址地址指向的存储器中的源操作数和目的变址地址指向的存储器中的目的操作数进行相加,结果保持在目的变址地址指向的存储器中。
操作过程:
(1)指令锁存
(2)指令译码
(3)读偏移量Y,计算源操作数跳转地址
源地址代码和目的地址代码锁存,并进行地址译码。从指令下条地址取偏移量Y送到CPU的DIN_BUS总线上,a1_bus选定源寄存器R1,将R1的内容送到I_BUS上;ALU通过内部数据总线接口以及MUX选择通路,读取DIN_BUS和I_BUS总线上的数据,进行相加得到源操作数地址,送到跳转cache中暂存。
(4)源地址寻址:地址多路器选择跳转cache后缓冲输出,选定外部存储器1,实现源地址寻址。
(5)读源操作数:CPU将外部存储器1的内容读至内部总线DIN_BUS上。
(6)写数据cache:CPU将内部总线DIN_BUS上的数据保存至数据cache中,实现源操作数的暂存。
(7)读偏移量X,计算目的操作数跳转地址
从指令下两条地址取偏移量X送到CPU的DIN_BUS总线上,a2_bus选定目的寄存器R2,将R2的内容送到内部总线In_BUS上;ALU通过内部数据总线接口以及MUX选择通路,读取DIN_BUS和In_BUS总线上的数据,进行相加得到目的操作数地址,送到跳转cache中暂存。
(8)目的地址寻址:地址多路器选择跳转cache后缓冲输出,选定外部存储器2,实现目的地址寻址。
(9)执行运算:CPU读取外部存储器2内容至内部总线DIN_BUS上;禁止a1_bus选通任意内部寄存器,数据cache中的内容输出到内部总线I_BUS上;ALU通过内部数据总线接口以及MUX选择通路,读取DIN_BUS和I_BUS总线上的数据进行相加。
(10)写数据cache和状态标志位:禁止a1_bus和a2_bus选择任何内部寄存器,运算结果S通过内部数据总线接口送到内部总线In_BUS上,由MUX_C选择In_BUS作为输入,将运算结果写入到数据cache中;同时运算产生的标志位通过内部数据总线接口写入到状态寄存器SR。
(11)回写目的地址存储器:由步骤(8)中,已选定外部存储器,CPU将数据cache中的数据通过ALU读出后送到外部数据总线DB_BUS上,对目的地址存储器进行回写操作。
源操作数采用相对模式
举例:ADD X(R2),Y(PC)
说明:指令的下两行分别为偏移量数据Y、X;目的寄存器R2中保存的是目的参考地址;将偏移量Y和当前PC值相加得到源相对地址,将偏移量X和目的参考地址相加得到目的变址地址;将源相对地址指向的存储器中的源操作数和目的变址地址指向的存储器中的目的操作数进行相加,结果保持在目的变址地址指向的存储器中。
操作过程:是源操作数采用变址模式特例。
源操作数采用绝对模式
举例:ADD X(R2),&ABS
说明:指令的下一行为源绝对地址,紧接着下一行为偏移量数据X;目的寄存器R2中保存的是目的参考地址;将偏移量X加上目的参考地址,得到目的变址地址;将目的变址地址指向的存储器中的目的操作数和源绝对地址指向的存储器中的源操作数进行相加,结果保持在目的变址地址指向的存储器中。
操作过程:
(1)指令锁存。
(2)指令译码。
(3)读绝对地址
源地址代码和目的地址代码锁存;从指令下条地址取绝对地址送到CPU的DIN_BUS总线上,由ALU进行传递送入至地址多路器的跳转cache进行暂存。
(4)源地址寻址:地址多路器选择跳转cache数据进行缓冲输出,选定外部存储器1,实现源地址寻址。
(5)读源操作数:CPU将外部存储器1的内容读至内部总线DIN_BUS上。
(6)写数据cache:CPU将内部总线DIN_BUS上的数据保存至数据cache中,实现源操作数的暂存。
(7)读偏移量X,计算目的操作数跳转地址
从指令下两条地址取偏移量X送到CPU的DIN_BUS总线上,a2_bus选定目的寄存器R2,将R2的内容送到内部总线In_BUS上;ALU通过内部数据总线接口以及MUX选择通路,读取DIN_BUS和In_BUS总线上的数据,进行相加得到目的操作数地址,送到跳转cache中暂存。
(8)目的地址寻址:地址多路器选择跳转cache后缓冲输出,选定外部存储器2,实现目的地址寻址。
(9)执行运算:CPU读取外部存储器2内容至内部总线DIN_BUS上;禁止a1_bus选通任意内部寄存器,数据cache中的内容输出到内部总线I_BUS上;ALU通过内部数据总线接口以及MUX选择通路,读取DIN_BUS和I_BUS总线上的数据进行相加。
(10)写数据cache和状态标志位:禁止a1_bus和a2_bus选择任何内部寄存器,运算结果S通过内部数据总线接口送到内部总线In_BUS上,由MUX_C选择In_BUS作为输入,将运算结果写入到数据cache中;同时运算产生的标志位通过内部数据总线接口写入到状态寄存器SR。
(11)回写目的地址存储器:由步骤(8)中,已选定外部存储器,CPU将数据cache中的数据通过ALU读出后送到外部数据总线DB_BUS上,对目的地址存储器进行回写操作。
3)目的操作数采用相对模式
是目的操作数采用变址模式的特例,只是将变址模式中的寄存器Rn指定为PC。配合不同的源操作数寻址方式,共可以实现9种寻址方式,分别如下:
源操作数采用寄存器模式
源操作数采用常数模式
源操作数采用寄存器间接模式
源操作数采用寄存器增量模式
源操作数采用寄存器减量模:
源操作数采用立即数模式
源操作数采用变址模式
源操作数采用相对模式
源操作数采用绝对模式
4)目的操作数采用绝对模式
源操作数采用寄存器模式
举例:ADD&ABS,R1
说明:指令的下一行为目的绝对地址,源寄存器R1中保存的数据是源操作数;将目的绝对地址指向的存储器中的目的操作数和源操作数据相加,结果保存在目的绝对地址指向的存储器中。
操作说明:
(1)指令锁存。
(2)指令译码。
(3)读绝对地址
源地址代码和目的地址代码锁存;从指令下条地址取绝对地址送到CPU的DIN_BUS总线上,由ALU进行传递送入至地址多路器的跳转cache进行暂存。
(4)目的地址寻址:地址多路器选择跳转cache后缓冲输出,选定外部存储器,实现目的地址寻址。
(5)读目的操作数,执行运算:CPU读取外部存储器内容至内部总线DIN_BUS上;源寄存器地址译码,a1_bus选通源寄存器R1,将R1的内容送到内部总线I_BUS上;ALU通过内部数据总线接口以及MUX选择通路读取I_BUS和DIN_BUS总线上的数据进行相加。
(6)写数据cache和状态标志位:禁止a1_bus和a2_bus选择任何内部寄存器,运算结果S通过内部数据总线接口送到内部总线In_BUS上,由MUX_C选择In_BUS作为输入,将运算结果写入到数据cache中;同时运算产生的标志位通过内部数据总线接口写入到状态寄存器SR。
(7)回写目的地址存储器:由步骤(4)中,已选定外部存储器,CPU将数据cache中的数据通过ALU读出后送到外部数据总线DB_BUS上,对目的地址存储器进行回写操作。
源操作数采用常数模式
举例:ADD&ABS,#1
说明:指令的下一行为目的绝对地址,将目的绝对地址指向的存储中的目的操作数和常数#1相加,结果保存在目的绝对地址指向的存储器中。
操作说明:
(1)指令锁存。
(2)指令译码。
(3)读绝对地址
源地址代码和目的地址代码锁存;从指令下条地址取绝对地址送到CPU的DIN_BUS总线上,由ALU进行传递送入至地址多路器的跳转cache进行暂存。
(4)目的地址寻址:地址多路器选择跳转cache后缓冲输出,选定外部存储器,实现目的地址寻址。
(5)读目的操作数,执行运算:CPU读取外部存储器内容至内部总线DIN_BUS上;源寄存器地址译码,由于源地址代码中对应的是常数#1的组合代码,因此常数发生器产生常数#1,在常数指令的控制下输出到内部总线I_BUS上;ALU通过内部数据总线接口以及MUX选择通路读取I_BUS和DIN_BUS总线上的数据进行相加。
(6)写数据cache和状态标志位:禁止a1_bus和a2_bus选择任何内部寄存器,运算结果S通过内部数据总线接口送到内部总线In_BUS上,由MUX_C选择In_BUS作为输入,将运算结果写入到数据cache中;同时运算产生的标志位通过内部数据总线接口写入到状态寄存器SR。
(7)回写目的地址存储器:由步骤(4)中,已选定外部存储器,CPU将数据cache中的数据通过ALU读出后送到外部数据总线DB_BUS上,对目的地址存储器进行回写操作。
源操作数采用寄存器间接模式
举例:ADD&ABS,R1
说明:指令的下一行为目的绝对地址,源寄存器R1存储的是源间接地址;将目的绝对地址和源间接地址指向的存储器内容相加,结果保存在目的绝对地址指向的存储器中。
操作过程:
(1)指令锁存
(2)指令译码,源地址寻址
产生Rn寻址方式读指令,在Rn寻址方式读指令的控制下,图5中的组合逻辑译码1产生有效的a3_bus选择信号,选通R1,将R1的内容输出到内部总线R_BUS上。由地址多路器选择R_BUS上的数据后进行缓冲输出,选定外部存储器1,实现源地址寻址。
(3)读源操作数:源地址代码和目的地址代码被锁存,同时CPU执行读操作,将外部存储器1的内容读入至内部总线DIN_BUS上。
(4)写数据cache:通过MUX_C选择DIN_BUS上的数据后写入数据cache中,将源操作数保存在数据cache中。
(5)读绝对地址
从指令下条地址取绝对地址送到CPU的DIN_BUS总线上,由ALU进行传递送入至地址多路器的跳转cache进行暂存。
(6)目的地址寻址:地址多路器选择跳转cache后缓冲输出,选定外部存储器2,实现目的地址寻址。
(7)读目的操作数,执行运算:CPU读取外部存储器2内容至内部总线DIN_BUS上;禁止a1_bus选通任意内部寄存器,数据cache中的内容输出到内部总线I_BUS上;ALU通过内部数据总线接口以及MUX选择通路,读取DIN_BUS和I_BUS总线上的数据进行相加。
(8)写数据cache和状态标志位:禁止a1_bus和a2_bus选择任何内部寄存器,运算结果S通过内部数据总线接口送到内部总线In_BUS上,由MUX_C选择In_BUS作为输入,将运算结果写入到数据cache中;同时运算产生的标志位通过内部数据总线接口写入到状态寄存器SR。
(9)回写目的地址存储器:由步骤(6)中,已选定外部存储器2,CPU将数据cache中的数据通过ALU读出后送到外部数据总线DB_BUS上,对目的地址存储器进行回写操作。
源操作数采用寄存器增量模式
举例:ADD&ABS,R1+
说明:指令的下一行为目的绝对地址,源寄存器R1存储的是源间接地址;将目的绝对地址和源间接地址指向的存储器内容相加,结果保存在目的绝对地址指向的存储器中;然后源寄存器中的间接地址自加。
操作过程:
(1)指令锁存
(2)指令译码,源地址寻址
产生Rn+寻址方式读指令,在Rn+寻址方式读指令的控制下,图5中的组合逻辑译码1产生有效的a3_bus选择信号,选通R1,将R1的内容输出到内部总线R_BUS上。由地址多路器选择R_BUS上的数据进行缓冲输出,选定外部存储器1,实现源地址寻址。
(3)执行源寄存器自加运算,读源操作数
a)先进行源寄存器内容更新:源地址代码和目的地址代码被锁存,进行地址译码,a1_bus选定R1,在Rn+写指令的控制下,a2_bus也选定R1;将R1内容读出到In_BUS和I_BUS上;ALU通过内部数据总线接口以及MUX,读取I_BUS总线上的数据,执行自加运算。
b)同时读外部存储器1,将R1指向的外部存储器的内容通过DB_BUS读入到CPU的DIN_BUS总线上;(步骤a和步骤b同时进行)
(4)回写源寄存器和写数据cache:自加运算的结果通过内部数据总线接口写入到源寄存器R1,实现源寄存器内容自加;同时DIN_BUS总线上的数据经MUX_C选择后写入到数据cache中。
(5)读绝对地址
从指令下条地址取绝对地址送到CPU的DIN_BUS总线上,由ALU进行传递送入至地址多路器的跳转cache进行暂存。
(6)目的地址寻址:地址多路器选择跳转cache后缓冲输出,选定外部存储器2,实现目的地址寻址。
(7)读目的操作数,执行运算:CPU读取外部存储器2内容至内部总线DIN_BUS上;禁止a1_bus选通任意内部寄存器,数据cache中的内容输出到内部总线I_BUS上;ALU通过内部数据总线接口以及MUX选择通路,读取DIN_BUS和I_BUS总线上的数据进行相加。
(8)写数据cache和状态标志位:禁止a1_bus和a2_bus选择任何内部寄存器,运算结果S通过内部数据总线接口送到内部总线In_BUS上,由MUX_C选择In_BUS作为输入,将运算结果写入到数据cache中;同时运算产生的标志位通过内部数据总线接口写入到状态寄存器SR。
(9)回写目的地址存储器:由步骤(6)中,已选定外部存储器2,CPU将数据cache中的数据通过ALU读出后送到外部数据总线DB_BUS上,对目的地址存储器进行回写操作。
源操作数采用寄存器减量模式
举例:ADD&ABS,R1-
说明:指令的下一行为目的绝对地址,源寄存器R1存储的是源间接地址;将目的绝对地址和源间接地址指向的存储器内容相加,结果保存在目的绝对地址指向的存储器中;然后源寄存器中的间接地址自减。
操作过程:
(1)指令锁存
(2)指令译码,源地址寻址
产生Rn+寻址方式读指令,在Rn+寻址方式读指令的控制下,图5中的组合逻辑译码1产生有效的a3_bus选择信号,选通R1,将R1的内容输出到内部总线R_BUS上。由地址多路器选择R_BUS上的数据进行缓冲输出,选定外部存储器1,实现源地址寻址。
(3)执行源寄存器自加运算,读源操作数
a)先进行源寄存器内容更新:源地址代码和目的地址代码被锁存,进行地址译码,a1_bus选定R1,在Rn+写指令的控制下,a2_bus也选定R1;将R1内容读出到In_BUS和I_BUS上;ALU通过内部数据总线接口以及MUX,读取I_BUS总线上的数据,执行自减运算。
b)同时读外部存储器1,将R1指向的外部存储器的内容通过DB_BUS读入到CPU的DIN_BUS总线上;(步骤a和步骤b同时进行)
(4)回写源寄存器和写数据cache:自加运算的结果通过内部数据总线接口写入到源寄存器R1,实现源寄存器内容自减;同时DIN_BUS总线上的数据经MUX_C选择后写入到数据cache中。
(5)读绝对地址
从指令下条地址取绝对地址送到CPU的DIN_BUS总线上,由ALU进行传递送入至地址多路器的跳转cache进行暂存。
(6)目的地址寻址:地址多路器选择跳转cache后缓冲输出,选定外部存储器2,实现目的地址寻址。
(7)读目的操作数,执行运算:CPU读取外部存储器2内容至内部总线DIN_BUS上;禁止a1_bus选通任意内部寄存器,数据cache中的内容输出到内部总线I_BUS上;ALU通过内部数据总线接口以及MUX选择通路,读取DIN_BUS和I_BUS总线上的数据进行相加。
(8)写数据cache和状态标志位:禁止a1_bus和a2_bus选择任何内部寄存器,运算结果S通过内部数据总线接口送到内部总线In_BUS上,由MUX_C选择In_BUS作为输入,将运算结果写入到数据cache中;同时运算产生的标志位通过内部数据总线接口写入到状态寄存器SR。
(9)回写目的地址存储器:由步骤(6)中,已选定外部存储器2,CPU将数据cache中的数据通过ALU读出后送到外部数据总线DB_BUS上,对目的地址存储器进行回写操作。
源操作数采用立即数模式
举例:ADD&ABS,#N
说明:指令的下一行为目的绝对地址,紧接着下一行为立即数#N;将目的绝对地址和指向的存储器中的目的操作数和立即数#N相加,结果保存在目的绝对地址指向的存储器中。
操作过程:是源操作数采用寄存器增量模式特例,等效于ADD&ABS,PC+
源操作数采用变址模式
举例:ADD&ABS,X(R1)
说明:指令的下两行分别为偏移量数据X、目的绝对地址ABS;源寄存器R1中保存的是源参考地址数据,将偏移量X和源参考地址相加得到源变址地址,;将源变址地址指向的存储器中的源操作数和目的绝对地址指向的存储器中的目的操作数进行相加,结果保持在目的绝对地址指向的存储器中。
操作过程:
(1)指令锁存
(2)指令译码
(3)读偏移量X,计算源操作数跳转地址
源地址代码和目的地址代码锁存,并进行地址译码。从指令下条地址取偏移量X送到CPU的DIN_BUS总线上,a1_bus选定源寄存器R1,将R1的内容送到I_BUS上;ALU通过内部数据总线接口以及MUX选择通路,读取DIN_BUS和I_BUS总线上的数据,进行相加得到源操作数地址,送到跳转cache中暂存。
(4)源地址寻址:地址多路器选择跳转cache后缓冲输出,选定外部存储器1,实现源地址寻址。
(5)读源操作数:CPU将外部存储器1的内容读至内部总线DIN_BUS上。
(6)写数据cache:CPU将内部总线DIN_BUS上的数据保存至数据cache中,实现源操作数的暂存。
(7)读绝对地址
读绝对地址ABS送到CPU的DIN_BUS总线上,由ALU进行传递送入至地址多路器的跳转cache进行暂存。
(8)目的地址寻址:地址多路器选择跳转cache后缓冲输出,选定外部存储器2,实现目的地址寻址。
(9)执行运算:CPU读取外部存储器2内容至内部总线DIN_BUS上;禁止a1_bus选通任意内部寄存器,数据cache中的内容输出到内部总线I_BUS上;ALU通过内部数据总线接口以及MUX选择通路,读取DIN_BUS和I_BUS总线上的数据进行相加。
(10)写数据cache和状态标志位:禁止a1_bus和a2_bus选择任何内部寄存器,运算结果S通过内部数据总线接口送到内部总线In_BUS上,由MUX_C选择In_BUS作为输入,将运算结果写入到数据cache中;同时运算产生的标志位通过内部数据总线接口写入到状态寄存器SR。
(11)回写目的地址存储器:由步骤(8)中,已选定外部存储器2,CPU将数据cache中的数据通过ALU读出后送到外部数据总线DB_BUS上,对目的地址存储器进行回写操作。
源操作数采用相对模式
举例:ADD&ABS,X(PC)
说明:指令的下两行分别为偏移量数据X、目的绝对地址ABS;将偏移量X和当前PC值相加得到源相对地址;将源相对地址指向的存储器中的源操作数和目的绝对地址指向的存储器中的目的操作数进行相加,结果保持在目的绝对地址指向的存储器中。
操作过程:是源操作数采用变址模式特例。
源操作数采用绝对模式
举例:ADD&ABS1,&ABS2
说明:指令的下两行分别为源绝对地址ABS2、目的绝对地址ABS1;将目的绝对地址指向的存储器中的目的操作数和源绝对地址指向的存储器中的源操作数进行相加,结果保持在目的绝对地址指向的存储器中。
操作过程:
(1)指令锁存。
(2)指令译码。
(3)读源绝对地址
源地址代码和目的地址代码锁存;从指令下条地址取源绝对地址ABS2送到CPU的DIN_BUS总线上,由ALU进行传递送入至地址多路器的跳转cache进行暂存。
(4)源地址寻址:地址多路器选择跳转cache数据进行缓冲输出,选定外部存储器1,实现源地址寻址。
(5)读源操作数:CPU将外部存储器1的内容读至内部总线DIN_BUS上。
(6)写数据cache:CPU将内部总线DIN_BUS上的数据保存至数据cache中,实现源操作数的暂存。
(7)读目的绝对地址
读目的绝对地址ABS1送到CPU的DIN_BUS总线上,由ALU进行传递送入至地址多路器的跳转cache进行暂存。
(8)目的地址寻址:地址多路器选择跳转cache后缓冲输出,选定外部存储器2,实现目的地址寻址。
(9)执行运算:CPU读取外部存储器2内容至内部总线DIN_BUS上;禁止a1_bus选通任意内部寄存器,数据cache中的内容输出到内部总线I_BUS上;ALU通过内部数据总线接口以及MUX选择通路,读取DIN_BUS和I_BUS总线上的数据进行相加。
(10)写数据cache和状态标志位:禁止a1_bus和a2_bus选择任何内部寄存器,运算结果S通过内部数据总线接口送到内部总线In_BUS上,由MUX_C选择In_BUS作为输入,将运算结果写入到数据cache中;同时运算产生的标志位通过内部数据总线接口写入到状态寄存器SR。
(11)回写目的地址存储器:由步骤(8)中,已选定外部存储器,CPU将数据cache中的数据通过ALU读出后送到外部数据总线DB_BUS上,对目的地址存储器进行回写操作。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (15)
1.一种16位的RISC CPU系统结构,其特征在于,包括:
数据总线输入输出缓冲,用于传输CPU和外设之间的数据或指令;
地址多路器,用于输出地址数据到与CPU连接的外部存储器;
指令锁存及译码电路,连接于所述数据总线输入输出缓冲,用于依据所述指令输出读写控制信号,源地址代码和目的地址代码,以及寻址方式控制信号;
寄存器地址译码电路,连接于所述指令锁存及译码电路,用于依据所述寻址方式控制信号及读写控制信号,对所述源地址代码及目的地址代码进行译码后输出片内寄存器组地址选通信号;
片内寄存器组,连接于所述寄存器地址译码电路、内部数据总线接口和地址多路器,用于依据所述片内寄存器组地址选通信号,输入或输出数据;
ALU,用于依据所述指令对输入的数据进行算术或逻辑运算后输出数据;
数据Cache,用于数据暂存;
常数发生器,用于产生常数;
内部数据总线接口,用于对所述ALU、片内寄存器组、常数发生器及数据Cache之间的数据的传输。
2.如权利要求1所述的RISC CPU系统结构,其特征在于,所述寄存器地址译码电路和片内寄存器组之间通过三组内部寄存器地址总线对所述片内寄存器组进行选通。
3.如权利要求2所述的RISC CPU系统结构,其特征在于,所述片内寄存器组具有通用寄存器组和特殊寄存器组。
4.如权利要求3所述的RISC CPU系统结构,其特征在于,所述通用寄存器组的bank数目为N个,所述N为不小于1的自然数,每个bank通用寄存器组具有8个寄存器R0~R7,所述特殊寄存器组的bank数目为1个,所述特殊寄存器组具有PC、SP、SR、Rw、Rx、Ry、Rz特殊寄存器。
5.如权利要求4所述的RISC CPU系统结构,其特征在于,所述三组内部寄存器地址总线具有第一组内部寄存器地址总线、第二组内部寄存器地址总线及第三组内部寄存器地址总线。
6.如权利要求5所述的RISC CPU系统结构,其特征在于,当所述通用寄存器组的bank数目为2个时,所述第一组内部寄存器地址总线具有第一、第二及第三子内部寄存器地址总线,所述第一子内部寄存器地址总线的位宽为7位,用于选通PC、SP、SR、Rw、Rx、Ry、Rz特殊寄存器,所述第二和第三子内部寄存器地址总线的位宽为8位,分别用于选通1个通用寄存器组;当所述通用寄存器组的bank数目为N个时,所述第一组内部寄存器地址总线具有第一、第二、...、第N+1子内部寄存器地址总线,所述第一子内部寄存器地址总线的位宽为7位,用于选通PC、SP、SR、Rw、Rx、Ry、Rz特殊寄存器,所述第二、第三、...、第N+1子内部寄存器地址总线的位宽为8位,分别用于选通1个通用寄存器组,N为大于2的自然数。
7.如权利要求5所述的RISC CPU系统结构,其特征在于,当所述通用寄存器组的bank数目为2个时,所述第二组内部寄存器地址总选具有第一、第二及第三子内部寄存器地址总线,所述第一子内部寄存器地址总线的位宽为7位,用于选通PC、SP、SR、Rw、Rx、Ry、Rz特殊寄存器,所述第二和第三子内部寄存器地址总线的位宽为8位,分别用于选通1个通用寄存器组;当所述通用寄存器组的bank数目为N个时,所述第二组内部寄存器地址总线具有第一、第二、...、第N+1子内部寄存器地址总线,所述第一子内部寄存器地址总线的位宽为7位,用于选通PC、SP、SR、Rw、Rx、Ry、Rz特殊寄存器,所述第二、第三、…、第N+1子内部寄存器地址总线的位宽为8位,分别用于选通1个通用寄存器组,N为大于2的自然数。
8.如权利要求5所述的RISC CPU系统结构,其特征在于,当所述通用寄存器组的bank数目为2个时,所述所述第三组内部寄存器地址总选具有第一、第二及第三子内部寄存器地址总线,所述第一子内部寄存器地址总线的位宽为2位,用于选通PC、SP特殊寄存器,所述第二和第三子内部寄存器地址总线的位宽为8位,用于选通1个通用寄存器组;当所述通用寄存器组的bank数目为N个时,所述第三组内部寄存器地址总线具有第一、第二、...、第N+1子内部寄存器地址总线,所述第一子内部寄存器地址总线的位宽为7位,用于选通PC、SP、SR、Rw、Rx、Ry、Rz特殊寄存器,所述第二、第三、...、第N+1子内部寄存器地址总线的位宽为8位,分别用于选通1个通用寄存器组,N为大于2的自然数。
9.如权利要求5所述的RISC CPU系统结构,其特征在于,读写所述片内寄存器组的数据时,通过与所述片内寄存器组相连的三根内部总线来传输数据。
10.如权利要求9所述的RISC CPU系统结构,其特征在于,所述三跟内部总线具有第一内部总线、第二内部总线及第三内部总线。
11.如权利要求10所述的RISC CPU系统结构,其特征在于,所述片内寄存器通过所述第一内部总线及第二内部总线与所述数据cache、常数发生器及内部数据总线接口交换数据。
12.如权利要求10所述的RISC CPU系统结构,其特征在于,所述片内寄存器通过所述第三内部总线传输地址数据到所述地址多路器。
13.如权利要求1所述的RISC CPU系统结构,其特征在于,所述常数发生器用于产生8个常数,所述8个常数分别为0H、1H、2H、4H、8H、100H、200H、FFFFH。
14.如权利要求1所述的RISC CPU系统结构,其特征在于,所述地址多路器具有跳转cache,所述ALU直接输出数据到所述跳转cache中暂存。
15.如权利要求1所述的RISC CPU系统结构,其特征在于,所述源地址代码为6位,所述目的地址代码为5位。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010183974.XA CN102262611B (zh) | 2010-05-25 | 2010-05-25 | 一种16位的risc cpu系统结构 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010183974.XA CN102262611B (zh) | 2010-05-25 | 2010-05-25 | 一种16位的risc cpu系统结构 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102262611A true CN102262611A (zh) | 2011-11-30 |
CN102262611B CN102262611B (zh) | 2014-05-14 |
Family
ID=45009245
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010183974.XA Active CN102262611B (zh) | 2010-05-25 | 2010-05-25 | 一种16位的risc cpu系统结构 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102262611B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103970508A (zh) * | 2014-06-04 | 2014-08-06 | 上海航天电子通讯设备研究所 | 一种精简的微处理器ip核 |
CN104090740A (zh) * | 2014-05-27 | 2014-10-08 | 安徽师范大学 | 微控制器指令集的执行方法 |
CN107844321A (zh) * | 2016-09-21 | 2018-03-27 | 上海芯旺微电子技术有限公司 | 一种mcu处理系统 |
CN113434198A (zh) * | 2021-06-25 | 2021-09-24 | 深圳市中科蓝讯科技股份有限公司 | Risc-v指令处理方法、存储介质及电子设备 |
CN113760364A (zh) * | 2020-06-03 | 2021-12-07 | 广东高云半导体科技股份有限公司 | 逻辑器件的控制器 |
CN113961247A (zh) * | 2021-09-24 | 2022-01-21 | 北京睿芯众核科技有限公司 | 一种基于risc-v处理器的向量存/取指令执行方法、系统及装置 |
WO2022067510A1 (zh) * | 2020-09-29 | 2022-04-07 | 华为技术有限公司 | 一种处理器、处理方法及相关设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5481693A (en) * | 1994-07-20 | 1996-01-02 | Exponential Technology, Inc. | Shared register architecture for a dual-instruction-set CPU |
CN1447228A (zh) * | 2003-02-21 | 2003-10-08 | 中国航天科技集团公司第九研究院七七一研究所 | 一种16位微处理器的系统结构 |
CN1516001A (zh) * | 2003-01-08 | 2004-07-28 | 上海海尔集成电路有限公司 | 一种新型risc流水线微控制器构架及其操作方法 |
CN1766834A (zh) * | 2005-01-20 | 2006-05-03 | 西安电子科技大学 | 双算术逻辑单元精简指令集8位微控制器 |
US7577822B2 (en) * | 2001-12-14 | 2009-08-18 | Pact Xpp Technologies Ag | Parallel task operation in processor and reconfigurable coprocessor configured based on information in link list including termination information for synchronization |
-
2010
- 2010-05-25 CN CN201010183974.XA patent/CN102262611B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5481693A (en) * | 1994-07-20 | 1996-01-02 | Exponential Technology, Inc. | Shared register architecture for a dual-instruction-set CPU |
US7577822B2 (en) * | 2001-12-14 | 2009-08-18 | Pact Xpp Technologies Ag | Parallel task operation in processor and reconfigurable coprocessor configured based on information in link list including termination information for synchronization |
CN1516001A (zh) * | 2003-01-08 | 2004-07-28 | 上海海尔集成电路有限公司 | 一种新型risc流水线微控制器构架及其操作方法 |
CN1447228A (zh) * | 2003-02-21 | 2003-10-08 | 中国航天科技集团公司第九研究院七七一研究所 | 一种16位微处理器的系统结构 |
CN1766834A (zh) * | 2005-01-20 | 2006-05-03 | 西安电子科技大学 | 双算术逻辑单元精简指令集8位微控制器 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104090740A (zh) * | 2014-05-27 | 2014-10-08 | 安徽师范大学 | 微控制器指令集的执行方法 |
CN103970508A (zh) * | 2014-06-04 | 2014-08-06 | 上海航天电子通讯设备研究所 | 一种精简的微处理器ip核 |
CN107844321A (zh) * | 2016-09-21 | 2018-03-27 | 上海芯旺微电子技术有限公司 | 一种mcu处理系统 |
CN113760364A (zh) * | 2020-06-03 | 2021-12-07 | 广东高云半导体科技股份有限公司 | 逻辑器件的控制器 |
CN113760364B (zh) * | 2020-06-03 | 2022-06-17 | 广东高云半导体科技股份有限公司 | 逻辑器件的控制器 |
WO2022067510A1 (zh) * | 2020-09-29 | 2022-04-07 | 华为技术有限公司 | 一种处理器、处理方法及相关设备 |
CN113434198A (zh) * | 2021-06-25 | 2021-09-24 | 深圳市中科蓝讯科技股份有限公司 | Risc-v指令处理方法、存储介质及电子设备 |
CN113434198B (zh) * | 2021-06-25 | 2023-07-14 | 深圳市中科蓝讯科技股份有限公司 | Risc-v指令处理方法、存储介质及电子设备 |
CN113961247A (zh) * | 2021-09-24 | 2022-01-21 | 北京睿芯众核科技有限公司 | 一种基于risc-v处理器的向量存/取指令执行方法、系统及装置 |
CN113961247B (zh) * | 2021-09-24 | 2022-10-11 | 北京睿芯众核科技有限公司 | 一种基于risc-v处理器的向量存/取指令执行方法、系统及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102262611B (zh) | 2014-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102262611B (zh) | 一种16位的risc cpu系统结构 | |
KR101817397B1 (ko) | 하나의 아키텍처의 코드 모듈이 다른 아키텍처의 라이브러리 모듈을 사용할 수 있게 하는 아키텍처 간 호환성 모듈 | |
JP2021192257A (ja) | プログラム可能な最適化を有するメモリネットワークプロセッサ | |
CN100545804C (zh) | 一种基于cisc结构的微控制器及其指令集的实现方法 | |
CN109213723A (zh) | 用于具有安全、功率降低和性能特征的可配置空间加速器的处理器、方法和系统 | |
EP2372530A1 (en) | Data processing method and device | |
CN102750133B (zh) | 支持simd的32位三发射的数字信号处理器 | |
CN102541809B (zh) | 一种动态可重构处理器 | |
CN112579159A (zh) | 用于矩阵操作加速器的指令的装置、方法和系统 | |
CN106055308A (zh) | 用于低能加速器处理器架构的设备 | |
CN101739235A (zh) | 将32位dsp与通用risc cpu无缝混链的处理器装置 | |
US20140047218A1 (en) | Multi-stage register renaming using dependency removal | |
CN102184092A (zh) | 基于流水线结构的专用指令集处理器 | |
CN101122851A (zh) | 一种数据处理方法及处理器 | |
US20030005261A1 (en) | Method and apparatus for attaching accelerator hardware containing internal state to a processing core | |
CN101211256A (zh) | 一种专用双流水线risc指令系统及其操作方法 | |
CN108874730B (zh) | 一种数据处理器及数据处理方法 | |
CN102270112A (zh) | Risc微处理器指令译码电路 | |
CN104346132A (zh) | 应用于智能卡虚拟机运行的控制装置及智能卡虚拟机 | |
CN109614145B (zh) | 一种处理器核心结构及数据访存方法 | |
CN101313290B (zh) | 对仅m×n位外围设备执行n位写入访问的系统和方法 | |
CN103970508A (zh) | 一种精简的微处理器ip核 | |
CN109582364B (zh) | 基于忆阻器的精简指令集处理器 | |
CN104090740A (zh) | 微控制器指令集的执行方法 | |
CN103460181A (zh) | 集成电路器件和执行其位操纵的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 214135 -6, Linghu Avenue, Wuxi Taihu international science and Technology Park, Wuxi, Jiangsu, China, 180 Patentee after: China Resources micro integrated circuit (Wuxi) Co., Ltd Address before: 301 room 214000, information industry zone, Wuxi New District, Jiangsu Patentee before: WUXI CHINA RESOURCES SEMICO Co.,Ltd. |