Javacard CPU的设计与实现 Javacard CPU的设计与实现

Javacard CPU的设计与实现

  • 期刊名字:计算机工程
  • 文件大小:410kb
  • 论文作者:张德学,郭立,傅忠谦,何力
  • 作者单位:中国科技大学电子科学与技术系
  • 更新时间:2020-10-30
  • 下载次数:
论文简介

第33卷第10期计算机工程2007年5月VoL.33No.I0Computer EngineringMay 2007●开发研究与设计技术●文章编号: 1000- -3428(2007)10- 0280- -03文献标识码: A中图分类号: TH166Javacard CPU的设计与实现张德学,郭立,傅忠谦,何力(中国科技大学电子科学与技术系,合肥230026)摘要: 支持Javacard技术标准是智能卡的发展方向,目前的Javacard系统大多是采用软件虚拟机的方式来解释执行或者通过just-intime方式执行Java指令,系统软件平台本身占用了大量的资源,且执行效率不高。解决这些问题的方法就是实现硬件Javacard 指令处理器。该文给出了- -种基于微码的Javacard指令处理器的FPGA设计和实现,以Javacard CPU为核心搭建Javacard CPU测试平台,并将其集成在一块FPGA 上实现。关键词: Javacard; 处理器;智能卡Design and Implementation of Javacard CPUZHANG Dexue, GUO Li, FU Zhongqian, HE Li(Department of Electronic Science and Technology, University of Sciences and Technology of China, Hefei 230026)[Abstract] Javacard is the development direction of smart card. Most of the Javacard systems use the software virtual machine to execute Javacardinstruction. The system takes up a great deal of hardware resources, and it is unefficient. The resolution is to implement the hardware Javacardinstruction processor. This paper describes a design of Javacard hardware processor based on microcode.[Key words] Javacard; CPU; Smartcard1概述础上实现Javacard平台,再在此平台上实现Javacard应用。1.1 Javacard简介1.2 Java处理器的实现方式比较智能卡是指集成了CPU、ROM、RAM、COS(芯片操作Java处理器的实现方式如下:系统)和EEPROM,能储存信息和图像,具备读/写能力,信(1)通用CPU+OS+Java软件解释器,软件解释执行Java息能受到加密保护的便携卡。智能卡最基本的标准是指令;ISO/IEC7816。智能卡在银行、电信等行业中得到了广泛的应(2)通用CPU+OS+Java JITjutin-time)编译器,按块编译用,但在发展过程中也有很多的障碍,主要有:各个厂商指执行Java指令;令集不统- -;编程接口APIs 太复杂;开发环境不通用,为新(3)Java加强CPU+OS+特殊的Java编译器,充分使用Java卡开发需要熟悉新卡开发环境;各个厂商的系统不兼容,专加强硬件的优势;卡专用。开发门槛过高影响了智能卡的发展。市场对智能卡()Java硬件CPU,本地支持执行Java指令,效率最高。的发展提出了新的要求,Sun 公司提出了Java Card开放标目前的Java系统是基于软件虚拟机实现的,软件解析执准"。Javacard技 术是将智能卡与Java技术相结合的产物,它行Java指令,如方式(1)和方式(2);但智能卡的硬件能力远将Java平台应用到像智能卡这样高度特殊化、内存和处理能远不如PC,ROM、RAM资源非常有限,用软件实现Javacard力比J2ME设备还受限的设备上。它克服了智能卡硬件和软件虚拟机,需要软件Javacard指令解释器,将Java指令转换到开发技术太专业、开发周期长等阻碍智能卡普及的缺点,允本地CPU的指令集,由于其速度慢、实现虚拟机本身占用内许智能卡运行Java编写的应用程序。Javacard技 术继承了许多存资源,因此不适合在资源有限的硬件中应用。Java语言的优点,制定了一个安全、便捷且多功能的智能卡方式(3)要求CPU硬件实现部分Java 指令,它需要特殊平台。的编译器来充分发挥Java加强CPU的功能。Javacard规范主要包括: Javacard 虚拟机规范,Javacard方式(4)是最终的解决方法,Java指令的执行不再需要先编程接口(API)和Javacard 运行环境规范。转换到宿主CPU的本地指令集上去,是最有效率的方法,同Javacard最小的硬件配置要求为: 512B RAM,24KB时,它不占用RAM等软件资源,可以给应用程序提供更多ROM, 8KB EEPROM, 8位处理器。典型的Javacard 设备有的资源。8或16位的CPU,3.7MHz时钟频率,1KB大小的RAM和鉴于支持Javacard标准的智能卡将被大量使用,为提高大于16KB的非易失存储器EEPROM或FLASH)。高性能的应用程序执行速度,节省资源,充分利用资源,硬件实现智能卡还带有独立的处理器和加密芯片以及密码信息存储。Javacard指令处理器是有重要意义的。Javacard系统的实现有基于软件虚拟机和基于硬件两种方法。基于软件虚拟机方法是在非Java处理器硬件上用软件作者简介:张德学中国煤化工:集成电路设计方法模拟实现Javacard平台,在此平台上实现Javacard应用。研究;郭立,教CNMHG力,助教基于硬件方法是硬件逻辑实现Javacard处理器,在此硬件基收稿日期: 2006-05-22 e-ma: axznang@ustc .edu一28.1.3 Java CPU的研究现状Stack,微码ROM,微码指令指针调整模块Mcpc,外存读写根据应用的不同,Java虛拟机所要支持的指令集和特性接口memrw,通过wishbone总线连接外部RAM、ROM、I/O。也有差异,Java指令处理器大体分为通用型、嵌入式应用和各模块之间连接关系、数据通路、控制通路以及应答信号连.Javacard应用。通用型Java处理器实现完整的Java虚拟机标接见图1。准。嵌入式应用中的Java处理器可以根据应用系统的实际需微码指针调整单元---- Instr alu ack要取舍一-些Java特性。Javacard标准中的Java处理器是JavaMCPCaluALU虚拟机标准的一一个子集,只需要能完成智能卡应用中的必要↑↑↑hodd操作,同时它要求尽量少地占用资源和低功耗。flags通用型的Java处理器实现有Sun公司的PicoJava I和stack ackPicoJava II。 PicoJava 系列实现了完整的Java 指令集,旨在提供高性能,加强的硬件浮点支持,6级指令流水线和多重主控模块:STACK指令调度。要达到这种性能,付出的代价是逻辑门数很高。op用现有水平的FPGA来完全实现PicoJava是不实际的。ARM的Jazelle 技术,延伸RISC的基础框架,让ARMMcroCodcROMmemrw. ack晶片直接执行Java字节码,目前支持95%的byecode指令,MEMRW其余的指令通过转换为ARM指令串实现。这种芯片实际是mdrmem. rd同时支持了两套指令集,属于Java加强CPU。nem_wr最近非常活跃的一个Java嵌入式CPU设计的项目JOP(Java Optimized Processr)23),致力于实现- - 个用于嵌入式设控制僭号.应答信号数据通路备的Java处理器。该项目是一一个开源项目,目前已经取得了2.4微码处理器各模块接口及功能简介图1数据通路和控制通路很好的成果。该项目的设计中为IO操作和一些系统任务引入了一些非Java指令,在此系统上完成的Java应用可能会有兼容按照功能将设计划分为几个功能模块,每个模块易于描性问题。述和实现。对于专用于Javacard 上的Java 处理器芯片尚无实现报(1)运算单元alu: module alux,y,op.z,flag.calc,rst,ack,clk)。道,本文描述了Javacard CPU设计。系统采用Verilog 描述,其中,x,y是输入操作数,op是操作码,z是输出结果,flag设计成-一个可以灵活配置、方便修改、资源占用少、兼容性是输出运算结果标志, calc 是运算使能控制信号,ack是运算好、可以在普通FPGA中实现的软核。结束应答。本模块完成op定义的运算,并给出标志位和应答。(2)内部堆栈stack: module stack(clk,rst.popush,.ata_ i,2 Javacard CPU的设计data_ o.sp, ack)。 其中,pop.push 是堆栈的弹出、压入操作信2.1 Java CPU的硬件实现技术在CPU的设计中,当从内存中取出下-条指令时,执行号,data_ i,data_ 0是数据输入输出,sp 是堆栈指针,ack 是堆这条指令有2种处理方法:硬件逻辑和微码序列4。硬件逻栈操作结束应答。本模块根据pop.push信号对堆栈进行操作。辑方法就是使用译码器、锁存器、计数器和其他-些逻辑部(3)微码ROM: module microcodeROM(mcp,mcr)。其中,件转移和操作数据,完成指令功能。微码方式是内部实现-mep是微码ROM的指针,mer是微码寄存器。根据微码指针个非常简洁、快速的微码处理器,此微码处理器的每条指令mcp,在mcr.上输出mcp处的微码数据。对应很简单的硬件动作(- -般是单周期指令),将要执行的(4)微码指令指针调整模块mcpc: module mepc(lk,rst,CPU指令作为索引,索引到微码ROM中的某个地址,通过执load,new_ mcp,hold,remap,inst,mcp)。 微码指针的操作有3种:行此地址处的一组微码完成指令的功能。硬件逻辑方法的优保持,重加载,重映射。重加载是用new.mcp的值作为新的点是能设计出更快的CPU,缺点是难以实现复杂的指令集,mcp值。重映射是将CPU指令instr对应的微码序列首地址同时会导致芯片面积增大。微码方法的优点是能减少芯片的作为新的mcp值。面积,能实现复杂指令集,缺点是速度可能会慢一一些。实际1)load 信号有效,用new. .mcp的值给mcp赋值; .的CPU设计中采用哪种方法是个权衡利弊的问题,在速度不2)hold信号有效,保持mcp值不变;3)remap信号有效,则将CPU指令instr作为索引,得到是关键的时候,微码方法是个很好的选择。Java语言是完全的面向对象语言,它的指令集也是为面instr指令对应的微码序列首地址,将首地址赋给mcp。向对象思想而设计的,在指令集层次上支持面向对象操作,以上3个信号均无效时,每时钟mcp则自动加1。(5)外存读写接口memrw。这样的指令要完成的操作是很复杂的,很难用硬件直接实现,module本文采用了微码设计。memrw(clk ,addr,data_ _read_ in,data_ _write_ _out,ack,rst,rd,2.2 wishbone接口wr,wb_ stb_ _out,wb_ cyc_ _out,wb_ _ack_ in,wb_ _addr_ out,wb_ dwishbone接口是opencores发布的片内总线接口标准,ata_ jin,wb_ data. _out,wb_ we_ out); .简洁高效。在此次的Javacard CPU设计中,接口采用了对外接口采用了开源的wishbone总线标准, wb*信号是wishbone接口。wishbone相关信号。根据rd, wr读写信号,操作wishbone2.3 Javacard CPU结构信号,等待wishbone的应答,然后将数据和应答信号反馈给本文设计的Javacard CPU核心部分是微码处理器,用微主控模块。中国煤化工码指令序列实现Javacard指令。微码处理器主要由以下几个2.5 Javacard CPMHCNMH G部分组成:主控逻辑core, 运算单元ALU,内部堆栈单元Javacard CPL征以n.共日州1付同-281-.(1)主控模块与其他从模块之间用使能信号和应答信号保持同步,从而可以不假设从模块在规定的时间内完成操作,K↓从模块在完成操作后给出应答信号即可,从而可以匹配不同res,"CPU速度的从模块。cure 谨店ROM|RAMIt LED(2)微码指令的设计:所有的微码指令为单指令,即不带任何操作数。微码指令本身包含所需操作的信息,如在哪2个寄存器之间转移数据。对于跳转操作等必须带后续操作数图2测试平台结构的指令,本文采取了变通的方法,先将所需操作数存入内部3.2结果说明寄存器,再执行跳转等指令。本设计是用verilog语言实现的,内部使用16位数据总详细例解:微码定义为16bits。 bit15 指示本微码是指令线,对外是8位的wishbone 总线,内部堆栈大小200H,微还是数据,bit15==1 表示是数据,此时微码的低8位是一一个码ROM为4KB ,外接512B的ROM和512B的RAMoJavacard数据,处理此微码时,要将此8位数据提取出来,存入内部定义了187条指令,其中47条指令是涉及32位整型数的,寄存器。bit15==0 表示是指令。当需要执行一个跳转Jmp对32位整型数的支持是可选的,本次没有实现对32位整型0x0809时,用微码方法表示为:数操作的指令,遇到未定义的指令的操作为宕机。共定义了0x8008 /bit15==1,是数据型微码109条微码指令。用微码指令序列来完成系统初始化操作和0x8009解释Javacard指令,用了3 273 条微码指令序列,约合每条JMP/指令型微码助记符Javacard指令用17条微码指令来执行(主要是有些面向对象执行时,遇到前面的两个数据型微码,会将08和09存.的复杂指令需要更多的微码来解释)。整个系统占用资源很入内部16位数据寄存器的高低8位,执行JMP指令时,隐少: 4个block RAM, 2052 个SLICE,可以在普通FPGA上含使用此内部数据寄存器。实现。将测试程序下载到板上的ROM中,以24MHz时钟运(3)所有的微码指令是单周期指令。由于采用了特点(2)行通过,验证了Javacard指令处理的正确性,性能上也完全中所述的单指令微码,微码指令执行时不需要读取后续操作满足Javacard虚拟机标准要求。数的周期,在执行当前微码指令的同时读取下一条微码指令,4总结可以做到每时钟执行- - 条微码。实现Javacard硬件CPU是Javacard的发展方向,它不需(4)简洁的主控模块状态机。所有Javacard指令均由微码要很高的性能,而是需要低成本、资源占用少、低功耗等特执行,而不采用硬件陷入、软件模拟方式,简化了主控逻辑:性。Javacard指令集是面向对象的复杂指令集,很难直接用的设计,仅有2个状态: EXEC_ MC和HLT, CPU 复位后,硬件实现。采用微码方式实现是很好的选择,每- - 条微码都一直处于执行微码EXEC.MC状态,直至遇到HLT微码指令。对应一个很简单的硬件动作,硬件很容易实现,并且使用的(5)I0采用内存映射方式统-一编址,避免了引入非Java资源也较少。用微码序列来完成Javacard指令,使硬件设计指令,保证了兼容性。保持简洁、灵活、易于修改,有些改动只需要重写微码序列2.6系统微码实现系统采用微码实现,用微码序列控制读取Java指令、存而不需要更改硬件设计;添加新的功能支持也只需要修改微储数据,实现Java 指令。Javacard 指令被解释执行的过程码,如硬件实现加密方法调用接口。Javacard硬件CPU的实如下:读取Javacardpc处的Javacard指令至指令寄存器Instr,现必将促进Javacard的应用。参考文献发出remap信号给微码指针调整模块MCPC,微码指针寄存1 Microsystems Sun Inc.. Java Card Platorm Seificaion[EB/OL.器mcp得到新的Javacard指令对应的微码序列首地址,mcp2006. ht:va.u.coproducts/javacard/specs.htmo.的变化使微码指令寄存器mcr变化为该微码序列的首个微码2 Schoeberl M. JOP: A Java Optimized Processor[C]//Proc. of指令,再由微码处理器执行此mcr中的微码。Java Technologies for Realtime and Embedded Systems Confe-3 Javacard CPU测试平台的FPGA实现ence. 2003.3.1外围接口和模块、测试平台框架3 Schoeberl M. Java Technology in an FPGA[C//Proceedings of测试平台是以一块xc2s200芯片为核心的简单开发板,the International Conference on Field-progRAMmable Logic and全部设计都在此芯片内实现,包括CPU逻辑、存储单元等,Is Applications. 2004.板上的8位LED指示灯用作I/0输出端口。测试平台的框架4 Hyde R. The Art of Assembly Language[EB/OL]. 2004-02. http:结构见图2。//webster.cs.ucr. edu/AoA/Linux/HTML/AoATOC.html.(上接第264页)机应用研究, 2000, 17(10): 4-8.1 Lee T.Modern Computer aided Maintenance of Manufacturing4韩立燕,尹仕任,青学江故障诊断专家系统应用研究[J]. 西南交通大学学报,1997, 32(5): 534-540.Equipment and System, Review and Prospective[J]. Computer &5李旭,刘辉林,徐心如.故障诊断专家系统的归纳学习方法[D].Industrial Engineering, 1995, 28(4): 793-811.小型微型计算机系统, 1997, 18(6): 70-74.2李林功,李继凯,谷金宏嵌入式系统集成开发环境的构成[].计6冯建农,赵中国煤化工印华南理工大算机工程, 2001, 27(5): 146-148.学学报,1997,13李.东,曹忠升,冯玉才,等移动数据库技术研究综述[].计算fYHCNM HG-282-.

论文截图
版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。