本发明属于集成电路技术领域,特别是涉及一种8位risc-cpu系统。
背景技术:
随着集成电路的发展,集成芯片的应用越来越广泛,cpu是这些集成电路中最常见、最核心的部件,目前主要有cisc(复杂指令集)和risc(精简指令集)两种结构的cpu,两种架构的cpu各有各的特点,而risccpu凭借指令集精简、指令长度固定、译码系统小而简、绝大多数指令在一个周期内完成等优点,应用正在日益扩大。当然,risccpu也有缺点,比如寻址方式不够灵活,尤其是当数据存储器较大时,代码效率和寻址效率会降低。
技术实现要素:
本发明的目的在于提供一种8位risc-cpu系统,通过优化地址分区,生成一个无论数据存储器多大都不用切页、实现一条指令寻址的多映射区,并把使用频繁的特殊功能寄存器和部分通用寄存器放在该区,只有在用的单映射区的通用寄存器时切页,从而实现高效寻址,提高代码效率。
为解决上述技术问题,本发明是通过以下技术方案实现的:
本发明为一种8位risc-cpu系统,包括:
指令寄存器,所述指令寄存器用于寄存程序指令;
指令译码器,所述指令译码器用于翻译程序指令;
数据存储器寻址单元;所述数据存储器寻址单元根据指令寄存器内的程序指令选择寻址方式以及目标地址;
程序计数器,所述程序计数器用于提供下一条指令的地址,并根据指令寄存器内寄存的当前程序指令控制程序顺序执行或跳转;
累加器;所述累加器用于传输数据或存放运算结果;
算术逻辑运算单元,所述算术逻辑运算单元用于根据指令译码器翻译的指令选择数据存储器寻址单元指向地址所存储的数据,或者累加器内的数据,或者指令寄存器内的程序指令包含的立即数作为输入数据,进行算术或逻辑运算,并输出运算结果;
中断处理单元,所述中断处理单元用于处理中断事务;
堆栈处理单元,所述堆栈处理单元用于处理程序跳转时的压栈、出栈操作;
所述指令寄存器接收程序指令后传输至指令译码器以及算术逻辑运算单元;其中,所述指令译码器将程序指令翻译后传输至程序计数器;
所述数据存储器寻址单元将数据传输至累加器和算术逻辑运算单元。
优选地,所述数据存储器寻址单元包括4种寻址方式,其中。寻址方式包括1种直接寻址以及3种间接寻址,所述间接寻包括间接寻址0、间接寻址1和间接寻址2,其中,目标地址存在在寄存器中,所述寄存器包括有寄存器bsr0、寄存器bsr1、寄存器fsr0和寄存器fsr1。
优选地,所述直接寻址由寄存器bsr0[n-1:1]和指令寄存器内的程序指令包含的地址数据inst[8:0]组成n 8位地址{bsr0[n-1:1],inst[8:0]},n小于8。
优选地,所述间接寻址0由寄存器bsr0[n-1:0]和fsr0[7:0]组成n 8位地址{bsr0[n-1:0],fsr0[7:0]},其中n小于8;
所述间接寻址1由寄存器bsr1[n-1:0]和fsr1[7:0]组成n 8位地址{bsr1[n-1:0],fsr1[7:0]},其中n小于8;
所述间接寻址2由寄存器fsr1[n-1:0]和fsr0[7:0]组成n 8位地址{fsr1[n-1:0],fsr0[7:0]},其中n小于8。
优选地,所述间接寻址还包括3个间接寻址操作寄存器indf0、indf1、indf2,分别对应间接寻址0、间接寻址1、间接寻址2。
本发明具有以下有益效果:
本发明通过优化地址分区,生成一个无论数据存储器多大都不用切页、实现一条指令寻址的多映射区,并把使用频繁的特殊功能寄存器和部分通用寄存器放在该区,只有在用的单映射区的通用寄存器时切页,从而实现高效寻址,提高代码效率。
当然,实施本发明的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的一种8位risc-cpu系统的结构框图;
图2为本发明的数据存储器结构图;
图3为本发明的数据存储器寻址模式示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
请参阅图1所示,本发明为一种8位risc-cpu系统,包括:
指令寄存器,指令寄存器用于寄存程序指令;从rom取出的程序指令,程序指令固定长度16位,由操作码、数据存储器地址、rom地址、立即数或寄存器位信息中的一个或两个组成,其中只有操作码是必不可少的;
指令译码器,指令译码器用于翻译程序指令;本发明的指令集按操作的对象可分为寄存器操作指令、位操作指令、立即数操作指令、特殊指令和分支指令;
数据存储器寻址单元;数据存储器寻址单元根据指令寄存器内的程序指令选择寻址方式以及目标地址;
程序计数器,程序计数器用于提供下一条指令的地址,并根据指令寄存器内寄存的当前程序指令控制程序顺序执行或跳转;指令寄存器就是从该程序计数器所指向的rom地址取指令的,程序计数器要根据指令寄存器内寄存的当前程序指令,确定下一个值,有以下几种情况:不变、增加一个量、增加两个量、载入中断向量、载入程序跳转的目标地址值、载入堆栈出栈值、载入复位值;
累加器;累加器用于传输数据或存放运算结果;
算术逻辑运算单元,算术逻辑运算单元用于根据指令译码器翻译的指令选择数据存储器寻址单元指向地址所存储的数据,或者累加器内的数据,或者指令寄存器内的程序指令包含的立即数作为输入数据,进行算术或逻辑运算,并输出运算结果;
中断处理单元,中断处理单元用于处理中断事务;其中通过配置字选择1个中断向量或多个中断向量,最大支持16个中断向量,多中断向量支持2级优先级设置,并且在响应中断时自动把程序计数器压栈;
堆栈处理单元,堆栈处理单元用于处理程序跳转时的压栈、出栈操作;
指令寄存器接收程序指令后传输至指令译码器以及算术逻辑运算单元;其中,指令译码器将程序指令翻译后传输至程序计数器;
数据存储器寻址单元将数据传输至累加器和算术逻辑运算单元。
优选地,数据存储器寻址单元包括4种寻址方式,其中。寻址方式包括1种直接寻址以及3种间接寻址,间接寻包括间接寻址0、间接寻址1和间接寻址2,其中,目标地址存在在寄存器中,寄存器包括有寄存器bsr0、寄存器bsr1、寄存器fsr0和寄存器fsr1。
其中,直接寻址由寄存器bsr0[n-1:1]和指令寄存器内的程序指令包含的地址数据inst[8:0]组成n 8位地址{bsr0[n-1:1],inst[8:0]},n小于8。
其中,间接寻址0由寄存器bsr0[n-1:0]和fsr0[7:0]组成n 8位地址{bsr0[n-1:0],fsr0[7:0]},其中n小于8;
间接寻址1由寄存器bsr1[n-1:0]和fsr1[7:0]组成n 8位地址{bsr1[n-1:0],fsr1[7:0]},其中n小于8;
间接寻址2由寄存器fsr1[n-1:0]和fsr0[7:0]组成n 8位地址{fsr1[n-1:0],fsr0[7:0]},其中n小于8。
优选地,间接寻址还包括3个间接寻址操作寄存器indf0、indf1、indf2,分别对应间接寻址0、间接寻址1、间接寻址2。
实施例一:本实施为一种8位risc-cpu系统的数据寄存器地址映射方法:该方法把逻辑地址分为单映射区和多映射区,单映射区一个逻辑地址对应一个实际物理地址,并且分成不同bank,多映射区一个实际物理地址有多个逻辑地址,单映射区都是通用寄存器,多映射区有通用寄存器和特殊功能寄存器。
映射分区和分bank的原则是这样的:
把逻辑地址分为低8位和高n位,其中n小于8,由cpu连接的ram(做通用寄存器)和特殊功能寄存器构成的数据存储器总大小决定,以数据存储器大小为5k,即最大编址为0x13ff为例,地址是13位,则n为5。地址高n位为偶数的逻辑地址区就是单映射区,为奇数的逻辑地址区就是多映射区,单映射区和多映射区编址是一样多的。只有单映射区是分bank的,高n位相同的区为同一bank,每个bank大小为256字节。
多映射区低9位相同的逻辑地址对应同一实际物理地址,所以该区逻辑地址由数据存储器总大小决定,但实际物理地址是固定的,为256字节。由于该区实际物理地址只由地址低9位决定,直接寻址时可以不用管地址高位寄存器bsr0的值,可以不用切页,做到高效寻址,特殊功能寄存器一般放在该区,还会放部分通用寄存器,具体比例看灵活选择。
当risccpu需要寻址较大数据存储器时,所需地址位宽大,如果每次寻址都要提供完整的目标地址,会降低代码效率,而如果只是单纯的把地址分bank,数据在不同bank之间传递时还是免不了要切页。本发明的这种地址分区的方法,生成一个无论数据存储器多大都不用切页、实现一条指令寻址的多映射区,并把使用频繁的特殊功能寄存器和部分通用寄存器放在该区,只有在用的单映射区的通用寄存器时切页,从而实现高效寻址,提高代码效率。
实施例二:如附图2所示,本发明的数据存储器结构,该图以数据存储器最大逻辑地址是0x13ff,多映射区的通用寄存器和特殊功能寄存器各占一半为例的,首先根据“地址高n位为偶数的逻辑地址区是单映射区,为奇数的逻辑地址区就多映射区”方法把地址分区,单映射区逻辑地址(16进制):0000~00ff(bank0)、0200~02ff(bank1)、0400~04ff(bank2)、0600~06ff(bank3)、0800~08ff(bank4)、0a00~0aff(bank5)、0c00~0cff(bank6)、0e00~0eff(bank7)、1000~10ff(bank8)、1200~12ff(bank9),该区一般全部做通用寄存器,其中每一个逻辑地址对应一个ram实际物理地址;多映射区逻辑地址(16进制):0100~01ff、0300~03ff、0500~05ff、0700~07ff、0900~09ff、0b00~0bff、0d00~0dff、0f00~0fff、1100~11ff、1300~13ff,该区与单映射区不同的是,低9位相同的逻辑地址对应同一实际物理地址,比如逻辑地址0x0101、0x0301、0x0501都是指向同一实际物理地址,多映射区一般放特殊功能寄存器和部分通用寄存器。
实施例三:如附图3所示,本发明的数据存储器4种寻址模式的地址组成方式和相关的间接寻址操作寄存器,下面举几个具体例子,结合附图2阐述本发明的寻址操作:
直接寻址:
上述程序实现了3个操作:2、3行把0x210的值传给0x110;4、5行把0x211的值传给0x180;6、7行把0x180的值传给0x212。
其中0x210、0x211、0x212是单映射区通用寄存器,0x110是多映射区通用寄存器,0x180、181是多映射区特殊功能寄存器。
上述传输过程只需要在第一行用切页指令bankbsr0把0x210高位地址写入bsr0,此时bsr0[4:0]=00010b后面不用再切页,比如第3行代码表示把累加器内的值写入地址{bsr0[4:1],inst[8:0]}内,此时bsr0[4:1]=0001b,inst[8:0]表示代码里的9位地址0x110,组成的目标地址为0x310,而逻辑地址0x310和0x110对应的是同一实际物理地址,值成功写入,第5、6行也是同理。
还需要说明的一点是,直接寻址时,代码里的地址只有低9位有效,其余高位编译器会自动省略,以第2行为例,该行代码和写法movr0x10,0是等价的,编译器把代码编译成指令时,只会取0x210低9位000010000b。
间接寻址0:bsr0[4:0]和fsr0组成13位地址
上述代码把立即数0x55通过间接寻址0写入地址0x210内,间接寻址1、2寻址的原理相同,共3种间接寻址方式,足以应付寻址较复杂的情况
本实施例的一个具体应用为:。
值得注意的是,上述系统实施例中,所包括的各个单元只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
另外,本领域普通技术人员可以理解实现上述各实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,相应的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如rom/ram、磁盘或光盘等。
以上公开的本发明优选实施例只是用于帮助阐述本发明。优选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本发明。本发明仅受权利要求书及其全部范围和等效物的限制。
1.一种8位risc-cpu系统,其特征在于,包括:
指令寄存器,所述指令寄存器用于寄存程序指令;
指令译码器,所述指令译码器用于翻译程序指令;
数据存储器寻址单元;所述数据存储器寻址单元根据指令寄存器内的程序指令选择寻址方式以及目标地址;
程序计数器,所述程序计数器用于提供下一条指令的地址,并根据指令寄存器内寄存的当前程序指令控制程序顺序执行或跳转;
累加器;所述累加器用于传输数据或存放运算结果;
算术逻辑运算单元,所述算术逻辑运算单元用于根据指令译码器翻译的指令选择数据存储器寻址单元指向地址所存储的数据,或者累加器内的数据,或者指令寄存器内的程序指令包含的立即数作为输入数据,进行算术或逻辑运算,并输出运算结果;
中断处理单元,所述中断处理单元用于处理中断事务;
堆栈处理单元,所述堆栈处理单元用于处理程序跳转时的压栈、出栈操作;
所述指令寄存器接收程序指令后传输至指令译码器以及算术逻辑运算单元;其中,所述指令译码器将程序指令翻译后传输至程序计数器;
所述数据存储器寻址单元将数据传输至累加器和算术逻辑运算单元。
2.根据权利要求1所述的一种8位risc-cpu系统,其特征在于,所述数据存储器寻址单元包括4种寻址方式,其中。寻址方式包括1种直接寻址以及3种间接寻址,所述间接寻包括间接寻址0、间接寻址1和间接寻址2,其中,目标地址存在在寄存器中,所述寄存器包括有寄存器bsr0、寄存器bsr1、寄存器fsr0和寄存器fsr1。
3.根据权利要求2所述的一种8位risc-cpu系统,其特征在于,所述直接寻址由寄存器bsr0[n-1:1]和指令寄存器内的程序指令包含的地址数据inst[8:0]组成n 8位地址{bsr0[n-1:1],inst[8:0]},n小于8。
4.根据权利要求1所述的一种8位risc-cpu系统,其特征在于,所述间接寻址0由寄存器bsr0[n-1:0]和fsr0[7:0]组成n 8位地址{bsr0[n-1:0],fsr0[7:0]},其中n小于8;
所述间接寻址1由寄存器bsr1[n-1:0]和fsr1[7:0]组成n 8位地址{bsr1[n-1:0],fsr1[7:0]},其中n小于8;
所述间接寻址2由寄存器fsr1[n-1:0]和fsr0[7:0]组成n 8位地址{fsr1[n-1:0],fsr0[7:0]},其中n小于8。
5.根据权利要求1所述的一种8位risc-cpu系统,其特征在于,所述间接寻址还包括3个间接寻址操作寄存器indf0、indf1、indf2,分别对应间接寻址0、间接寻址1、间接寻址2。
技术总结