CN1525323A - 处理器以及用于产生在处理器中使用的程序的编译器 - Google Patents
处理器以及用于产生在处理器中使用的程序的编译器 Download PDFInfo
- Publication number
- CN1525323A CN1525323A CNA2004100066683A CN200410006668A CN1525323A CN 1525323 A CN1525323 A CN 1525323A CN A2004100066683 A CNA2004100066683 A CN A2004100066683A CN 200410006668 A CN200410006668 A CN 200410006668A CN 1525323 A CN1525323 A CN 1525323A
- Authority
- CN
- China
- Prior art keywords
- branch
- instruction
- program
- invalid
- district
- 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.)
- Pending
Links
- 238000001514 detection method Methods 0.000 claims abstract description 68
- 238000012360 testing method Methods 0.000 claims description 54
- 230000008859 change Effects 0.000 claims description 53
- 230000006870 function Effects 0.000 claims description 10
- 238000006243 chemical reaction Methods 0.000 claims description 7
- 230000009466 transformation Effects 0.000 claims description 2
- 238000012545 processing Methods 0.000 description 21
- 238000000034 method Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 8
- 238000012546 transfer Methods 0.000 description 7
- 238000013461 design Methods 0.000 description 2
- 238000005728 strengthening Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
- G06F9/4486—Formation of subprogram jump address
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种处理器,其能够防止超级用户程序被用户程序错误执行从而确保安全性并且能提高用于从用户程序到超级用户程序的有效分支的实时性能。处理器400包括CPU401,用来存储程序的闪存404,以及无效分支检测电路409。当用来将一种工作模式变化到另一种工作模式的分支指令被存储在闪存404中的程序执行时,无效分支检测电路409确定在分支目的地址中是否存在有分支使能指令。在没有分支使能指令时,无效分支检测电路409输出无效分支检测信号,因此可以防止超级用户程序被用户程序错误执行。
Description
技术领域
本发明涉及处理器,尤其涉及用于控制一个处理器的工作的分支指令。
背景技术
处理器一般根据存储在指令存储器中的程序来执行各种类型的处理比如数据处理和算法处理。
上述传统处理器将会参照附图进行描述。
图6是一个示出了采用通过传统技术开发的处理器的IC卡系统的方框图。
如图6所示,IC卡系统包括下述:CPU 101;指令ROM(只读存储器)102;RAM(随机存储器)103;闪存104;外部I/F 105;天线线圈106;地址总线107a;数据总线107d;中断控制电路108;以及分支使能地址判断电路109。
CPU 101包括指令取回单元1011,指令译码单元1012,指令执行单元1013,程序计数器1014,以及存储器存取控制电路1015。
CPU 101从指令ROM 102或闪存104中读取指令并且接着执行指令。通过天线线圈106和外部I/F 105可将程序数据外加到闪存104中。
图7示出了当采用通过传统技术开发的处理器时分隔成多个区域的存储器空间划分概念图。
在图7中,参考数字200是整个逻辑地址空间。整个逻辑地址空间200被分配到外部I/F 105,指令ROM 102,RAM 103以及闪存104中。在整个逻辑地址空间200中,指令ROM空间包括超级用户区211以及API(应用程序接口)区212,RAM区包括超级用户区221,API区222以及用户区223,闪存包括用户区231,以及外部I/F包括用户区241。
图8是在利用传统技术开发的处理器中使用的程序的概念图。在图8中,用户程序302中的指令组3021描述从用户程序302到超级用户程序301中的指令组3011的执行转移处理。用户程序302中的指令组3022描述从用户程序302到超级用户程序301中的指令组3012的执行转移处理。超级用户程序301中的指令组3011描述从用户程序302到指令组3012或3013的执行转移处理,但是图8中并没有示出处理的细节描述。
在利用传统技术开发的IC卡系统中,用户程序302防止超级用户程序301和API程序被错误执行,并且当包含工作模式转移的分支发生时使用下述方法来确保安全(例如见JP 2002-182931 A)。
首先,存储需要在用户程序302中执行的超级用户程序301或API程序的地址被设置到一个算法电阻上。其次,分支指令被执行到由分支使能地址判断电路109指定的专用分支使能地址上。第三,利用存储在分支使能地址中的条件判定程序来确定算法电阻中的地址的正确性。当算法电阻中的地址正确时,再次将分支指令执行到存储需要在用户程序302中执行的超级用户程序301或API程序的地址上。
当来自用户程序302的分支指令被执行到不由分支使能地址判断电路109指定的超级用户程序301或API程序中的地址上时,分支使能地址判断电路109输出中断请求,因此可以确保安全。
可是,在使用如上所述的处理器的IC卡系统中,条件判定程序必须在执行从用户程序302到超级用户程序301转移的同时执行,并且因此降低了实时性能。
发明内容
因此,如前所述很清楚,本发明的一个目的就是要提供一种能够提高实时性能同时确保例如从用户程序到超级用户程序执行转移安全的处理器。
本发明的处理器包括CPU,用来存储程序的指令存储器,以及无效分支检测单元。当利用存储在指令存储器中的程序来执行将一种工作模式变化到另一种工作模式的分支指令时,无效分支检测单元确定在分支目的地址中是否存在分支使能指令。在出现分支使能指令时,无效分支检测单元允许工作模式的变化,而在没有分支使能指令时,无效分支检测单元输出无效分支检测信号。
在带有本发明的上述结构的处理器中,工作模式的变化意味着,即将一种工作模式变化到另一个要求权限高于起始工作模式的工作模式中。
在带有本发明的上述结构的处理器中,当来自用户程序的分支指令被执行到例如超级用户程序或API程序中的地址上同时分支使能指令不存储在分支目的地址中时,无效分支检测单元输出无效分支检测信号。这可以防止超级用户程序或其类似物被用户程序错误执行并且因此确保安全。而且,当在用户程序中正确执行超级用户程序或API程序时,分支指令能够直接执行到存储需要在用户程序中执行的超级用户程序或API程序的地址上。因此,有可能缩短用于工作模式转移的处理时间并且提高实时性能。
附图说明
图1示出了在实施例1、2和3中的处理器的电路结构;
图2是实施例1中的程序的概念图;
图3是实施例2、3和4中的程序的概念图;
图4示出了实施例2中的处理器的电路结构;
图5示出了实施例5中的编译器的结构;
图6示出了传统处理器的电路结构;
图7示出了分隔成多个区域的地址空间分布;
图8是传统程序的概念图。
优选实施例的具体实施方式
本发明的处理器可以包括下述:用来从由CPU执行的指令的程序计数器的值来判断执行区的执行区判断单元;用来根据执行区判断单元的判断结果来判定执行工作模式的执行工作模式判定单元;当利用存储在指令存储器中的程序来执行分支指令时用来从分支目的地址中的值来判断分支目的区的分支目的区判断单元;用来根据分支目的区判断单元的判断结果来确定分支目的工作模式的分支目的工作模式判定单元;以及用来通过将由执行工作模式判定单元判定的执行工作模式与由分支目的工作模式判断定单元判定的分支目的工作模式进行比较来检测工作模式的变化的工作模式变化检测单元。优选地是当利用存储在指令存储器中的程序执行分支指令同时在分支目的地址中不存在分支使能指令时,在工作模式变化检测单元检测到工作模式变化的条件下,无效分支检测单元输出无效分支检测信号。
在上述结构中,优选地是将不与任何其它指令冲突的专用指令代码分配到分支使能指令中。这可以在不影响用于处理其它指令的资源的基础上提高实时性能。
在本发明的处理器中,还优选地是当利用存储在指令存储器中的程序执行分支指令同时在分支目的地址中不存在分支使能指令时,在工作模式变化检测单元检测到工作模式变化的条件下,无效分支检测单元输出无效分支检测信号,并且由工作模式检测单元检测到的工作模式变化不与由分支使能指令专用的工作模式的任何变化冲突。在此种结构中,优选的是将与其它指令至少其中之一对应的指令代码分配到分支使能指令中。还优选地是处理器还包括用来通过检测分支使能指令将分支使能指令的指令代码转换成对应于其它指令的指令代码的分支使能指令代码转换单元。
优选地是本发明的处理器还包括用来通过检测从无效分支检测单元输出的无效分支检测信号来输出中断请求到CPU的中断输出单元。
本发明的处理器还可以包括用来通过检测从无效分支检测单元输出的无效分支检测信号来输出复位信号到CPU中的复位输出单元。
本发明的处理器还可以包括用来通过检测从无效分支检测单元输出的无效分支检测信号来将分支目的地址中的指令转换成无定义指令的指令转换单元。
本发明的编译器产生在根据上述结构中的任何一个的处理器中使用的程序。当源程序被编译成汇编程序时,编译器通过确定函数结构和源程序中的工作模式在超级用户区中的程序的预先指定位置中插入分支使能指令。
在下文,将会参照附图描述本发明的处理器和编译器的具体实例。
[实施例1]
将会参照附图1描述本发明的处理器400的一个实施例。
图1示出了使用本实施例的处理器400的IC卡系统的方框图。
如图1所示,IC卡系统包括下述:CPU 401;指令ROM 402;RAM403;闪存404;外部I/F 405;天线线圈406;地址总线407a;数据总线407d;中断控制电路408;无效分支检测电路409;执行区判断电路410;执行工作模式判定电路411;分支目的区判断电路412;分支目的工作模式判定电路413;以及工作模式变化检测电路414。
CPU 401包括指令取回单元4011,指令译码单元4012,指令执行单元4013,程序计数器4014,以及存储器存取控制电路4015。
CPU 401从指令ROM 402或闪存404中读取指令并且接着执行指令。通过天线线圈406和外部I/F405可将程序数据外加到闪存404中。
图7示出了当使用本实施例的处理器400时被分隔成多个区域的存储器空间划分的概念图。
在图7中,参考数字200是整个逻辑地址空间。指令ROM空间包括超级用户区211以及API区212,RAM区包括超级用户区221,API区222以及用户区223,闪存包括用户区231,以及外部I/F区包括用户区241。
图2是在本实施例的处理器400中使用的程序的概念图。
如图2所示,在超级用户区中的超级用户程序501和API区中的API程序502每个都包括一个分支使能指令(accept),用来当执行从用户区中的用户程序503转移到超级用户区中的超级用户程序501或API区中的API程序502时利用分支指令(jmp)确定分支目的地址是否有效。分支使能指令(accept)有一个不与现有的指令的任何指令代码冲突的专用指令代码。
执行区判断电路410从执行程序计数器中的值S4018来判断指令当前在如图7所示的存储器空间中的超级用户区、API区或用户区中的哪一个区中被执行。判断结果作为执行区判断信号S410输出给执行工作模式判定电路411。执行工作模式判定电路411根据执行区判断信号S410的值来给超级用户模式、API模式和用户模式中的任何一个设定执行工作模式并且作为执行工作模式判定信号S411输出结果。
CPU 401通过使用存储器存取控制电路4015选取指令取回程序计数器的值S4015或分支目的地址的值S4014并且作为存储器存取地址信号S4016输出结果。
分支目的区判断电路412从存储器存取地址信号S4016来判断在如图7所示的存储器空间中的超级用户区、API区或用户区中的哪一个区是分支目的区。判断结果作为分支目的区判断信号S412输出。分支目的工作模式判定电路413根据分支目的区判断信号S412的值给超级用户模式、API模式和用户模式中任何一个设定工作模式并且作为分支目的工作模式判定信号S413输出。
工作模式变化检测电路414从执行工作模式判定信号S411和分支目的工作模式判定信号S413中检测工作模式的变化并且输出工作模式变化检测信号S414。
无效分支检测电路409根据工作模式变化检测信号S414和指令取回数据S407d实现下述处理。
当无效分支检测电路409通过工作模式变化检测信号S414检测到产生一个包含从用户程序到API程序或超级用户程序的执行转移的分支指令时,无效分支检测电路409解译存储在分支目的地址中的指令代码。当被解译的指令代码不是来自用户程序中的分支使能的分支使能指令(accept)时,无效分支检测电路409激活无效分支检测信号S409。
依据工作模式变化检测信号S414,当无效分支检测电路409检测到没有工作模式变化或当无效分支检测电路409检测到即使工作模式有变化,但这种工作模式变化既不是从用户程序到API程序的变化也不是从用户程序到超级用户程序的变化时,无效分支检测电路409不激活无效分支检测信号S409。
在CPU 401中的分支使能指令(accept)的处理过程通过增强指令译码单元4012的功能和允许指令执行单元4013的控制与无操作指令相同,可以在不影响作为CPU 401中数据/算法处理过程资源的最短执行周期实现。
当包含工作模式转移的分支指令被执行同时分支指令执行使能的分支使能指令没有存储在分支目的地址中时,无效分支检测电路409输出无效分支检测信号S409。无效分支检测信号S409被送到或门电路415。或门电路415还接收来自中断控制电路408的中断信号S4081。当无效分支检测信号S409被激活时,中断请求S40812输出给CPU 401。
这样可以防止存储在指令ROM 402中的超级用户程序被例如外加在闪存404中的用户程序错误执行并且因此可以确保安全。由于正确处理,分支指令可以被直接执行到存储需要执行的程序的地址上,使得在最短的执行周期中实现工作模式转移和提高实时性能成为可能。
在本实施例中,当无效分支检测信号S409被激活时,中断请求输出给CPU 401。然而也可以使用给CPU 401输出复位信号的复位控制电路来取代中断控制电路408,如图1所示。在此种情况下,当无效分支检测信号S409被激活时,复位信号S40812输出给CPU 401。与中断请求一样,复位请求也能够提供防止错误执行超级用户程序的效果。
[实施例2]
下述是使用本发明的实施例2的处理器400的IC卡系统的说明。
在本实施例中的IC卡系统的硬件结构与实施例1中的IC卡系统相同(见图1)。而且,当使用本实施例的处理器400时分隔成多个区域的存储器空间划分也与实施例1中的相同(见图7)。
图3是在本实施例的处理器400中使用的程序的概念图。
API存储空间中的API程序602包括分支使能指令(accept usr),用来通过分支指令(jmp)来确定当执行从用户区中的用户程序603转移到API区中的API程序602时API区中的分支目的地址是否有效。
超级用户区中的超级用户程序601还包括分支使能指令(acceptusr),用来通过分支指令(jmp)来确定当执行从用户区中的用户程序603转移到超级用户区中的超级用户程序601时超级用户区中的分支目的地址是否有效。
超级用户区中的超级用户程序601还包括分支使能指令(acceptapi),用来通过分支指令(jmp)来确定当执行从API区中的API程序602转移到超级用户区中的超级用户程序601时超级用户区中的分支目的地址是否有效。
分支使能指令(accept)有一个不与现有的指令的任何指令代码冲突的专用指令代码。
执行区判断电路410从执行程序计数器中的值S4018来判断指令当前在如图7所示的存储器空间中的超级用户区、API区或用户区中的哪一个区中被执行。判断结果作为执行区判断信号S410输出。执行工作模式判定电路411根据执行区判断信号S410的值来给超级用户模式,API模式和用户模式中的任何一个设定执行工作模式并且作为执行工作模式判定信号S411输出结果。
CPU 401通过使用存储器存取控制电路4015选取指令取回程序计数器的值S4015或分支目的地址的值S4014并且作为存储器存取地址信号S4016输出结果。
分支目的区判断电路412从存储器存取地址信号S4016来判断在如图7所示的存储器空间中的超级用户区、API区或用户区中的哪一个区是分支目的区。判断结果作为分支目的区判断信号S412输出。分支目的工作模式判定电路413根据分支目的区判断信号S412的值给超级用户模式、API模式和用户模式中任何一个设定工作模式并且作为分支目的工作模式判定信号S413输出。
工作模式变化检测电路414从执行工作模式判定信号S411和分支目的工作模式判定信号S413中检测工作模式的变化并且输出工作模式变化检测信号S414。
无效分支检测电路409根据工作模式变化检测信号S414和指令取回数据S407d实现下述处理。
当无效分支检测电路409通过工作模式变化检测信号S414检测到产生一个包含从用户程序到API程序或超级用户程序的执行转移的分支指令时,无效分支检测电路409解译存储在分支目的地址中的指令代码。当被解译的指令代码不是来自用户程序中的分支使能的分支使能指令(accept usr)时,无效分支检测电路409激活无效分支检测信号S409。
当无效分支检测电路409通过工作模式变化检测信号S414检测到产生一个包含从API程序到超级用户程序的执行转移的分支指令时,无效分支检测电路409解译存储在分支目的地址中的指令代码。当被解译的指令代码不是来自用户程序中的分支使能的分支使能指令(accept usr)或来自API程序中的分支使能的分支使能指令(acceptapi)时,无效分支检测电路409激活无效分支检测信号S409。
依据工作模式变化检测信号S414,当无效分支检测电路409检测到没有工作模式变化或当无效分支检测电路409检测到即使工作模式有变化,但这种工作模式变化不是下述任何其中之一:从用户程序到API程序的变化,从用户程序到超级用户程序的变化或者从API程序到超级用户程序的变化,此时无效分支检测电路409不激活无效分支检测信号S409。
在CPU 401中的分支使能指令(accept)的处理通过增强指令译码单元4012的功能和允许指令执行单元4013的控制与无操作指令相同,可以在不影响作为CPU 401中数据/算法处理过程资源的最短执行周期实现。
当包含工作模式转移的分支指令被执行同时分支指令执行使能的分支使能指令没有存储在分支目的地址中时,无效分支检测电路409输出无效分支检测信号S409。
无效分支检测信号S409被送到或门电路415。或门电路415还接收来自中断控制电路408的中断信号S4081。当无效分支检测信号S409被激活时,中断请求S40812输出给CPU 401。这样可以防止存储在指令ROM 402中的超级用户程序被例如外加在闪存404中的用户程序错误执行并且因此可以确保安全。由于正确处理,分支指令可以被直接执行到存储需要执行的程序的地址上,使得在最短的执行周期中实现工作模式转移和提高实时性能成为可能。
在本实施例中,当无效分支检测信号S409被激活时,中断请求输出给CPU 401。然而也可以使用给CPU 401输出复位信号的复位控制电路来取代中断控制电路408,如图1所示。在此种情况下,当无效分支检测信号S409被激活时,复位信号S40812输出给CPU 401。与中断请求一样,复位请求也能够提供防止错误执行超级用户程序的效果。
[实施例3]
下述是使用本发明的实施例3的处理器400的IC卡系统的说明。
在本实施例中的IC卡系统的硬件结构与实施例1中的IC卡系统相同(见图1)。而且,当使用本实施例的处理器400时分隔成多个区域的存储器空间划分也与实施例1中的相同(见图7)。。
图3是在本实施例的处理器400中使用的程序的概念图。
API区中的API程序602包括分支使能指令(accept usr),用来通过分支指令(jmp)来确定当执行从用户区中的用户程序603转移到API区中的API程序602时API区中的分支目的地址是否有效。
超级用户区中的超级用户程序601还包括分支使能指令(acceptusr),用来通过分支指令(jmp)来确定当执行从用户区中的用户程序603转移到超级用户区中的超级用户程序601时超级用户区中的分支目的地址是否有效。
超级用户区中的超级用户程序601还包括分支使能指令(acceptapi),用来通过分支指令(jmp)来确定当执行从API区中的API程序602转移到超级用户区中的超级用户程序601时超级用户区中的分支目的地址是否有效。
如上所述,在本实施例的处理器400中使用的程序以与实施例2中的相同方式描述。可是,本实施例中的处理器400在下述方面与实施例2有区别。对于本实施例中的处理器400,专用指令代码不单独分配到来自用户程序的分支使能的分支使能指令(accept usr)和来自API程序的分支使能的分支使能指令(accept api)上。取代的是,任何现有的指令代码相同,被分配到分支使能指令中,该代码在实际程序中不经常使用并且不会影响CPU 401中用于数据/算法处理的资源。
执行区判断电路410从执行程序计数器中的数值S4018来判断指令当前在如图7所示的存储器空间中的超级用户区、API区或用户区中的哪一个区中被执行。判断结果作为执行区判断信号S410输出。执行工作模式判定电路411根据执行区判断信号S410的值来给超级用户模式,API模式和用户模式中的任何一个设定执行工作模式并且作为执行工作模式判定信号S411输出结果。
CPU 401通过使用存储器存取控制电路4015选取指令取回程序计数器值S4015或分支目的地址的值S4014并且作为存储器存取地址信号S4016输出结果。
分支目的区判断电路412从存储器存取地址信号S4016来判断在如图7所示的存储器空间中的超级用户区、API区或用户区中的哪一个区是分支目的区。判断结果作为分支目的区判断信号S412输出。分支目的工作模式判定电路413根据分支目的区判断信号S412的值给超级用户模式、API模式和用户模式中任何一个设定工作模式并且作为分支目的工作模式判定信号S413输出。
工作模式变化检测电路414从执行工作模式判定信号S411和分支目的工作模式判定信号S413中检测工作模式的变化并且输出工作模式变化检测信号S414。
无效分支检测电路409根据工作模式变化检测信号S414和指令取回数据S407d实现下述处理。
当无效分支检测电路409通过工作模式变化检测信号S414检测到产生一个包含从用户程序到API程序或超级用户程序的执行转移的分支指令时,无效分支检测电路409解译存储在分支目的地址中的指令代码。当被解译的指令代码不是来自用户程序中的分支使能的分支使能指令(accept usr)时,无效分支检测电路409激活无效分支检测信号S409。
当无效分支检测电路409通过工作模式变化检测信号S414检测到产生一个包含从API程序到超级用户程序的执行转移的分支指令时,无效分支检测电路409解译存储在分支目的地址中的指令代码。当被解译的指令代码不是来自用户程序中的分支使能的分支使能指令(accept usr)或来自API程序中的分支使能的分支使能指令(acceptapi)时,无效分支检测电路409激活无效分支检测信号S409。
依据工作模式变化检测信号S414,当无效分支检测电路409检测到没有工作模式变化或当无效分支检测电路409检测到即使工作模式有变化,但这种工作模式变化不是下述任何其中之一:从用户程序到API程序的变化,从用户程序到超级用户程序的变化或者从API程序到超级用户程序的变化,此时无效分支检测电路409不激活无效分支检测信号S409。
分支使能指令(accept)被分配到与任何现有的指令相同的指令代码中,并且因此存在的译码器可以作为指令译码单元4012使用。而且,CPU401中分支使能指令(accept)的处理可以以与分配的现有指令相同的方式和执行周期来实现。
当包含工作模式转移的分支指令被执行同时分支指令执行使能的分支使能指令没有存储在分支目的地址中时,无效分支检测电路409输出无效分支检测信号s409。
无效分支检测信号s409被送到或门电路415。或门电路415还接收来自中断控制电路408的中断信号s4081。当无效分支检测信号s409被激活时,中断请求s40812输出给CPU 401。这样可以防止存储在指令ROM 402中的超级用户程序被例如外加在闪存404中的用户程序错误执行并且因此可以确保安全性。
由于正确处理,分支指令可以被直接执行到存储需要执行的程序的地址上,这使得以分配到分支使能指令的每个现有指令的执行周期相同的执行周期实现工作模式转移和提高实时性能成为可能。而且,使用现有的元件可以使设计CPU 401更加简单。
在本实施例中,当无效分支检测信号S409被激活时,中断请求输出给CPU 401。然而也可以使用给CPU 401输出复位信号的复位控制电路来取代中断控制电路408,如图1所示。在此种情况下,当无效分支检测信号S409被激活时,复位信号S40812输出给CPU 401。与中断请求一样,复位请求也能够提供防止错误执行超级用户程序的效果。
[实施例4]
图4示出了使用实施例4的处理器700的IC卡系统的方框图。
如图4所示,IC卡系统包括下述:CPU 701;指令ROM 702;RAM703;闪存704;外部I/F 705;天线线圈706;地址总线707a;数据总线707d;中断控制电路708;无效分支检测电路709;执行区判断电路710;执行工作模式判定电路711;分支目的区判断电路712;分支目的工作模式判定电路713;工作模式变化判定电路714以及分支使能指令代码转换电路715。
CPU 701包括指令取回单元7011,指令译码单元7012,指令执行单元7013,程序计数器7014,以及存储器存取控制电路7015。
CPU 701从指令ROM 702或闪存704中读取指令并且接着执行指令。通过天线线圈706和外部I/F 705可将程序数据外加在闪存704上。
当使用本实施例的处理器700时,分隔成多个区域的存储器空间划分如图7所示,在实施例1中已经提及。
图3是在实施例4的处理器700中使用的程序的概念图。
API区中的API程序602包括分支使能指令(accept usr),用来通过分支指令(jmp)来确定当执行从用户区中的用户程序603转移到API区中的API程序602时API区中的分支目的地址是否有效。
超级用户区中的超级用户程序601还包括分支使能指令(acceptusr),用来通过分支指令(jmp)来确定当执行从用户区中的用户程序603转移到超级用户区中的超级用户程序601时超级用户区中的分支目的地址是否有效。
超级用户区中的超级用户程序601还包括分支使能指令(acceptapi),用来通过分支指令(jmp)来确定当执行从API区中的API程序602转移到超级用户区中的超级用户程序601时超级用户区中的分支目的地址是否有效。
如上所述,在本实施例的处理器700中使用的程序以与实施例3中的相同方式描述。可是,在本实施例中,分支使能指令(accept)有一个不与其它任何现有指令的指令代码冲突的专用指令代码。
执行区判断电路710从执行程序计数器中的数值S7018来判断指令当前在如图7所示的存储器空间中的超级用户区、API区或用户区中的哪一个区中被执行。判断结果作为执行区判断信号S710输出。执行工作模式判定电路711根据执行区判断信号S710的值来给超级用户模式,API模式和用户模式中的任何一个设定执行工作模式并且作为执行工作模式判定信号S711输出结果。
CPU 701通过使用存储器存取控制电路7015选取指令取回程序计数器的值S7015或分支目的地址的值S7014并且作为存储器存取地址信号S7016输出结果。
分支目的区判断电路712从存储器存取地址信号S7016中判断在如图7所示的存储器空间中的超级用户区、API区或用户区中的哪一个区是分支目的区。判断结果作为分支目的区判断信号S712输出。分支目的工作模式判定电路713根据分支目的区判断信号S712的值给超级用户模式、API模式和用户模式中任何一个设定工作模式并且作为分支目的工作模式判定信号S713输出。
工作模式变化检测电路714从执行工作模式判定信号S711和分支目的工作模式判定信号S713中检测工作模式的变化并且输出工作模式变化检测信号S714。
无效分支检测电路709根据工作模式变化检测信号S714和指令取回数据S707d实现下述处理。
当无效分支检测电路709通过工作模式变化检测信号S714检测到产生一个包含从用户程序到API程序或超级用户程序的执行转移的分支指令时,无效分支检测电路709解译存储在分支目的地址中的指令代码。当被解译的指令代码不是来自用户程序中的分支使能的分支使能指令(accept usr)时,无效分支检测电路709激活无效分支检测信号S709。
当无效分支检测电路709通过工作模式变化检测信号S714检测到产生一个包含从API程序到超级用户程序的执行转移的分支指令时,无效分支检测电路709解译存储在分支目的地址中的指令代码。当被解译的指令代码不是来自用户程序中的分支使能的分支使能指令(accept usr)或来自API程序中的分支使能的分支使能指令(acceptapi)时,无效分支检测电路709激活无效分支检测信号S709。
依据工作模式变化检测信号S714,当无效分支检测电路709检测到没有工作模式变化或当无效分支检测电路709检测到即使工作模式有变化,但这种工作模式变化不是下述任何其中之一:从用户程序到API程序的变化,从用户程序到超级用户程序的变化或者从API程序到超级用户程序的变化,此时无效分支检测电路709不激活无效分支检测信号S709。
当无效分支检测信号S709未被激活时,分支使能指令代码转换电路715将来自用户程序的分支使能的分支使能指令(accept usr)的指令代码或来自API程序的分支使能的分支使能指令(accept api)的指令代码转换成无操作指令,该两个指令代码都是作为指令取回数据s707d接收的。当无效分支检测信号S709被激活时,分支使能指令代码转换电路715将作为指令取回数据s707d接收的所有指令代码转换成无定义指令。然后,分支使能指令代码转换电路715输出指令取回数据信号s7011给CPU 701。
分支使能指令被转换成CPU 701中的任何现有指令,并且因此现有的译码器可以作为指令译码单元7012使用。而且,CPU 701中的处理可以以与分配的现有指令相同的方式和执行周期来实现。
当包含工作模式转移的分支指令被执行同时分支指令执行使能的分支使能指令没有存储在分支目的地址中时,无效分支检测电路709输出无效分支检测信号s709。这样可以防止存储在指令ROM 702中的超级用户程序被例如外加在闪存704上的用户程序错误执行,并且因此可以确保安全性。
而且,分支使能指令代码转换电路715输出给CPU 701已经转换成无定义指令的指令取回数据信号s7011。无定义指令导致CPU 701中执行另外的处理,该处理干扰随后的指令执行,因此安全性得到保证。
由于正确处理,分支指令可以被直接执行到存储需要执行的程序的地址上,使得在最短的执行周期中实现工作模式转移和提高实时性能成为可能。而且,使用现有的元件可以使设计CPU 701更加简单。
在实施例1到4中的任何一个中,无效分支检测单元、执行区判断单元、执行工作模式判定单元以及类似物都是作为独立电路单独形成的。可是,可以使用绑定这些部件的任何方法,比如诸如执行区判断单元和执行工作模式判定单元之类的两个或更多部件可以作为单个电路提供。这种结构也在本发明的技术范围之类。
在实施例1到4中的任何一个中,本发明的处理器适用于IC卡系统。可是,本发明的处理器的应用并不局限于此。
[实施例5]
图5示出了实施例5的编译器的结构和编译流程。
本实施例的编译器802接收C语言源代码801并且将其编译成汇编语言803。
C语言源代码801包括在用户区中描述的主函数(main_1)16011和在超级用户区中描述的函数16012(function_a)、16013(function_b)。在编程时,用户程序的主函数(main_1)16011调用函数16012(function_a)、16013(function_b)。
为了编译,编译器802判断C语言源程序代码801中的函数在超级用户区或用户区的哪个区中描述。然后,编译器802确定在超级用户中描述的函数为超级用户程序。而且,编译器802在由超级用户程序的源代码产生的汇编代码之前插入分支使能指令(accept)16032、16033。
因此,即使在超级用户区中开发程序的系统设计人员使用C语言来描述程序,在编译过程中可以自动插入分支使能指令(accept)。这能确保当含有工作模式转移的分支发生时指令执行的安全性。
当来自用户程序的分支指令被执行到超级用户程序或API程序中的地址同时分支使能指令没有存储在分支目的地址中时,无效分支检测单元输出无效分支检测信号。这样可以防止超级用户程序被用户程序错误执行并且因此可以确保安全性。而且,当超级用户程序或API程序在用户程序中正确执行时,分支指令可以被直接执行到存储需要在用户程序中执行的超级用户程序或API程序的地址上。因此,有可能缩短用于工作模式转移的处理过程时间和提高实时性能。
本发明在不离开其精神或本质特性的基础上可以体现为其它形式。在本应用中公开的实施例无论从哪方面来看都应被认为是说明性的并且不受限于此。本发明的范围由附属的权利要求书指定而不是由上述说明指定。并且在权利要求书的等价的意义和范围内出现的所有修改都是被包括在其中的。
Claims (10)
1、一种处理器包括:
CPU;
用来存储程序的指令存储器;以及
无效分支检测单元,
其中当利用存储在指令存储器中的程序执行用来将一个工作模式变化到另一个工作模式的分支指令时,无效分支检测单元确定在分支目的地址中是否存在分支使能指令,并且在分支使能指令出现时,无效分支检测单元允许工作模式变化,而在没有分支使能指令时,无效分支检测单元输出无效分支检测信号。
2、根据权利要求1所述的处理器,还包括:
执行区判断单元,用来从CPU执行的指令的程序计数器的值判断执行区;
执行工作模式判定单元,用来根据执行区判断单元的判断结果来判定执行工作模式;
分支目的区判断单元,用来当分支指令被存储在指令存储器中的程序执行时从分支目的地址的值来判断分支目的区;
分支目的工作模式判定单元,用来根据分支目的区判断单元的判断结果来判定分支目的工作模式;以及
工作模式变化检测单元,用来通过将由执行工作模式判定单元判定的执行工作模式与由分支目的工作模式判定单元判定的分支目的工作模式进行比较来检测工作模式的变化;
其中当由存储在指令存储器中的程序执行分支指令同时在分支目的地址中不存在分支使能指令时,无效分支检测单元在工作模式变化检测单元检测到工作模式变化的条件下输出无效分支检测信号。
3、根据权利要求2所述的处理器,其中当通过存储在指令存储器中的程序执行分支指令,同时在分支目的地址中没有分支使能指令时,在工作模式变化检测单元检测到工作模式中的变化的条件下,无效分支检测单元输出无效分支检测信号,并且通过工作模式检测单元检测到的工作模式变化不与由分支使能指令专用的任何工作模式变化冲突。
4、根据权利要求1所述的处理器,其中不与其它任何指令冲突的专用指令代码被分配到分支使能指令中。
5、根据权利要求1所述的处理器,其中与其它指令中的至少一个对应的指令代码被分配到分支使能指令中。
6、根据权利要求3所述的处理器,还包括用来通过检测分支使能指令将分支使能指令的指令代码转换成对应于其它指令的指令代码的分支使能指令代码转换单元。
7、根据权利要求1所述的处理器,还包括通过检测从无效分支检测单元输出的无效分支检测信号将中断请求输出给CPU的中断输出单元。
8、根据权利要求1所述的处理器,还包括通过检测从无效分支检测单元输出的无效分支检测信号将复位信号输出给CPU的复位输出单元。
9、根据权利要求1所述的处理器,还包括通过检测从无效分支检测单元输出的无效分支检测信号将分支目的地址中的指令转换成无定义指令的指令转换单元。
10、用来产生在根据权利要求1到9中任何一条所述的处理器中使用的程序的编译器,其中当源程序被编译成汇编程序时,编译器通过确定源程序中的函数结构和工作模式在超级用户区中的程序的预先指定位置插入分支使能指令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003046484 | 2003-02-24 | ||
JP046484/2003 | 2003-02-24 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1525323A true CN1525323A (zh) | 2004-09-01 |
Family
ID=32866542
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2004100066683A Pending CN1525323A (zh) | 2003-02-24 | 2004-02-24 | 处理器以及用于产生在处理器中使用的程序的编译器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20040168047A1 (zh) |
CN (1) | CN1525323A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103052941A (zh) * | 2010-08-11 | 2013-04-17 | Arm有限公司 | 非法模式改变的处置 |
CN101694627B (zh) * | 2009-10-23 | 2013-09-11 | 天津大学 | 基于可配置处理器的编译器系统 |
CN105892992A (zh) * | 2015-01-26 | 2016-08-24 | 安恒通(北京)科技有限公司 | 用于反编译定位的方法、装置及应用 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007052481A (ja) * | 2005-08-15 | 2007-03-01 | Matsushita Electric Ind Co Ltd | Icカード用lsi |
GB2448149B (en) * | 2007-04-03 | 2011-05-18 | Advanced Risc Mach Ltd | Protected function calling |
GB2448151B (en) * | 2007-04-03 | 2011-05-04 | Advanced Risc Mach Ltd | Memory domain based security control within data processing systems |
US8006078B2 (en) * | 2007-04-13 | 2011-08-23 | Samsung Electronics Co., Ltd. | Central processing unit having branch instruction verification unit for secure program execution |
JP5133387B2 (ja) * | 2010-10-22 | 2013-01-30 | シャープ株式会社 | 複合機、制御プログラムおよび記録媒体 |
CN104025041B (zh) | 2011-12-29 | 2018-05-25 | 英特尔公司 | 管理员模式执行保护 |
US10210349B2 (en) * | 2012-02-08 | 2019-02-19 | Arm Limited | Data processing apparatus and method using secure domain and less secure domain |
US9213828B2 (en) | 2012-02-08 | 2015-12-15 | Arm Limited | Data processing apparatus and method for protecting secure data and program code from non-secure access when switching between secure and less secure domains |
GB201217531D0 (en) * | 2012-10-01 | 2012-11-14 | Advanced Risc Mach Ltd | ARMv7-M Asset Protection Proposal |
US9477834B2 (en) | 2012-02-08 | 2016-10-25 | Arm Limited | Maintaining secure data isolated from non-secure access when switching between domains |
US9116711B2 (en) | 2012-02-08 | 2015-08-25 | Arm Limited | Exception handling in a data processing apparatus having a secure domain and a less secure domain |
US20140101412A1 (en) * | 2012-10-04 | 2014-04-10 | Ricardo Ramirez | Speculative privilege elevation |
GB2517493A (en) * | 2013-08-23 | 2015-02-25 | Advanced Risc Mach Ltd | Handling access attributes for data accesses |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4809160A (en) * | 1985-10-28 | 1989-02-28 | Hewlett-Packard Company | Privilege level checking instruction for implementing a secure hierarchical computer system |
US5764969A (en) * | 1995-02-10 | 1998-06-09 | International Business Machines Corporation | Method and system for enhanced management operation utilizing intermixed user level and supervisory level instructions with partial concept synchronization |
US5761490A (en) * | 1996-05-28 | 1998-06-02 | Hewlett-Packard Company | Changing the meaning of a pre-decode bit in a cache memory depending on branch prediction mode |
US6128607A (en) * | 1996-07-12 | 2000-10-03 | Nordin; Peter | Computer implemented machine learning method and system |
-
2004
- 2004-02-20 US US10/783,282 patent/US20040168047A1/en not_active Abandoned
- 2004-02-24 CN CNA2004100066683A patent/CN1525323A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101694627B (zh) * | 2009-10-23 | 2013-09-11 | 天津大学 | 基于可配置处理器的编译器系统 |
CN103052941A (zh) * | 2010-08-11 | 2013-04-17 | Arm有限公司 | 非法模式改变的处置 |
US8959318B2 (en) | 2010-08-11 | 2015-02-17 | Arm Limited | Illegal mode change handling |
CN103052941B (zh) * | 2010-08-11 | 2016-03-09 | Arm有限公司 | 非法模式改变的处置 |
CN105892992A (zh) * | 2015-01-26 | 2016-08-24 | 安恒通(北京)科技有限公司 | 用于反编译定位的方法、装置及应用 |
CN105892992B (zh) * | 2015-01-26 | 2018-05-08 | 安一恒通(北京)科技有限公司 | 用于反编译定位的方法、装置及应用 |
Also Published As
Publication number | Publication date |
---|---|
US20040168047A1 (en) | 2004-08-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1525323A (zh) | 处理器以及用于产生在处理器中使用的程序的编译器 | |
CN1752934A (zh) | 编译器、编译方法以及编译程序 | |
CN1203404C (zh) | 具有逐模块验证的完全迟缓链接 | |
CN1224903C (zh) | 逐模块验证 | |
CN1265290C (zh) | 优化链接后代码的方法 | |
CN1704763A (zh) | 电子设备诊断方法和系统 | |
CN1834922A (zh) | 程序变换方法及程序变换系统 | |
CN1804803A (zh) | 具有对异步程序流程建模的软件工具 | |
CN1570870A (zh) | 终极管道和最优重排技术 | |
CN101036127A (zh) | 源码检查器、方法、程序以及存储介质 | |
CN101055523A (zh) | 将软件程序代码断言转换为硬件描述语言程序代码的方法 | |
CN1655118A (zh) | 处理器和编译器 | |
CN1704908A (zh) | 定位程序异常的方法 | |
CN1641568A (zh) | 基板管理控制器的固件自动配置系统及方法 | |
CN1904853A (zh) | 一种嵌入式软件装载调试方法及其系统 | |
CN1200342C (zh) | 指令变换装置和变换方法 | |
CN1485732A (zh) | 应用软件自动安装与自动修复的方法 | |
CN1614563A (zh) | 模板编译方法 | |
CN1902586A (zh) | 用于减少硬件资源冲突的数据布局机制 | |
CN1900910A (zh) | 二进制翻译中经由跳转表的多目标分支语句的识别方法 | |
CN1879066A (zh) | 激励用于控制工作过程的函数的方法和装置 | |
CN1169046C (zh) | 完全迟缓链接 | |
CN1567223A (zh) | 程序生成装置、方法及程序 | |
CN1511281A (zh) | 锁定在一个数据处理设备中的源寄存器 | |
CN1091842A (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 | ||
AD01 | Patent right deemed abandoned | ||
C20 | Patent right or utility model deemed to be abandoned or is abandoned |