当前位置: 首页 > 专利查询>中山大学专利>正文

嵌入式Java处理器微码指令集动态装载方法技术

技术编号:2820599 阅读:261 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种Java处理器微码指令集动态装载技术,属于嵌入式处理器设计领域。本发明专利技术通过在原有的处理器的基础上增加了一种指令集装载模块。首先装载模块从外部存储器读取微码指令,寄存在装载模块的临时寄存器中,再通过微码拼接技术解决外部存储器和内部存储器位数不一的问题,最后再将拼接好的微码指令写入到内部存储器之中,当所有内部存储器都初始化完成,即指令集加载到芯片内部后,系统开始执行启动代码,进入正常工作状态。通过本发明专利技术不仅使其它平台的Java程序在该平台上正确运行,保证上层应用的通用性,还可以针对不同的嵌入式应用环境对本地指令集进行更新优化,实时修改启动代码,提高处理器效率。

【技术实现步骤摘要】

本专利技术属于嵌入式处理器设计领域,具体来说,涉及一种Java处理 器微码指令集动态装载技术。
技术介绍
现有的Java处理器或Java协处理器将本地指令集固化在芯片之中, 无法对指令集进行优化。对于通用处理器,如PC中的处理器,此种方法 可以满足应用需求,因为基于通用处理器的上层应用,是由功能十分完 善的操作系统支持。而Java处理器常被应用于嵌入式系统中,考虑到运 行速度和系统成本,与其对应的操作系统或控制功能相对简单,且针对 不同的应用场合需要作相应的调整。操作系统执行程序的过程直接映射到系统底层的本地指令集执行的 过程。当前的Java处理器或Java协处理器已将本地指令集固化到芯片之 中,无法针对不同的嵌入式应用环境进行指令优化,也无法开发针对不 同环境的、用户定制的指令段,将其添加到系统当中。嵌入式系统的实 时、可靠、便携等要求受到了限制。现有的一些"动态装载"解决方案都是基于FPGA技术的,因其硬 件的可配置性可以满足Java处理机制的重构。不过这些解决方案都必须 通过HDL代码的更改,对FPGA进行重新编程才可以实现,不是真正意义上的动态装载。且FPGA的成本和性能,与专用处理器相比,也不适 合作为批量生产的产品使用到嵌入式系统当中,只能作为研发过程中的 验证平台。
技术实现思路
针对以上的不足,本专利技术提出了一种嵌入式Java处理器微码指令集 动态装载方法。通过微码指令集(即本地指令集)的动态优化和装载, 可更好地满足嵌入式系统实时、可靠、便携等的要求。利用对实现各个 Java字节码的微码指令段的优化,可以不断提高系统运行的速度。同时, 增加用户自定义的微码指令段,可以很方便地对指令的功能进行扩充, 提升嵌入式系统的性能。更为常用的是,通过微码指令集的动态装载, 可以任意改变嵌入式系统的启动代码,在硬件的最底层满足了不同应用 场合的需求,便捷高效。一种,它的步骤包括-1) 系统上电;2) 装载模块选中外部存储器的控制器,并指向外部存储器的全零地址;3) 装载模块读取外部存储器当前地址的数据,并存储在装载模块内 部的临时寄存器之中,装载模块的计数器进行一次加1操作,外部存储 器的控制器指向下一个地址;4) 装载模块根据芯片内部存储器的位宽和容量确定微码拼接所需读 取外部存储器的次数,每读取一次外部数据,都暂存在装载模块的临时 寄存器,进行拼接;5) 装载模块将拼接完成后的整组数据写入到内部存储器,同时指向 内部存储器的地址进行加1操作,指向下一个内部存储单元;6) 重复3) _5)的步骤,直到所有的处理器微码指令集写入完成;7) 执行系统启动代码。所述装载模块选取模块优先级可控的总线技术,使装载模块优先级 高于主核,优先考虑AMBA总线。所述外部微码存储器可选取不同位宽的Flash存储器。 所述内部存储器使用SRAM技术或Flash (EEPROM)技术。 本专利技术的有益效果1) 在其它平台上运行的Java程序同样可以在该平台上运行,保证上 层应用的通用性。2) 针对不同嵌入式应用环境可以对本地指令集进行即时的更新优 化,比其它Java处理器更有专用性。如精简指令集,去除该系统无需使 用的微码段,使系统有更多空间存放启动用微码程序。或是设计出更为 高效的实现字节码的微码段后,可以随时更新原有的相应微码段。3) 可开发用户自定义的本地微码指令段,使处理器效率得以提升。 其它已将本地指令集固化在芯片内的处理器无法实现。如嵌入一段时间 相加的代码,替代基本的整数相加代码,可以快速实现时间相加。4) 可按照需求开发功能强大的系统启动代码,并且可随时更新。而 其它Java处理器若需完成相应内容,必须有操作系统的支持。相比而言, 无需操作系统可实时更新的启动代码更为便捷与高效。附图说明图1为微码指令集动态加载流程图2为微码指令读写示意图3为微码指令动态装载结构示意图。具体卖施方式下面结合附图对本专利技术进行进一步的阐述。微码指令集动态加载过程如图1所示,在系统上电后,指令装载模 块会从外部的存储器中读取事先存放好的指令集代码。经过装载模块的 内部地址映射机制,将相应的微码指令写入到芯片内部的各个存储器及 寄存器。当所有的微码指令均已正确存放到芯片内部对应的存储器和寄存器后,装载模块则输出表示初始化完成的信号,此时处理器接收到初 始化完成的有效信号后,即开始执行片内的系统启动代码,进而执行其 它程序。在图1中,表示为"微码拼接"的过程以虚线框画出。该过程主要 是解决芯片外部和芯片内部存储器位数不一的问题。若片外的存储器为8 位,片内的存储器亦为8位,则微码的导入可以直接通过地址映射完成; 若片外的存储器为8位,而片内的存储器为ll位,则装载模块需要对片 外存储器读取两次后,拼接成16位数据,再截取其有效的11位数据写 入到芯片内部。所以,该子模块实现了数据拼接的功能,若芯片内外存 储器位数相同,该子模块可以省略。图2中显示了 Java微码指令集读取、拼接、写入的详细过程。系统上电后,装载模块选中外部存储器的控制器,并指向外部存储器的全零 地址。从全零地址开始读取相应的数据,然后地址顺序加1,继续读取下 一个数据。芯片内部的存储器位宽与容量已固定,所以根据当前正在初始化的 内部存储器,可以判断拼接成一组内部数据所需读取外部存储器的次数。 每读取一次外部数据,都会暂存在装载模块的临时寄存器,进行拼接。 拼接完成后,即将整组数据写入到内部存储器,同时指向内部存储器的 地址进行加l操作,指向下一个内部存储器地址。如图2中所示,外部存储器为8位数据位宽,内部存储器位数最宽 为32位,所以临时寄存器亦为32位。当前初始化的内部存储器1为32 位宽,所以需要从外部读取4次数据,拼接为32位后再写入到内部存储 器1内。又如当前正在初始化内部存储器2,该存储器为24位宽,则只 需读取3次外部数据即可拼接为24位,读取24位外部数据存放到临时 寄存器的低24位后,高8位无需处理,只需将内部存储器2的数据线和 临时寄存器的低24位连接,即可达到数据截取的目的。装载模块中含有一个计数器,每读取一次外部数据,计数器的值则 进行一次加1操作。因为内部存储器的位宽和容量已固定,所以需要读 取外部存储器的次数很容易就可以计算出来。使用计数器的目的在于, 产生控制当前初始化的内部存储器的片选信号,以及判断临时寄存器中 的有效位数(或拼接次数)。如图2所示,假设内部存储器l的容量为64个字,内部存储器2的 容量为128个字,内部存储器3的容量为128个字。对应各个存储器的 位数,内部存储器1需要读取4次外部数据拼接为一个32位数,内部存储器2需要读取3次外部数据拼接为一个24位数,内部存储器3需要读 取2次外部数据拼接为一个11位数。则初始化内部存储器1所需读取外 部数据的次数为64*4,即256次。所以当计数器计数到256时,内部存 储器1己完成初始化,即释放内部存储器1的片选信号,使内部存储器2 的片选有效,同时内部地址清零,相当于从内部存储器2的零地址开始 计算。以此类推,内部存储器2所需读取外部数据的次数为128*3,即 384次。所以当计数器计数到256+384,即640时,内部存储器2初始化 完毕,进而对内部存储器3进行初始本文档来自技高网...

【技术保护点】
一种嵌入式Java处理器微码指令集动态装载方法,其特征在于,它的步骤包括: 1)系统上电; 2)装载模块选中外部存储器的控制器,并指向外部存储器的全零地址; 3)装载模块读取外部存储器当前地址的数据,并存储在装载模块内部的临时寄存器之中,装载模块的计数器进行一次加1操作,外部存储器的控制器指向下一个地址; 4)装载模块根据芯片内部存储器的位宽和容量确定微码拼接所需读取外部存储器的次数,每读取一次外部数据,都暂存在装载模块的临时寄存器,进行拼接; 5)装载模块将拼接完成后的整组数据写入到内部存储器,同时指向内部存储器的地址进行加1操作,指向下一个内部存储单元; 6)重复3)-5)的步骤,直到所有的处理器指令集写入完成; 7)执行系统启动代码。

【技术特征摘要】

【专利技术属性】
技术研发人员:陈挚睿谭洪舟陆许明
申请(专利权)人:中山大学
类型:发明
国别省市:81[中国|广州]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1