一种芯片架构及指令集的制作方法
未命名
07-22
阅读:243
评论:0
1.本技术涉及计算机与通讯技术领域,尤其涉及一种芯片架构及指令集。
背景技术:
2.目前主要的芯片架构有:x86,arm,mips,alpha及新发展起来的risc-v,嵌入式芯片由于arm优化出sc000型号,彻底淘汰了c51芯片,成为目前嵌入式芯片的常用选择。这些芯片架构或多多少都存在授权问题,由于历史的原因要考虑兼容旧版本使得指令不够精简。
3.嵌入式设备中的软件通常采用c语言实现,其需要整体编译完成后下载到设备中,采用上面提到的这些芯片架构都不能进行局部更新,给远程升级带来困难。
技术实现要素:
4.为至少在一定程度上克服相关技术中的开发方式采用整体编译,不能进行局部更新,远程升级困难的问题,本技术提供一种芯片架构及指令集。
5.本技术的方案如下:
6.根据本技术实施例的第一方面,提供一种芯片架构,包括:
7.块寄存器、块内偏移寄存器、通用寄存器、特殊寄存器和代码地址映射器;
8.所述块寄存器用于存放当前执行块的起始地址;
9.所述块内偏移寄存器用于存放当前执行语句的块内相对地址;
10.所述代码地址映射器用于在块跳转时通过截获指令,将当前执行块的起始地址和当前执行语句的块内相对地址合成得到当前执行语句的实际地址。
11.优选地,所述芯片架构包括多组通用寄存器;
12.每组通用寄存器中均包括多个通用临时寄存器和多个函数参数或返回值寄存器;
13.所述通用寄存器的组数根据所述芯片架构的能力设置。
14.根据本技术实施例的第二方面,提供一种指令集,应用于如以上任一项所述的芯片架构,其特征在于,所述指令集的分类至少包括:算术运算类、存储器赋值类、分支跳转类、数据载入类、写内存类、内存搬移类、写文件类、输入输出流操作类和协处理器操作类。
15.优选地,所述指令集在芯片在启动时初始化块地址表,每间隔预设位数存一个块的绝对起始地址;所述预设位数为指令集的定义位数;
16.在所述绝对起始地址后预留空闲地址空间。
17.优选地,所述指令集在所述块地址表后设置中断向量表;每间隔所述预设位数存一个中断处理函数的块号。
18.优选地,所述指令集根据当前使用环境确定块地址表的级数。
19.优选地,所述指令集中的每一块均为连续的代码存储,不支持跨扇区存储。
20.优选地,所述指令集中的跳转语句包括:跳块和块内跳。
21.优选地,所述指令集中的每一代码块均对应于独立的功能。
22.优选地,所述指令集中的每个语句块在源码中以中文别名命名,在相应的代码中以所述中文别名替换数字块名。
23.本技术提供的技术方案可以包括以下有益效果:本技术中的芯片架构,包括:块寄存器、块内偏移寄存器、通用寄存器、特殊寄存器和代码地址映射器。现有的芯片架构中一般包括通用寄存器和特殊寄存器这两类,通用寄存器存放任意变量,特殊寄存器存放有含义的特殊值,本技术将现有芯片架构中的pc指针寄存器替换为块寄存器和块内偏移寄存器,块寄存器用于存放当前执行块的起始地址,块内偏移寄存器用于存放当前执行语句的块内相对地址。现有技术中不能进行局部更新,远程升级困难的根本原因是指令集中的地址跳转都是绝对地址,一旦有任何变化都需要重排,而本技术的技术方案,处理器在取指令时,通过代码地址映射器将块寄存器和块内偏移寄存器中的两个值快速相加即可合成得到当前执行语句的实际地址,从而完成取指功能。本技术的技术方案中,块内部可以采用相对地址,编译后放在任何地方都能执行,没有传统语言的链接过程,从而使得开发过程中的应用下载和应用更新执行时,代码可以局部修改而不影响其它模块,也可以进行迁移位置,即可以进行局部更新,远程升级变的简洁高效。
24.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本技术。
附图说明
25.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。
26.图1是本技术一个实施例提供的一种芯片架构的结构示意图。
27.附图标记:块寄存器-1;块内偏移寄存器-2;通用寄存器-3;代码地址映射器-4。
具体实施方式
28.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本技术的一些方面相一致的装置和方法的例子。
29.实施例一
30.图1是本实施例一个实施例提供的一种芯片架构的结构示意图,参照图1,一种芯片架构,包括:
31.块寄存器、块内偏移寄存器、通用寄存器、特殊寄存器和代码地址映射器;
32.块寄存器用于存放当前执行块的起始地址;
33.块内偏移寄存器用于存放当前执行语句的块内相对地址;
34.代码地址映射器用于在块跳转时通过截获指令,将当前执行块的起始地址和当前执行语句的块内相对地址合成得到当前执行语句的实际地址。
35.可以理解的是,本实施例中的芯片架构,包括:块寄存器、块内偏移寄存器、通用寄存器、特殊寄存器和代码地址映射器。现有的芯片架构中一般包括通用寄存器和特殊寄存器这两类,通用寄存器存放任意变量,特殊寄存器存放有含义的特殊值,本实施例将现有芯
片架构中的pc指针寄存器替换为块寄存器和块内偏移寄存器,块寄存器用于存放当前执行块的起始地址,块内偏移寄存器用于存放当前执行语句的块内相对地址。现有技术中不能进行局部更新,远程升级困难的根本原因是指令集中的地址跳转都是绝对地址,一旦有任何变化都需要重排,而本实施例的技术方案,处理器在取指令时,通过代码地址映射器将块寄存器和块内偏移寄存器中的两个值快速相加即可合成得到当前执行语句的实际地址,从而完成取指功能。本实施例的技术方案中,块内部可以采用相对地址,编译后放在任何地方都能执行,没有传统语言的链接过程,从而使得开发过程中的应用下载和应用更新执行时,代码可以局部修改而不影响其它模块,也可以进行迁移位置,即可以进行局部更新,远程升级变的简洁高效。
36.需要说明的是,芯片架构包括多组通用寄存器;
37.每组通用寄存器中均包括多个通用临时寄存器和多个函数参数或返回值寄存器;
38.通用寄存器的组数根据芯片架构的能力设置。
39.对本实施例中的芯片架构中的通用寄存器进行举例说明:
40.10个通用临时寄存器:甲、乙、丙、丁、戊、己、庚、辛、壬、癸;
41.12个函数参数或返回值寄存器:子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥。
42.需要说明的是,上述通用寄存器组的组数根据芯片能力设置,即上述通用寄存器组可以有多组,芯片能力越强,可以设置的通用寄存器组数越多,相当于多核,用单核实现多核的并行计算。
43.实施例二
44.一种指令集,应用于如以上实施例中的芯片架构,指令集的分类至少包括:算术运算类、存储器赋值类、分支跳转类、数据载入类、写内存类、内存搬移类、写文件类、输入输出流操作类和协处理器操作类。
45.需要说明的是,指令集在芯片在启动时初始化块地址表,每间隔预设位数存一个块的绝对起始地址;预设位数为指令集的定义位数;
46.在绝对起始地址后预留空闲地址空间。
47.需要说明的是,指令集在块地址表后设置中断向量表;每间隔预设位数存一个中断处理函数的块号。
48.在具体实践中,本实施例中的指令集为精简指令集,基础指令集按32位定义,可扩展为64位、128位,也可裁剪为16位。即预设位数为32位。
49.对本实施例中的技术方案进行举例说明:
50.芯片启动时初始化块地址表(也叫块向量表),每32位存一个块的绝对起始地址:
51.〇号块地址(00000000保留)
52.一号块地址
53.二号块地址
54.......
55.某号块地址
56.后面跟中断向量表,每32位存一个中断处理函数的块号:
57.五号块
58.十号块
59.......
60.可以理解的是,本实施例中在绝对起始地址后预留足够的地址空间,便于新增块地址使用。
61.需要说明的是,指令集根据当前使用环境确定块地址表的级数。
62.可以理解的是,当前使用环境复杂时,需要进行块地址表的扩展,在具体实践中,嵌入式软件一般只用一级块地址表,服务器及个人终端用多级块地址表。
63.需要说明的是,指令集中的每一块均为连续的代码存储,不支持跨扇区存储。
64.需要说明的是,指令集中的跳转语句包括:跳块和块内跳。
65.需要说明的是,指令集中的每一代码块均对应于独立的功能。
66.在具体实践中,每个代码块对应于一个相对独立的功能,如一个函数,一个数据块。
67.需要说明的是,指令集中的每个语句块在源码中以中文别名命名,在相应的代码中以中文别名替换数字块名。
68.可以理解的是,语句块在源码中可以命名中文别名,在相应的代码中以别名替换数字块名,以增加可读性。
69.汇编一行可写多条语句,以空格隔开。块内跳源码有2种:跳段和段内跳语句,编译后统一为当前语句的偏移值,偏移值有符号,可前进和后退。
70.任何地方都可以跳出,跳语句限于段内。跳段只能跳到段起始位置。
71.下面以新增定时器应用为例描述下载过程:
72.1、处理器进入下载态
73.2、根据下载协议确定代码块大小,找到合适的空闲块。
74.3、开始下载。
75.4、下载完成校验无误后在预留的块地址表中写上下载块的起始地址。
76.5、在定时器中断向量表中填上块号(不涉及硬件的代码忽略此步,或增加软件向量表)
77.6、处理器回到用户态。
78.代码局部更新过程:
79.1、处理器进入下载态
80.2、根据下载协议确定代码块大小。
81.3、如果新代码块体积不大于旧代码块加后面的空闲空间,直接下载到旧地址。
82.4、如果新代码块体积大于旧代码块加后面的空闲空间,找到新的空闲块,修改该块号的地址为新地址,开始下载。
83.5、下载校验无误后处理器回到用户态。
84.需要说明的是,芯片处于下载态时会屏蔽与下载无关的所有功能。
85.需要说明的是,本实施例中的技术方案基于全中文自然语言源代码实施。
86.源代码如下:
87.1、文件
88.以纯文本文件保存。
89.2、字符集
90.常用的qwert键盘,切换到中文输入状态,仅使用不按shift键就能直接输入的汉字及字符;
91.避免使用中英文易混淆的符号如“,”、“;”。
92.系统保留字:
93.礼、乐、射、御、书、数;
94.天干十个、地支十二个。
95.3、语法
96.文言文、现代汉语。
97.4、章法
98.注释语句:
99.注释语句写在实心方头括号内,占一行或多行,不支持在代码行内注释。
100.例1:
101.【这是单行注释语句】
102.例2:
103.【多行注释开始
104.中文编程范例试运行:浏览器输入“六艺.cn”105.注释结束】
106.括号位置不限,注释内容可以为任意字符。
107.其它语句根据起始位置的不同具有不同的意义,有6种语句,空格不能用tab键。
108.礼位:
109.每行的顶格位置为礼位,是定义语句的起始位置。
110.乐位:
111.缩进4格(2个汉字位置)为乐位,是正文位置,普通执行语句的起始位置。
112.射位:
113.缩进8格(4个汉字位置)为射位,是输出内容的位置,默认为屏幕打印。嵌入式软件一般默认输出到串口,智能卡软件默认输出到7816接口。输出可以在礼位配置“射”,确定射向的端口。
114.御位:
115.进12格(6个汉字位置)为御位,是异常处理代码的位置,负责驾御代码走向。
116.书位:
117.缩进16格(8个汉字位置)为书位,是书写日志的代码位置。默认输出到以当前日期及程序名称命名的文本文件。
118.数位:
119.缩进20格(10个汉字位置)为数位,是处理输出数据的位置。网页编程中是响应处理代码位置。智能卡工具此处为中文正则表达式及跳转处理。
120.在专用的编程工具中会提供快捷缩进按钮,也会有实时的语法检查。
121.续行:代码编辑器一行不够用或屏幕显示不了时,为避免操作滚动条可以换行写,不能从句子中间换行,续行的起始位置比该功能的起始位置少缩进2格(一个汉字)。
122.5、数字常量表达
123.在没有特别声明的情况下默认为十进制数字。
124.兼容阿拉伯数字0123456789。对应汉字为〇一二三四五六七八九。
125.汉字大写数字“零、壹、贰、叁、肆、伍、陆、柒、捌、玖”仅在打印输出重要数据时使用。
126.在程序语言的其它位置具有不同的含义。
127.零:相当于其它语言的null,用于地址未赋值或对象未建立的判断或赋初值。
128.贰、肆、捌开头的数,后面跟小写表示二进制、四进制、八进制数。
129.编程中最常用的是十六进制数,c语言及其它多种语言的十六进制通常写为:
130.0x0123456789abcdef
131.对应的中文表示为:
132.勹〇一二三四五六七八九十勺匀勾句甸。
133.中文数字在打印输出时通常带数目单位,如:
134.100:一百;10000:一万。
135.在万以后采用万进制,即万万为亿,万亿为兆,万兆为京。
136.万及后面的大数单位:万、亿、兆、京、垓、姊、穰、沟、涧、正、载、极、恒何沙、阿僧祇、那由他、不可思议、无量大数。
137.浮点数的表达:0.125:
138.纯数字:点一二五;
139.带单位输出:一分二厘五毫;
140.小数点后每一位名称依次为:分、厘、毫、丝、忽、微、纤、沙、尘、埃、渺、漠、模糊、逡巡、须臾、瞬息、弹指、刹那、六德、虚空、清净、阿赖耶、阿摩罗、涅槃寂静。
141.可以理解的是,本实施例中的全中文自然语言源代码,采用特有的“六艺”章法结构。本实施例中的源码语言区别于其它语言的显著特征为关键词以语义来分割,而不是其它语言的以空格来分割。空格用来做语句的分割。段落用来表示语句块,替代c语言的花括号“{}”或python言语的缩进。而缩进用来表示不同的功能。这样利用了中文方块字的优势,充分利用了编辑器的横向空间(也可以采用其它语言做不到的竖排方式),降低了编程语言的维度。
142.需要说明的是,本实施例中的技术方案在实施时,其操作系统和应用为统一语言,避免了不同语言之间的接口开销。本方案的源代码语言为中文自然语言,不需要专门系统的计算机语言学习,只需了解文体结构即可,极大降低了学习成本,提高开发效率。
143.需要说明的是,本方案中的指令集设计为适合实际芯片可实现的架构,在没有芯片时也可以用虚拟机实现。
144.可以理解的是,上述各实施例中相同或相似部分可以相互参考,在一些实施例中未详细说明的内容可以参见其他实施例中相同或相似的内容。
145.需要说明的是,在本技术的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本技术的描述中,除非另有说明,“多个”的含义是指至少两个。
146.流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部
分,并且本技术的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本技术的实施例所属技术领域的技术人员所理解。
147.应当理解,本技术的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。
148.本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
149.此外,在本技术各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
150.上述提到的存储介质可以是只读存储器,磁盘或光盘等。
151.在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本技术的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
152.尽管上面已经示出和描述了本技术的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本技术的限制,本领域的普通技术人员在本技术的范围内可以对上述实施例进行变化、修改、替换和变型。
技术特征:
1.一种芯片架构,其特征在于,包括:块寄存器、块内偏移寄存器、通用寄存器、特殊寄存器和代码地址映射器;所述块寄存器用于存放当前执行块的起始地址;所述块内偏移寄存器用于存放当前执行语句的块内相对地址;所述代码地址映射器用于在块跳转时通过截获指令,将当前执行块的起始地址和当前执行语句的块内相对地址合成得到当前执行语句的实际地址。2.根据权利要求1所述的芯片架构,其特征在于,所述芯片架构包括多组通用寄存器;每组通用寄存器中均包括多个通用临时寄存器和多个函数参数或返回值寄存器;所述通用寄存器的组数根据所述芯片架构的能力设置。3.一种指令集,应用于如权利要求1-2任一项所述的芯片架构,其特征在于,所述指令集的分类至少包括:算术运算类、存储器赋值类、分支跳转类、数据载入类、写内存类、内存搬移类、写文件类、输入输出流操作类和协处理器操作类。4.根据权利要求3所述的指令集,其特征在于,所述指令集在芯片在启动时初始化块地址表,每间隔预设位数存一个块的绝对起始地址;所述预设位数为指令集的定义位数;在所述绝对起始地址后预留空闲地址空间。5.根据权利要求4所述的指令集,其特征在于,所述指令集在所述块地址表后设置中断向量表;每间隔所述预设位数存一个中断处理函数的块号。6.根据权利要求3所述的指令集,其特征在于,所述指令集根据当前使用环境确定块地址表的级数。7.根据权利要求3所述的指令集,其特征在于,所述指令集中的每一块均为连续的代码存储,不支持跨扇区存储。8.根据权利要求3所述的指令集,其特征在于,所述指令集中的跳转语句包括:跳块和块内跳。9.根据权利要求3所述的指令集,其特征在于,所述指令集中的每一代码块均对应于独立的功能。10.根据权利要求3所述的指令集,其特征在于,所述指令集中的每个语句块在源码中以中文别名命名,在相应的代码中以所述中文别名替换数字块名。
技术总结
本申请涉及一种芯片架构及指令集,芯片架构包括:块寄存器、块内偏移寄存器、通用寄存器、特殊寄存器和代码地址映射器。现有的芯片架构中一般包括通用寄存器和特殊寄存器这两类,通用寄存器存放任意变量,特殊寄存器存放有含义的特殊值,本申请将现有芯片架构中的PC指针寄存器替换为块寄存器和块内偏移寄存器,块寄存器用于存放当前执行块的起始地址,块内偏移寄存器用于存放当前执行语句的块内相对地址。本申请的技术方案,处理器在取指令时,通过代码地址映射器将块寄存器和块内偏移寄存器中的两个值快速相加即可合成得到当前执行语句的实际地址,从而完成取指功能。从而完成取指功能。从而完成取指功能。
技术研发人员:朱琳琳 金银军 胡东纯 翟淑琴
受保护的技术使用者:四川科道芯国智能技术股份有限公司
技术研发日:2023.04.19
技术公布日:2023/7/20
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
