KR20070118663A - 고유 명령어를 이용한 레지스터 화일로서의 오퍼랜드스택에 대한 마이크로프로세서 엑세스 - Google Patents

고유 명령어를 이용한 레지스터 화일로서의 오퍼랜드스택에 대한 마이크로프로세서 엑세스 Download PDF

Info

Publication number
KR20070118663A
KR20070118663A KR1020077024684A KR20077024684A KR20070118663A KR 20070118663 A KR20070118663 A KR 20070118663A KR 1020077024684 A KR1020077024684 A KR 1020077024684A KR 20077024684 A KR20077024684 A KR 20077024684A KR 20070118663 A KR20070118663 A KR 20070118663A
Authority
KR
South Korea
Prior art keywords
java
register
instructions
microprocessor
instruction
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.)
Withdrawn
Application number
KR1020077024684A
Other languages
English (en)
Inventor
오이빈드 스트롬
에릭 레노
크리스챤 몬센
Original Assignee
아트멜 코포레이숀
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 아트멜 코포레이숀 filed Critical 아트멜 코포레이숀
Publication of KR20070118663A publication Critical patent/KR20070118663A/ko
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)
  • Advance Control (AREA)

Abstract

자바 VM 명령어가 하드웨어내에서 실행될 수 있도록 결합형 고유 (RISC 또는 CISC) 마이크로프로세서 및 스택 (자바) 머신 (10, 11, 13) 들이 구축된다. 대부분의 자바 명령어들은 직접 실행이 되지만(54), 자바 객체를 다루는 명령어와 같이 보다 복합적인 자바 명령어들은 고유 마이크로코드로서 실행된다(56). 고유 마이크로코드 명령어가 자바 오퍼랜드 스택에 엑세스하도록, 자바 오퍼랜드 스택 포인터(22; 102)는 현재의 스택 상단(ToS)이 되는 레지스터 화일(15; 90) 위치를 지시하며, 이와 동시에, 상태 레지스터(101)내의 리맵 비트(RM)는 고유 명령어에서 지정된 레지스터가 자바 오퍼랜드 스택 포인터의 최대값에서 자바 오퍼랜드 스택 포인터의 현재값을 감산한 것으로서 리맵핑(90a)되는 것을 나타내준다.
자바, VM, RISC, CISC, 스택, 레지스터, 명령어, 오퍼랜드, 마이크로프로세서, 프로그래밍.

Description

고유 명령어를 이용한 레지스터 화일로서의 오퍼랜드 스택에 대한 마이크로프로세서 엑세스{MICROPROCESSOR ACCESS OF OPERAND STACK AS A REGISTER FILE USING NATIVE INSTRUCTIONS}
본 발명은 자바 가상 머신 코어 아키텍쳐를 갖는 마이크로프로세서를 포함하는 스택 머신뿐만이 아니라, 예를 들어, 메모리 지향형 아키텍쳐 (예컨대, CISC [complex instruction set computer] 머신) 를 갖는 마아크로프로세서 및 로드-저장 아키텍쳐 (예컨데, RISC [reduced instruction set computer] 머신) 를 갖는 마이크로프로세서를 포함하는 마이크로프로세서내의 레지스터 화일 스택에 엑세스하는 것에 관한 것이다. 특히, 자바 상태뿐만이 아니라 RISC 또는 CISC 상태에서도 구동하는 결합 아키텍쳐에 관련된다. 보다 구체적으로, 본 발명은 RISC 상태에서 자바 오퍼랜드 스택에 엑세스하는 것과 같이 아키텍쳐에 대해 고유한 명령어를 사용하여 오퍼랜드 스택에 엑세스하는 것에 관한 것이다.
마이크로프로세서는 여러 개의 기본 카테고리들로 분류될 수 있다. 스택 머신에서, 모든 산술논리유닛(ALU) 연산들은 오퍼랜드 스택의 최상위 레지스터상에서 수행된다. CISC 머신에서는, 메모리내에서 직접 연산이 수행된다 (즉, 오퍼랜드가 메모리부터 엑세스되고 그 결과가 메모리에 저장된다). RISC 머신에서는, 모든 연 산들이 중앙처리유닛(CPU)내에 위치하는 주소지정가능 레지스터상에서 수행된다. 초창기때의 마이크로프로세스들은 스택 머신이였지만, 오늘날 대부분의 마이크로프로세서들은 CISC 또는 RISC 머신들이다. 세월이 흘러감에 따라, CISC 또는 RISC 머신들은 설계적인 측면에서 서로 근접하게 되었고, 현대의 대부분의 CISC 머신들도 연산이 수행되는 레지스터 화일을 갖게 되었다. 썬 마이크로시스템즈에 의한 자바 프로그래밍 언어 및 자바 가상 머신 (자바 VM) 의 도입과 함께, 스택 머신이 현대의 마이크로프로세서내로 재도입되었다. 비록 자바 VM 은 주로 소프트웨어로서 운용이 되도록 의도되었지만, 몇 가지 하드웨어 구현예들이 존재한다.
자바는 썬 마이크로시스템즈에 의해 개발된 객체 지향형 프로그래밍 언어로서, 네트워크 프로그래밍에서 사실상의 표준이 되어 가고 있으며, 또한 임베디드 시스템 (embedded system) 의 영역에서도 활용되기 시작하였다. 일반적으로, 자바 바이트 코드는 자바 가상 머신이라고 호칭되는 소프트웨어 계층에서 실행되며, 이에 관한 상세규격은 썬 마이크로시스템즈에 의해 발간되어 있다. 자바 바이트 코드를 실행하기 위하여, 해석기, 즉 "just-in-time(JIT)" 컴파일러가 발생가능한 프로그램 흐름 병목현상을 분석하는 예견 기술의 일정 형태와 함께 사용되거나, 또는 특정 하드웨어 플랫폼을 위한 크로스 컴파일러가 사용될 수 있다. 택일적인 사항으로서, 자바는 하드웨어적으로 직접 실행될 수 있다. 일부 자바 하드웨어 프로세서는 접힘형(folding) 메카니즘을 구비하고 있는데, 이것은 여러 명령어들이 하나로서 결합되어 실행되는 것을 의미한다. 하지만, 대부분의 자바 프로세서들은 해석기로서 작동할 것이며, 여기서는 각각의 오피코드(opcode)가 판독된 후 명령어를 실 행하기 위하여 적절한 조작이 취해진다.
만약 임베디드 시스템내에서 자바를 구현하는 경우, 하드웨어 구현방법이 바람직한 기술적 대안책이며, 최근에, 자바 가상 머신에 관한 여러 개의 하드웨어 버전들이 임베디드 프로세서 플랫폼용으로서 개발되었다. 자바 명령어의 직접 실행을 지원하는 이러한 프로세서들은 보통 32 비트 스택 머신으로서 설계된다. 일부는 직접 주소지정과 같은 특성 및 비트 처리 명령어를 제공하기 위하여 자바 이진 포맷으로의 확장에 의존한다. 나머지 다른 것들은 자바 이진 코드를 직접 실행하지는 않지만, 이와 매우 유사한 대응구조를 갖고 있기때문에 가상 머신의 성능을 향상시킨다.
자바 VM 을 하드웨어내에서 구현하려고 할때의 주요한 난제점은 일부 자바 명령어들이 고차원의 의미 내용 (semantic content) 을 갖고 있음에 따라 이들이 원자 명령어 (atomic instruction) 로서 실행되기가 매우 어렵다는 점이다. 이에 대한 가능한 대안책으로서는 복합형 자바 명령어를 트래핑하고 이들을 호스트 아키텍쳐에 대한 고유 명령어와 함께 소프트웨어 루틴으로서 실행하는 것이 있다. 하지만, 이를 실행하기 위해서는, 고유 (RISC 또는 CISC) 명령어를 이용하여 자바 오퍼랜드 스택에 엑세스하는 메카니즘이 필요하다.
2001년 4월 23일에 출원된 미국 가특허출원 제60/286,197호의 우선권을 주장하는 본 발명의 양수인의 이전 미국 특허출원으로서, 2002년 4월 1일에 출원되어 2004년 1월 22일에 미국특허공개 제2004/0015678 A1 호로 공개된, "Microprocessor for executing byte compiled Java code" 의 제목을 갖는 미국 특허출원 제 10/114,678호 및 이에 대응하는 국제출원으로서 2002년 10월 31일에 공개된 국제공개번호 WO 2002/086699 A3 에서는 RISC 머신과 자바 VM 을 결합하는 기술사상을 설명하고 있다. 이전에 공개된 상기 출원발명에서는, 하드웨어에서 구현되는 RISC 마이크로프로세서와 자바 VM 들이 결합됨으로써 하드웨어가 RISC 상태 또는 자바 상태 중 어느 하나에서 작동가능하다. RISC 마이크로프로세서가 자바 오퍼랜드 스택에 엑세스하고 RISC 소프트웨어 루틴으로서 복합형 자바 명령어를 실행하도록 하기위하여, 두 개의 비트들, "X" 와 "Y" 들이 상태 레지스터내에 설정되어 대응 X 또는 Y 변수 중 하나가 오퍼랜드 스택 포인터에 의해 지시되는 레지스터 번호로 대체되도록 한다.
마이크로프로세서의 RISC (또는 CISC) 상태로부터 자바 오퍼랜드 스택에 대한 엑세스를 향상시키기 위하여, 이러한 결합 마이크로프로세서와 관련한 추가적인 메카니즘이 모색되고 있다.
본 발명은 동일한 마이크로프로세서 코어내에서 RISC (또는 CISC) 머신 및 (자바 VM 과 같은) 스택 머신 모두를 구현한다. 마이크로프로세서에는 레지스터 화일이 포함된다. 종래의 RISC (또는 CISC) 머신과 마찬가지로, 레지스터 화일상에서 구동되는 명령어는 오퍼랜드의 소스 및 결과값의 목적지인 레지스터 번호를 지정한다. 스택 머신은 자바 오퍼랜드 스택을 보유하기위하여 동일 레지스터 화일의 일부분(예를 들어, 동일 레지스터 화일의 하반부)을 사용한다. 자바 오퍼랜드 스택 포인터 레지스터가 제공되는데, 이것은 스택의 상단을 지시하고, 이에 따라 프로세서가 자바 상태에 있을때마다 어느 레지스터가 작동하는지를 판단한다. 상태 레지스터는 언제 프로세서가 자바 상태인지를 지정하는 비트뿐만이 아니라, 프로세서가 RISC (또는 CISC) 상태에 있을 때에 자바 스택에 엑세스하는데에 사용되는 자바 레지스터 리맵 비트를 포함한다. RISC (또는 CISC) 상태에서, 레지스터 번호가 자바 오퍼랜드 스택내의 레지스터에 대응할 때마다, 설정된 리맵 비트는 명령어내에서 지정된 레지스터 번호로 하여금 리맵핑되도록 하고 스택의 상단과 관련된 레지스터에 엑세스하도록 해준다. 즉, 엑세스된 레지스터 번호는 오퍼랜드 스택 포인터의 최대값에서 오퍼랜드 스택 포인터의 값을 뺀 값과 동일하다. 만약 리맵 비트가 0 으로 재설정되면, 엑세스된 레지스터 번호는 명령어에서 지정된 레지스터 번호이다. 리맵 비트는 자바 상태에서는 무시된다. 리맵 비트는 RISC (또는 CISC) 명령어로 하여금 자바 스택으로부터 오퍼랜드를 효과적으로 엑세스하도록 해주는데, 예를 들어, 어느 레지스터가 사실상 스택의 상단값을 보유하고 있는지에 상관없이, 스택의 상단 및 스택의 상단 아래의 엘리먼트로부터 오퍼랜드를 획득하고, 이 결과를 스택의 상단에 위치시키도록 해준다.
도 1은 공통 코어 프로세서 소자를 공유하는 RISC/자바 마이크로프로세서 결합 아키텍쳐에 관한 블럭도이다.
도 2는 도 1의 프로세서의 통상의 운용 시퀀스에 관한 흐름도이다.
도 3은 각각의 RISC 및 자바 상태에 의해서 바라본, 마이크로프로세서의 레지스터 화일의 관련부분을 도시하는 블럭도이다.
도 4는 RISC 및 자바 상태사이에서 도 1의 프로세서를 전이시키는 하나의 예시적인 메카니즘을 설명하는 블럭도이다.
도 5는 트래핑된 자바 명령어를 프로세서의 RISC 상태에서 실행하였을 때에, 본 발명의 리맵 작동을 설명하는, 시스템 레지스터 공간 및 레지스터 화일의 관련부분에 관한 블럭도이다.
도 6은 도 1의 마이크로프로세서가 일반적으로 구현되는 런타임 시스템의 블럭도이다.
도 7은 본 발명에 따르는 마이크로프로세서와 더불어 프로세서 제어유닛 및 리맵유닛에 관한 블럭도이다.
본 발명은 RISC/자바 프로세서 결합 아키텍쳐 또는 CISC/자바 프로세서 결합 아키텍쳐 중 어느하나에 적용되거나, 또는 일반적으로 고유 RISC 또는 CISC 프로세서와 스택 머신의 임의의 조합구성에 적용될 수 있다. 상기에서 언급한 바와 같이, 특히 본 발명은, 프로세서가 스택 머신 또는 자바 상태에 있을때 뿐만이 아니라, 고유 RISC 또는 CISC 상태에 있을때에, 오퍼랜드 스택에 엑세스하는 기술을 포함한다. 본 발명의 설명을 위하여, 나머지 설명에서는 RISC/자바 프로세서 결합 아키텍쳐에 집중될 것이며 이러한 전제하에 본 발명을 설명한다. 본 발명분야의 당업자라면 설명되는 본 발명의 RISC/자바 버전을 어떻게 기타 다른 적용가능한 프로세싱 아키텍쳐에서 사용하는지를 손쉽게 이해할 수 있을 것이다.
현재 자바 VM 명령어 세트에는 201 개의 오피코드들이 포함되어 있다. 명령 어 세트의 대부분은 특정 형태를 갖고 있으며, 따라서 동일한 의미를 갖지만 서로 다른 오퍼랜드 형태에 적용되는 많은 자바 명령어들이 존재한다. RISC 프로세서의 명령어 세트들은 각 아키텍쳐의 특정한 설계모습에 따라 달라지지만, 일반적인 RISC 프로세서의 명령어 세트들에는: LOAD, STORE, MOVE, ADD, SUBTRACT, MULTIPLY, DIVIDE, NEGATE, AND, OR, XOR, COMPARE, SHIFT, ROTATE, SET, CLEAR, JUMP 및 RETURN 등의 명령어들이 포함된다. 일반적인 RISC 프로세서의 명령어 세트들의 대부분이 자바 VM 명령어 세트와 겹친다. 예를 들어, 자바 상태 및 RISC 상태 모두에서 가장 빈번하게 실행되는 명령어들은 LOAD/STORE (로드/저장) 명령어들로서, 이들은 상기 상태들 모두에서 동일한 의미 내용을 가지며 RISC/자바 결합 아키텍쳐에서 동일한 하드웨어 자원의 공유가 가능하다. 이와 마찬가지로, 기본적인 산술 및 논리연산들은 동일 의미를 공유하며 동일한 방법으로 산술/논리유닛(ALU)을 공유하여 사용한다. 하지만, 일부 하위 레벨 비트 처리 명령어들은 자바 VM 명령어 세트에는 없고 오직 RISC 명령어 세트에서만 발견될 수 있다. 이와 마찬가지로, 자바에는 하이 레벨 객체 생성 및 처리 명령어들이 포함되지만, 이것들은 일반적인 RISC 명령어 세트에서는 발견되지 않는다.
자바 VM 명령어 세트에는 하드웨어에서 구현하기 어려운 고차원의 의미 내용을 갖는 일부 명령어들이 포함된다. 단일 클럭 사이클내에서 이와 같은 하이 레벨의 명령어들을 실행하는 것은 불가능하며, 이들을 보다 덜 복합적인 여러 개의 명령어들로 해체하는 작업은 자원할당 및 시간제약의 측면에서 곤란하다. 이를 대신하여, 하드웨어 오버헤드를 감소시키기 위하여, 이러한 자바 명령어들을 트래핑하 여 RISC/자바 결합 프로세서내에서 작은 RISC 프로그램으로서 실행시킨다. 트래핑되는 명령어들은 일반적으로 전체 실행된 명령어들 중에서 10 % 미만에 해당된다. 이와 같은 명령어들마다의 RISC 프로그램들은 프로세서에 엑세스가능한 프로그램 메모리내에 저장되고, 필요에 따라 프로그래머에 의해 변경될 수 있다. 이것은 장래의 자바 명령어 세트에 관한 임의의 확장과 관련하여 폭넓은 탄력성을 가져다 준다. 하지만, RISC 프로그램으로서의 하이 레벨 자바 명령어의 실행에는 이러한 명령어를 실행하기 위하여 결합 프로세서가 RISC 상태로 전환될지라도 여전히 자바 오퍼랜드 스택에 엑세스가능할 것이 요구된다. 또한, 프로세서가 자바 상태로 복귀할 때에도 연산 결과가 스택으로부터 엑세스될 필요가 있다.
도 1을 참조한 설명으로서, 본 발명의 활용을 위해 적용가능한 일반적인 RISC/자바 결합 마이크로프로세서에는 RISC 프로세서, RISC 프로세서에서 제 1 자바 명령어 세트를 실행하는 자바 모듈, RISC 프로세서에서 마이크로코드로서의 제 2 자바 명령어 세트를 실행하는 RISC 모듈, 및 레지스터 화일을 포함하며 상기 양 모듈들에 의해 공유되는 RISC 프로세서내의 데이터 경로가 포함된다. 도 1에서 도시된 바와 같이, 본 발명에 따르는 마이크로프로세서(10)에는 공통 데이터 경로를 공유하는 자바 제어 유닛(11) 및 RISC 제어 유닛(13)들이 포함된다. 이 두 개의 제어 유닛들(11, 13)은 독립적으로 작동하지만 동시에 프로세서를 작동시키지는 않는다. 마이크로프로세서(10)는 기타의 자바 프로세서와 같이 자바 이진 포맷으로의 전송 및 확장에 의존하지 않고, 두 개의 직교 프로그램 모델들을 제공한다. 마이크로프로세서(10)는 데이터와 명령어들 모두를 위한 공통 버스를 공유하는 폰 노이 만(von neumann) 기본 아키텍쳐로서 구성가능하거나, 또는 개별적인 데이터 및 명령어 버스를 구비한 하바드(Harvard) 아키텍쳐로 손쉽게 확장가능하다. 프로세서는 고주파 클럭 및 단일의 사이클 실행을 획득하기 위하여 파이프라인방식으로 구성가능하다.
마이크로프로세서에는 데이터 버스(30)에 연결된 레지스터 화일(15)이 포함된다. 임의의 갯수의 범용 레지스터(19)와 더불어, 프로그램 카운터(16), 링크 레지스터(17), 및 스택 포인터(18)들이 레지스터 화일(15)내로 맵핑된다. 레지스터 화일(15)에 대한 이러한 맵핑은 프로그램 카운터(16), 링크 레지스터(17), 및 스택 포인터(18)들이 범용 레지스터(19)와 동일한 방식으로 주소지정되도록 해주며, 그 결과로 통상의 명령어들이 필요할때마다 이러한 레지스터들을 사용할 수 있게 된다. 통상적인 레지스터로서 스택 포인터(18)를 주소지정가능함에 따라 로컬 변수 및 파라미터들의 할당 및 엑세스가 단순화된다. 또한, 스택 포인터(18)는 여러 명령어들에 의해 절대적으로 이용된다. 프로그램 카운터(16)는 실행되는 명령어의 주소가 포함된다. 메모리 공간은 바이트로 주소지정된다. 자바 상태를 제외하고, 명령어 크기는 0 으로 고정된 프로그램 카운터의 최하위비트를 구비한 2 바이트의 배수일 수 있다. 프로그램 카운터(16)는 레지스터 화일(15)내로 맵핑되기때문에, 레지스터 오퍼랜드 (예를 들어, 로드/저장, 산술 및 논리 명령어들) 를 이용한 모든 명령어들내에서 소스 오퍼랜드 또는 목적지 오퍼랜드로서 사용가능하게 된다. 새로운 프로그램 카운터값에 의해 지정된 주소에서 재개된 실행 및 파이프라인 플러쉬와 함께, 프로그램 카운터(16)를 자신들의 목적지 레지스터로서 이용하는 명령어들 은 점프 명령어와 동일한 방식으로 취급된다. 링크 레지스터(17)는 감독자 콜, 인터럽트 요청 및 예외처리 뿐만이 아니라, 서브루틴 콜을 위한 복귀 주소를 보유하는데에 사용된다. 이외의 기타 모든 기간에서 링크 레지스터 위치는 범용 레지스터로서 사용가능하다. 보다 낮은 인터럽트 지연율(latency)을 갖는 높은 성능을 발휘하도록 하기 위하여, 인터럽트 및 예외 모드를 위해 별개의 레지스터 화일들이 포함될 수 있다.
상태 레지스터(21)는, 자바 오퍼랜드 스택 포인터(22), 자바 로컬 변수 레지스터(23) 및 자바 트랩 기준 주소 레지스터(24)와 더불어 레지스터 화일(15)과는 별개로서, 이 대신에 시스템 레지스터 공간(20)내로 맵핑될 수도 있다. 상태 레지스터(21)에는 통상적인 산술/논리 연산 플래그 (예를 들어, 포화, 오버플로우, 사인, 제로 및 캐리 플래그들), 모드 비트 세팅 (예를 들어, 애플리케이션, 감독자, 인터럽트 및 예외 모드들), 디버그 상태 비트, 및 인터럽트, 예외 및 디버그 마스킹 비트들이 포함될 수 있다. 추가적으로, 본 발명의 특별한 관심사항으로서, 상태 레지스터(21)는 자바 상태 비트 및 자바 레지스터 리맵 비트를 포함한다. 마이크로프로세서(10)는 자바 상태 비트가 상태 레지스터(21)에서 설정될 때에만 그리고 이런 경우에는 언제든지 자바 상태에 놓이게 된다. 이 비트는 리셋으로 소거되며, 자바 실행이 완료될 때에만 변경되거나 또는, 인터럽트 및 예외에 의하거나 또는 (예를 들어, 자바 상태를 개시하는데에 사용되는 JCALL 또는 트랩 명령어 이후에 자바 상태로 복귀하는데에 사용되는 RETU 등과 같은) 정의된 명령어에 의해 변경될 수 있다. 이러한 자바 상태 비트를 수동적으로 변경하려고 하는 사용자에 의한 시도로 인하여 비정의된 행위 (behavior) 가 나타날 수 있다. 자바 레지스터 리맵 비트가 설정되기만 하면, 레지스터 화일(15)은 스택 머신내에서의 변수에 엑세스하기 위하여 리맵핑된다. 이 비트는 리셋으로 소거된다. 만약 이 비트가 자바 VM 의 외부로 기입되면 비정의된 행위가 초래될 수 있다. 이 리맵 비트의 영향에 대해서는 이하에서 상세하게 설명될 것이다. 시스템 레지스터 공간(20)내의 자바 오퍼랜드 스택 포인터(22)는 자바 오퍼랜드 스택의 현재 상단부의 레지스터 화일 공간에서 위치를 보유하는데에 사용된다. 자바 트랩 기준 주소 레지스터(24)는 트래핑된 자바 명령어에 관한 프로그램 코드에 대한 기준 주소를 포함한다. 자바 로컬 변수 레지스터(23)는 임시 자바 로컬 변수를 저장한다. 추가적으로, 자바 트랩 진입 지점 레지스터는 비구현된 자바 명령어의 진입 지점에 관한 기준 주소 포인터로부터 예외 루틴까지의 오프셋을 포함할 수 있다. 특별한 하드웨어 프로세서 설계에 의한 필요성에 따라 기타의 시스템 레지스터들이 제공될 수 있다.
RISC 및 자바 상태 모두에서 사용되는 산술 논리 유닛(ALU)(25)은 레지스터 화일(15)에 연결되고, ALU 의 출력은 데이터 버스(30)로 제공된다. 일반적인 ALU 에는 32 비트 가산기, 32 비트 배럴 쉬프터 및 하드웨어 승산기가 포함될 수 있다. 산술 및 논리 연산은 단일 클럭 사이클내에서 실행된다. 일반적으로, 프로세서는 코드 크기 또는 성능에서의 어떠한 불이익 없이, 32 비트 워크 크기 데이터 형태 이외에도, 하프 워드 및 바이트 데이터 형태들을 지원한다. 일반적으로, 메모리 로드 및 저장 연산들은 바이트 및 하프 워드 데이터의 자동 부호 확장(sign extension) 또는 제로 확장(zero extension)과 함께 바이트, 하프 워드, 워드 및 더블 워드 데이터에 제공된다.
프로그램 카운터(16) 및 관련된 레지스터 화일들의 출력은 가산기(36)를 거쳐서 처리되어 주소 멀티플렉서(33)에 도달된다. 주소 멀티플렉서(33)는 또한 주소 버스(40)에 연결된다. 명령어 인출 디코더(35)는 데이터 버스(30)로부터 신호를 수신하고, 출력을 스택 제어 유닛(37)으로 제공한다. 상기 또는 이와 다른 기타의 일반적인 프로세서 아키텍쳐 구성이 본 발명과 함께 사용가능하다.
RISC 및 자바 VM 명령어 세트들의 대부분이 중복되기 때문에, RISC/자바 결합 프로세서는 하드웨어 자원을 공유하지만, 프로세서가 자바 상태내에 있을 때 실행을 담당하는 별개의 자바 명령어 디코더 및 제어 모듈(11)이 제공된다. 프로세서는 상태 레지스터(21)를 통해서 프로세서의 실행 상태를 계속 추적하며, 실행의 끊김없이 실행 상태를 변경할 수 있다. 프로세서를 그 일부로서 구성하는 보다 큰 런타임 시스템에서는, 일반적으로 여러 프로세스들을 계속 추적하여 처리하는 오퍼레이팅 시스템이 있다. 일반적으로, 상기의 여러 프로세스들 중 하나가 자바 프로그램이다. 고유 프로세스 (RISC 또는 CISC) 로의 환경전환과 비교하여 자바 프로세스로의 환경전환과 관련된 과도의 오버헤드는 있다하더라도 거의 없게 된다. 또한, 프로세서가 명령어 디코더를 전환하면 (RISC 제어 모듈(13)로부터 자바 제어 모듈(11)로의 전환, 또는 이와 반대), 시스템에 의해 설정된 보안 레벨에는 영향을 주지 않는다. 게다가, 자바 프로그램은, 원칙적으로, 프로세서의 모드 설정과 충돌되는 일 없이 서로 다른 인터럽트 레벨들로부터 실행될 수 있지만, 일반적으로 대응 RISC 인터럽트 루틴과 관련하여 증가된 지연율때문에 자바에서 인터럽트 루틴이 기입되는 것은 권장되지 않는다.
도 2 를 참조하여 설명하면, 초기화 코드를 실행하기 위하여 RISC 상태에서 마이크로프로세서에 전원이 인가된다(51). 초기화 이후에(52), 마이크로프로세서는 통상의 RISC 프로세서로서 애플리케이션을 실행하거나, 또는 자바 상태로 전환하여(53) 자바 프로그램의 실행을 개시한다(54). 자바 프로그램을 구동시키기 위하여, 자바 VM 이 기타 다른 애플리케이션처럼 호출된다. 구체적으로, 자바 VM 은 클래스를 분석하고 자바 프로그램의 실행을 개시하는데에 필요한 레지스터들을 초기화하는 초기화 루틴을 클래스 로더 이전에 실행한다. 클래스 로더내의 최종 명령어는 프로세서를 자바 상태로 설정하는 jcall 명령어이다. 이것은 이후부터 명령어 디코더가 고유 RISC 오피코드를 대신하여 자바 오피코드를 디코드하는 것을 의미한다. 마이크로프로세서는 다음 중 하나의 이벤트가 발생할 때까지 자바 상태에서 작동을 계속할 것이다: RISC 모드로 다시 전환하는 지명된 자바 오피코드(58), 인터럽트 요청(59), 또는 비구현된 자바 명령어(60). 만약, 이들 이벤트 중에서 임의의 하나가 발생되면, 마이크로프로세서는 미리 정의된 주소로 점프하고 RISC 모드로 전환하며(55) 이러한 방식으로 이벤트를 처리할 것이다. RISC 루틴이 종료되면(56), 프로세서는 RETJ 명령어를 사용하여 자바 상태로 복귀하여(57), 종료된 지점에서 자바 코드의 실행을 계속할 것이다.
그러므로, 자바 상태에서 프로세서는 프로그램 중 자바 프로그램 부분을 실행할 수 있다. 상기 자바 프로그램 부분은 기업의 소프트웨어 라이브러리에서 이미 구현된 알고리즘이나 네트워크 성능으로서, 재사용 레이거시 소프트웨어의 모듈을 구성할 수 있다. 프로세서의 RISC 상태는 RISC 마이크로코드로서 복합형 자바 명령어들(60)을 실행함으로써, 자바 코드의 실행에 도움을 준다. 또한, 이것은 예를 들어, 센서 및 액추에이터와 같이 고도로 전문화된 주변 장치들을 제어하기 위하여 사용가능한 유연성있는 하드웨어 인터페이스를 제공한다.
자바 VM 상세규격과 호환되기 위하여, 모든 자바 명령어들이 구현될 필요가 있다. 하지만, 소규모 내지 중간 규모의 애플리케이션을 목적으로 한 임베디드 프로세서에서는, 자바 가상 머신에 의해 지원되는 여러 개의 포맷들은 지나치게 많은 것일 수 있다. 예를 들어, 본 세그먼트에서 부동소수점 유닛을 제공하는 프로세서는 거의 없다. 보다 복합적인 여러 자바 명령어들은 트래핑되어 마이크로코드로서 실행된다. 여기서 "복합" 이란 것은, 단일의 자바 명령어가 다중 머신 클럭 사이클들의 실행을 요구한다라는 것을 의미한다. 자바 프로그램의 실행 도중에, 프로세서가 하드웨어에서 지원되지 않는 바이트코드와 마주칠 때마다, 명령어 디코더는 자동적으로 이러한 바이트코드를 인지하여, 프로세서를 RISC 상태로 전환시키며, 이와 동시에 (트래핑된 특정 명령어를 기초로 기준 주소에 적용된 오프셋과 함께, 자바 트랩 기준 주소 시스템 레지스터내에 저장된 주소와 관련하여 정의된) 미리 정의된 진입 지점으로 점프한다. 그런 다음, 트래핑된 바이트코드의 의미를 수행하는 RISC 소프트웨어 루틴을 실행한다. 종료되면, 루틴은 자바 상태로의 복귀 (RETJ) 명령어로 끝난다.
일반적으로, 어느 자바 명령어를 트래핑하고 어느 것을 하드웨어로 직접구현하는지는 설계자의 의해 결정될 구현상의 특수문제이다. 일반적으로, 자바 객체를 생성하거나 처리하는 명령어들이 트래핑된다. 기타 트래핑되는 명령어들에는 롱 형태의 데이터(64 비트 또는 다중 워드)로 구현되는 명령어, 플로우트 및 더블 형태의 명령어, 및 설계된 아키텍쳐와 비호환적인 임의의 명령어가 포함될 수도 있다.
본 발명은 상술한 RISC 아키텍쳐 이외에도 기타 형태의 RISC 아키텍쳐와 함께 사용가능하기 때문에, 어느 RISC 명령어 세트를 사용할지는 선택되는 RISC 모델에 따라 좌우된다. (상기와 같이, 본 발명은 CISC 아키텍쳐 및 명령어 세트와 함께 사용하도록 적용될 수도 있다).
도 3을 참조한 설명으로서, 프로세서의 레지스터 화일은 자바 상태에서 푸시-팝 (push-pop) 스택의 기능을 갖지만, 고유 RISC 상태에서는 통상적인 로드/저장 레지스터 화일로서의 기능만을 갖는다. 또한, 자바 스택내의 값이 RISC 상태에서 프로세서에 의해 엑세스가능할 것을 전제하에, 이 레지스터 화일은 두 개의 가상 프로세서들이 서로 통신하도록 해주는 모듈이다. 도 3은 RISC 모드 및 자바 모드에서 바라봤을 때의 레지스터 화일의 절반을 도시한다. 자바 제어 유닛(61) 및 RISC 회로(71) 모두는 레지스터(80, 81, ... 82)를 바라보고 있다.
레지스터 화일 아키텍쳐의 RISC 관점(71)에서는 레지스터 엘리먼트들(80, 81, ... 82)을 로드/저장 레지스터들(0 - M)의 세트로서 간주할 수 있으며, RISC 아키텍쳐는 소스 또는 목적지로서의 특정 레지스터를 지명하는 대응 로드/저장 명령어들(72, 73, ... 74)을 통하여, 이 레지스터들을 데이터 메모리에 서로 연결시킨다. 범용 레지스터와 함께, 레지스터 화일내에는 프로그램 카운터, 링크 레지스터 및 스택 포인터가 포함됨을 상기한다. 직교성을 보존하기 위하여, 이 특정 레지 스터들은 임의의 다른 레지스터처럼 엑세스가능하다.
일반적으로, 자바 제어 유닛(61)은 동일 레지스터 화일을 약 (M+1)/2 개의 레지스터 엘리먼트들을 갖는 푸시-팝 스택으로서 간주한다. 데이터는 레지스터 스택내로 입력(push)(62)되고, 자바 제어 유닛을 향해 레지스터 스택으로부터 출력(pop)(63)되어 나온다. 나머지 레지스터들은, 우선적으로, 프로그램 카운터, 스택 제어 레지스터, 및 임시 스크래치 패드 레지스터로 사용될 수 있다. 스택은 순환식 스택으로서 구현되며, 요구되는 스택의 크기는 비교적 작다. 스택 크기는 크기조정가능하며, 스택의 엘리먼트들의 갯수는 구현상의 특수문제로서 남겨진다. 스택 오버플로우/언더플로우는 오버플로우/언더플로우 메카니즘을 통해서 메모리(83)내에서 복사된다. 또한, 이용가능한 여러 스택 오버플로우/언더플로우 메카니즘들이 각각의 경우에 맞게 개발가능하다.
도 4는 마이크로프로세서를 하나의 상태에서 다른 하나의 상태로 전이시켜주는 하나의 구현가능한 메카니즘을 도시한다. 자바 제어 모듈(120) 및 RISC 제어 모듈(122)이 멀티플렉서(124)를 통해 프로세서의 공유 데이터 경로로 이어지는 제어 라인(130)에 연결된다. 상태 레지스터(126)는 자바 제어 모듈(120) 및 RISC 제어 모듈(122)에 제공되는 자바 상태 비트(128)를 포함하며, 이 제어 유닛들 중 어느 제어 유닛이 작동하는지를 판단한다. 또한, 자바 상태 비트(128)는 멀티플렉서(124)에 의해 선택 제어로서 역할을 한다. 미리 정의된 상태에서 제어 신호는 양 제어 모듈내로 전달된다. 그러므로, 제어 신호는 양 머신들이 정의된 동일 상태에 놓여 있는 곳에서는 동시에 전달될 것이다.
자바 명령어 트래핑은 통상적인 인터럽트 메카니즘과 유사한 단계들을 포함한다. 비구현된 명령어가 발생되면, 자바 제어 모듈은 이것을 탐지하고, 복귀 주소가 스택의 상단에 저장된다. 그런 다음, 프로세서는 RISC 모드로 전환하며 메모리내에서 미리 정의된 위치로부터 점프 주소를 인출해간다. 그런 후, RISC 모듈은 최종 단계에서 인출해온 주소에서 실행을 계속한다. 트래핑 메카니즘을 인터럽트 메카니즘과 유사하게 함으로써 최대 유연성을 획득할 수가 있게 되는데, 이것은 오직 제 1 점프 주소만이 설계내에 미리 정의되기 때문이다. 이것은 오직 프로그램내에 사실상 존재하는 자바 오피코드에 관한 RISC 루틴만을 링킹하는 것에 의해 소프트웨어 링커로 하여금 메모리 활용계획을 최적으로 설계하도록 해주고, 이에 따라 고가의 메모리 공간을 절약하게 해준다. RISC 루틴은 스택의 상단에서 프로그램 카운터를 출력시키고 이것을 프로그램 카운터 레지스터내에 저장함으로써 종료된다. 이것은 자바 프로그램이 정확한 장소에서 존속되도록 보장해준다. 추가적으로, 마이크로프로세서는 스택 오버플로우/언더플로우 처리 메카니즘을 갖는다. 자바 푸시-팝 스택내의 이러한 메카니즘은 명령어 트래핑을 위한 현존하는 논리회로를 재사용함으로써 구현가능하다. 오버플로우가 발생되면, 프로세서는 오버플로우 플래그를 트래핑하고, 오버플로우/언더플로우 상태를 처리하는 소프트웨어 절차에 대한 점프 벡터가 발견되는 미리정의된 주소로 점프한다.
도 5를 참조하여 본 발명을 설명하면, 레지스터 화일의 기능은 자바 상태와 RISC 상태에서 서로 다르다. 위 양 상태에서, 이미 언급된 바와 같이, 세 개의 레지스터들(R15 - R13)은, 프로그램 카운터(PC), 링크 레지스터(LR), 및 시스템 또는 애플리케이션 스택 포인터(SP)의 전용 레지스터로서 사용된다. RISC 상태에서는, 레지스터 화일(90)의 다른 레지스터들(R12 - R0)이 오퍼랜드 주소지정 등과 같은 통상적인 RISC 연산을 위해 이용가능하다. 자바 상태에서, 자바 VM 은 제로 오퍼랜드 스택 머신으로서 실행하며, 레지스터 화일 기능성은 푸시-팝 스택의 작동이 수월해지도록 변경되는데, 여기서 오퍼랜드 스택의 현재 상단은 ToS 내지 ToS-7 중 임의의 하나일 수 있다(레지스터 R7 - R0 을 이용함). 추가적으로, (R9 - R8 등과 같은) 기타 레지스터들이 자바 상태에서 자바 로컬 변수 0 (시스템 레지스터 공간(100)내의 일곱 개의 자바 로컬 변수 레지스터(104) 중 하나) 를 가리키는 현재 프레임에 관한 주소를 포함하는 프레임 레지스터로서 사용될 수 있거나, 또는 현재의 자바 클래스의 상수 풀(constant pool)에 대한 주소를 포함하는 상수 풀 레지스터로서 사용될 수 있다. 자바 로컬 변수 레지스터 이외에도, 시스템 레지스터 공간(100)에는 현재 오퍼랜드 스택의 상단 (ToS 내지 ToS-7 중 임의의 하나) 을 가리키는 오퍼랜드 스택 포인터(102)가 포함된다.
자바 오퍼랜드 스택 (ToS 내지 ToS-7) 은 자바 명령어에 의해 연산처리되는 값과, 이 연산처리의 결과를 보존한다. 오퍼랜드 스택은 현재의 메쏘드 프레임의 일부로서, 오퍼랜드 스택의 일부는 연산처리의 속도를 향상시키기 위하여 레지스터 화일내에 보존된다. 레지스터 화일은 전형적으로 도시된 바와 같이 여덟 개까지의 오퍼랜드 스택 엘리먼트를 보유하며, 나머지 스택들은 자바 VM 프레임의 일부로서 메모리내에 저장된다. (프레임은 자바 메쏘드의 실행을 지원하는 모든 변수와 참조들을 보유한 런타임 데이터 구조로서, 구현된 메쏘드에 대한 출력 변수 뿐만이 아 니라 메쏘드에 대한 인입 변수를 포함한다. 프레임은 매쏘드가 구현될 때 할당되고, 프로그램이 메쏘드로부터 복귀할 때에 파괴된다. 하나의 예시적인 프레임에는, 이전 메쏘드에 관련된 스택 포인터와 상수 풀 포인터뿐만이 아니라, 오퍼랜드 스택, 로컬 변수, 다음 프레임이 위치되는 자유 메모리 공간에 대한 포인터, 메쏘드에 관련된 복귀 주소, 이전 메쏘드에 관련된 프레임 포인터가 포함될 수 있다). 시스템 레지스터(100)에는 두 개의 기능을 갖는 자바 오퍼랜드 스택 포인터(102)가 포함된다. 이것은 오퍼랜드 스택상의 엘리먼트들의 갯수를 제시하며, 또한 스택의 현재 상단을 보유하는 레지스터를 가리킨다. 오퍼랜드 스택 포인터는 0 의 값으로 초기화되는데, 이것은 오퍼랜드 스택이 비워져있음을 의미한다. 만약 오퍼랜드 스택이 오버플로우 또는 언더플로우되면, 예외 루틴이 생성되는데, 이 예외 루틴은 레지스터 화일로부터 메모리에 저장된 현재의 메쏘드 프레임으로 오퍼랜드 스택의 내용을 복사하는 것을 책임진다. (예를 들어, 여덟 개의 엘리먼트들의 스택을 포함하는 레지스터 화일내에서, 아홉 번째 엘리먼트가 스택상으로 입력될 때마다 오버플로우 상태가 발생한다. 빈 스택으로부터 엑세스가 시도되면 언더플로우 상태가 발생한다).
트랩 루틴은 프로세서의 RISC 상태에서 자바 오퍼랜드 스택에 엑세스할 것을 필요로한다. 자바 오퍼랜드 스택 포인터(102)를 판독하고, 이것을 정확한 레지스터로 이동시켜야 하는 번거로운 프로세스를 피하기 위하여, 프로세서의 자바 제어 유닛은 제어신호를 RISC 유닛으로 이송하기 이전에, 리맵핑된 레지스터 화일(90a)을 생성하는 레지스터 리맵핑 연산을 수행하는데, 이것은 스택(ToS)의 상단이 항상 레 지스터(R7)이고, ToS-1 는 항상 레지스터(R6) 가 되도록 보장해준다. 상태 레지스터(101)에서는, 리맵 비트(RM)가 제공된다. 이 리맵 비트(RM)는 프로세서가 스택 머신으로서 운용될 때, 즉 자바 상태에서 운용될 때에는 언제나 무시된다. 하지만, 프로세서의 고유 RISC 상태에서는, 리맵 비트(RM)는 다음의 의미를 갖는다:
RM 이 0 이면,
엑세스되는 레지스터 번호 = 지정된 레지스터 번호
(즉, 어떠한 리맵핑도 발생하지 않음)
RM 이 1 이면,
엑세스되는 레지스터 번호 = 오퍼랜드 스택 포인터의 최대값 - 오퍼랜드 스택 포인터 값.
예를 들어, 여덟 개의 레지스터 스택(ToS 내지 ToS-7)에서, 오퍼랜드 스택 포인터의 최대값은 7 이 된다. 리맵 비트(RM) 를 "1" 로서 설정하면, 레지스터 번호들(R7 - R0)은 스택 엘리먼트들(ToS 내지 ToS-7)을 각각 보유하는 레지스터에 엑세스할 것이다. RISC 명령어인, R7 과 R6 의 가산은 이후에 ToS 와 ToS-1 을 효과적으로 가산할 것이다. 만약, 오퍼랜드 스택 포인터가 레지스터(R3)를 가리켰었다면, ToS 와 ToS-1 들이 저장된 실제 레지스터들은 각각 R3 과 R2 이며, 가산 연산은 이 두 개의 물리적 레지스터를 가산 연산에서 사용할 것이다.
도 7 은 리맵 유닛(173)이 RISC 프로세서의 제어 유닛(171)의 외부에 부착되어 있는 전형적인 장치를 도시한다. 각각의 리맵 유닛(173)을 형성하는 논리회로는 레지스터 화일(175)내의 판독 및 기입 포트의 갯수만큼 중복된다. 각각의 리맵 유 닛(173)은 제어 입력(RM) (리맵 연산을 인에이블링하는 경우는 1, 리맵핑없이 수신된 레지스터 주소를 통과시키는 경우에는 0) 및 스택의 상단 위치를 가리키는 자바 오퍼랜드 스택 포인터로부터의 JOSP (도 5에서의 102) 를 갖는다. (일반적으로, JOSP 는 리맵핑가능한 레지스터 위치의 번호에 대응하는 멀티비트 신호이다). 각각의 리맵 유닛(173)은 레지스터 주소 입력(173I)과 레지스터 주소 출력(173O)을 갖는다. 레지스터 주소 입력(173I)은 프로세서 제어 논리부(171)로부터 개별적인 레지스터 주소들을 수신한다. 그런 다음, 레지스터 주소 출력(173O)은 대응하는 물리적 레지스터 주소들을 레지스터 화일(175)의 포트로 출력시킨다. 도 5에서 주어진 예시를 참조하여 설명하면, 자바 오퍼랜드 스택 포인터(102)가 스택의 상단값으로서 3 을 제공한 경우(JOSP = 3)에서, 언제나 RM = 1 이고, 레지스터 주소 입력들(173I)이 각각 7 과 6 이면 (예를 들어, 명령어 'add R7, R6' 과 관련하여), 레지스터 화일(175)내의 레지스터(R3 과 R2)에 엑세스하기 위하여 레지스터 주소 출력(173O)은 실제 물리적 위치로서 리맵핑된 값 3 과 2 를 부여할 것이다.
새로운 값을 오퍼랜드 스택에 입력하는 경우, 특별한, 인크리먼트-자바-오퍼랜드 스택 포인터 명령어 "incjosp" 가 스택 정합성을 확보하는데에 사용될 수 있다. 이 명령어는 오퍼랜드 스택 포인터(102)를 특정 양 N 만큼 증가시키며, 이로써 모든 오퍼랜드 스택 엘리먼트들을 N 개의 엘리먼트만큼 밀어내린다. 이것은 N 개의 엘리먼트들을 스택의 상단부상에서 자유롭게 해준다. 스택내로 인입되는 값은 후에 R7 로 이동가능하다. 또한 incjosp 명령어는 오퍼랜드 스택 포인터를 감소시킴으로써 스택에서 엘리먼트들을 출력시키는데에 사용될 수 있다. 명령어는 또한 이전에 설명된 바와 같은 방식으로 스택 오버플로우/언더플로우 상태를 자동적으로 조절할 것이다.
또한, 자바 로컬 변수들은 처음 여덟 개의 변수들을 위한 시스템 레지스터(104)로서 RISC 트랩 루틴에 엑세스할 수 있다. 보다 많은 변수들에 대해서도, 메모리내의 현재 프레임내로 엑세스할 수 있다.
도 6을 참조하여 설명하면, 본 도면에서는 본 프로세서 기술사상을 갖춘 시스템을 위한 전형적인 런타임 상태가 도시된다. 개발자는 자바 소스 코드(141)를 보통의 자바 컴파일러(142)내에서 컴파일할 수 있고, 자바 바이트 코드(144)로 종결된다. 만약 프로세서가 화일 로더를 갖춘 오퍼레이팅 시스템과 자동 메모리 관리 시스템을 구비하는 경우, 본 프로세스의 나머지는 역동적이고 자동적으로 진행가능하다. 하지만, 작은 규모의 임베디드 시스템은 종종 오퍼레이팅 시스템을 필요로하지 않고, 이에 따라 프로그램의 메모리 이미지가 외부 플랫폼상에서 생성되어야 하기 때문에 본 프로세스의 나머지는 수동으로 실시해야만 한다. 자바 바이트 코드(144)는 링커(148)를 통해 해부되어야 한다. 링커를 거쳐 구현되는 프로그램은, (1) 바이트 코드가 어떠한 불법 오피코드도 포함하고 있지 않음을 확인하고, 임의의 장비 솔루션에 기초하여 코드 또는 오퍼랜드를 변경하고, (2) 애플리케이션을 지정된 자바 클래스 런타임 라이브러리(145)에 링크시키고, (3) 어셈블리 코드를 RISC 부(143)에 링크시키고, 힙 영역(heap area), 브랜치, 점프 주소들을 설정하 고, 메모리 맵을 작성할 것이다. 링커로부터의 출력은 임베디드 시스템(152)내의 ROM 또는 플래쉬 매모리(151)로 전송가능한 메모리 이미지일 것이다. 자바 프로세서를 제조하는 주요 목적은 프로그래머로 하여금 제한성이 거의 없는 자바 프로그래밍 언어를 사용가능하게 하는 것이다. 하지만, 이 경우에서는, 오직 지원되는 형태만이 사용가능하며, 오직 한정된 런타임 라이브러리만이 이용가능하다. 하지만, 이러한 제한성은 자바의 주요 특성의 사용에 대해 제약을 가하지는 않는다.
현재 자바 VM 상세규격에는 201 개의 명령어들이 포함되며, 이들 중 많은 수가 특정 형태를 갖고 있으며, 본질적으로 다른 데이터 형태들과 중복된다. 사용되는 RISC 아키텍쳐에 따라, 구현되는 명령어 하드웨어 수와, 트래핑되는 명령어의 수가 달라진다. 다른 형태의 RISC 아키텍쳐는 구현되고 트래핑되는 명령어 하드웨어의 갯수에 영향을 준다. 다음의 명령어들은 작은 규모의 임베디드 프로세서내에서 중요한 것으로서 고려되지 않기 때문에 본 발명의 바람직한 실시예에서 구현되는 하드웨어가 아니다: "float" 형태의 모든 명령어들, "double" 형태의 모든 명령어들, "long" 형태의 모든 명령어들. 이로 인해 201 개의 실행가능한 자바 명령어들에서 대략 90 개의 명령어들이 제거된다. 나머지 명령어들 중에서, 68 개의 명령어들은 자바 가상 머신내에서 구현되고, 43 개의 명령어들은 트래핑되어 RISC 루틴으로서 실행된다. 트래핑되어 RISC 루틴으로서 실행되는 자바 명령어들은 아래 [표 1] 에서 나열된다.
Figure 112007076783428-PCT00001
이와 같은 구현상의 선택성으로 인하여, 일반적으로 자바 명령어들의 적어도 70 % 가 마이크로프로세서내에서 직접 실행될 것이며, 30 % 이하가 트래핑되어 RISC 프로그램으로서 실행될 것이다.
상기 퍼센트율은 동적 측정으로부터 유도된 것으로서, 전형적으로 대부분의 자바 프로그램의 대략 90 % 와 10 % 가 될 것이다. 하드웨어 설계 및 지연율 요구조건에 주로 기초하여, 어느 자바 명령어들을 트래핑하고 RISC 프로그램으로서 실행할 것인지에 관하여 기타 다른 선택들이 취해질 수 있다.
본 발명은 트래핑된 자바 명령어들의 실행도중에 자바 오퍼랜드 스택 값에 대한 RISC 엑세스를 향상시킨다. 레지스터 위치에 관한 리맵핑은 트래핑된 명령어들의 RISC 실행이 자바 오퍼랜드 스택의 상단에 정확하게 엑세스하며, 트래핑된 연산 결과가 자바 상태로의 복귀시에 엑세스가능하도록 해주는 것을 보장해준다.

Claims (23)

  1. 하드웨어로서 바이트-컴파일된 자바 코드를 실행하는 마이크로프로세서로서, 상기 마이크로프로세서는:
    프로세서 코어;
    제 1 자바 명령어 세트를 상기 프로세서 코어에서 실행하는 자바 제어 모듈;
    고유 명령어를 상기 프로세서 코어에서 실행하고, 고유 마이크로코드로서의 제 2 자바 명령어 세트를 상기 프로세서 코어에서 실행하는 고유 제어 모듈;
    상기 자바 제어 모듈과 상기 고유 제어 모듈에 엑세스가능하며, 주어진 시간에서 상기 제어 모듈들 중 어느 모듈이 작동하는지를 나타내는 프로세서 상태 제어정보가 포함되는 상태 레지스터를 포함하는 시스템 레지스터 세트들;
    상기 프로세서 코어의 데이터 경로내에 있으며, 상기 양쪽 제어 모듈들에 의해 엑세스가능한 레지스터 화일로서, 복수개의 레지스터 엘리먼트들을 포함하며, 상기 고유 제어 모듈은 상기 복수개의 레지스터 엘리먼트들을 저장 레지스터로서 간주하고, 상기 자바 제어 모듈은 상기 레지스터 엘리먼트의 제 1 부분 및 저장 레지스터로서 상기 레지스터 엘리먼트의 제 2 부분을 자바 오퍼랜드 스택으로서 간주하는 것을 특징으로 하는 레지스터 화일; 을 포함하며,
    상기 시스템 레지스터 세트는 또한 상기 레지스터 화일내에서 현재 상기 스택의 상단이 되는 레지스터 엘리먼트를 가리키는 자바 오퍼랜드 스택 포인터를 포함하며, 상기 상태 레지스터는 자바 레지스터 리맵 비트를 또한 포함하며, 이로써 상기 리맵 비트가 설정될 때마다, 상기 제 2 자바 명령어 세트를 고유 마이크로코드로서 실행하는 상기 고유 제어 모듈은, 상기 고유 마이크로코드내의 명령어에 의해 지정된 레지스터 번호를 상기 스택의 상단과 관련된 지정 레지스터 엘리먼트에 대응하는 것으로서 취급하도록 하는 것을 특징으로 하는 마이크로프로세서.
  2. 제 1 항에 있어서, 상기 리맵 비트가 설정될 때마다, 고유 마이크로코드 명령어에 의해 엑세스되는 상기 스택의 상단부에 관한 상기 대응 레지스터는, 상기 오퍼랜드 스택 포인터의 최대값에서 상기 자바 오퍼랜드 스택 포인터에 의해 지정된 상기 레지스터 번호를 감산한 것이 되도록 하는 것을 특징으로 하는 마이크로프로세서.
  3. 제 1 항에 있어서, 상기 리맵 비트가 리셋될 때마다, 상기 고유 제어 모듈은 고유 명령어에 의해 지정된 레지스터 번호를 상기 레지스터 화일의 대응 저장 엘리먼트를 지명하는 것으로서 취급하는 것을 특징으로 하는 마이크로프로세서.
  4. 제 1 항에 있어서, 상기 리맵 비트는 상기 자바 제어 모듈에 의해 무시되는 것을 특징으로 하는 마이크로프로세서.
  5. 제 1 항에 있어서, 상기 제 2 자바 명령어 세트는 상기 제 1 자바 명령어 세트보다 더 복합적이며, 상기 제 2 자바 명령어 세트의 명령어들은 하나의 클럭 사 이클내에서 상기 프로세서 코어에서 실행될 수 없는 것을 특징으로 하는 마이크로프로세서.
  6. 제 5 항에 있어서, 상기 제 2 자바 명령어 세트에는 자바 객체를 생성하고 처리하는 명령어들을 포함하는 것을 특징으로 하는 마이크로프로세서.
  7. 제 5 항에 있어서, 상기 제 2 자바 명령어 세트에는 롱 형태의 데이터 및 부동소수점 형태의 데이터로 구현되는 명령어들을 포함하는 것을 특징으로 하는 마이크로프로세서.
  8. 제 5 항에 있어서, 상기 제 2 자바 명령어 세트에는 더블 형태 명령어들이 포함되는 것을 특징으로 하는 마이크로프로세서.
  9. 제 1 항에 있어서, 상기 프로세서 코어는 RISC 프로세서이고, 상기 고유 명령어는 RISC 명령어이며, 상기 제 2 자바 명령어 세트를 구현하는 상기 고유 마이크로코드는 RISC 마이크로코드인 것을 특징으로 하는 마이크로프로세서.
  10. 제 1 항에 있어서, 상기 레지스터 화일은, 상기 레지스터 엘리먼트들 중 하나로서, 실행되는 명령어의 메모리 주소를 포함하는 프로그램 카운터를 포함하는 것을 특징으로 하는 마이크로프로세서.
  11. 제 1 항에 있어서, 상기 레지스터 화일은, 상기 레지스터 엘리먼트들 중 하나로서, 서브 프로그램 호출의 완료 이후에 실행을 위한 복귀 주소를 포함하는 링크 레지스터를 포함하는 것을 특징으로 하는 마이크로프로세서.
  12. 제 1 항에 있어서, 상기 레지스터 화일은, 상기 레지스터 엘리먼트들 중 하나로서, 상기 레지스터 화일이 가득찰 때마다 로컬 변수에 엑세스하는 임시 메모리 위치를 가리키는 고유 스택 포인터를 포함하는 것을 특징으로 하는 마이크로프로세서.
  13. 제 1 항에 있어서, 상기 시스템 레지스터 세트에는, 상기 프로세서 코어의 상기 데이터 경로에 있으며, 상기 자바 오퍼랜드 스택의 외부에 자바 로컬 변수 및 파라미터를 임시로 저장하기 위하여 상기 자바 제어 모듈에 의해 엑세스 가능한 자바 로컬 변수 레지스터가 포함되는 것을 특징으로 하는 마이크로프로세서.
  14. 제 1 항에 있어서, 상기 시스템 레지스터의 세트에는, 상기 제 2 자바 명령어 세트를 위한 마이크로코드에 대한 메모리 기준 주소를 포함하는 자바 트랩 기준 주소 레지스터가 포함되는 것을 특징으로 하는 마이크로프로세서.
  15. 마이크로프로세서내에서 자바 명령어를 실행하는 방법으로서, 상기 자바 명 령어의 서브세트는 상기 마이크로프로세서에 대하여 고유한 마이크로코드로서 실행이 되며, 상기 방법은:
    (a) 상기 마이크로프로세서에 의한 제 1 자바 명령어 서브세트의 직접 실행을 제어하는 자바 제어 모듈과, 상기 마이크로프로세서에 의한 고유 명령어의 직접 실행을 제어하는 고유 제어 모듈을 제공하는 단계; - 상기 고유 제어 모듈은 또한 고유 마이크로코드로서의 제 2 자바 명령어 서브세트의 실행을 제어하며, 상기 마이크로프로세서는 상기 자바 제어 모듈과 상기 고유 제어 모듈에 의해 엑세스가능한 시스템 레지스터 세트 및 상기 마이크로프로세서의 데이터 경로내의 레지스터 화일을 구비하며, 상기 레지스터 화일은 복수개의 레지스터 엘리먼트들을 포함하는데, 여기서 상기 고유 제어 모듈은 상기 복수개의 레지스터 엘리먼트들을 저장 레지스터로서 간주하고, 상기 자바 제어 모듈은 상기 레지스터 엘리먼트들의 제 1 부분을 자바 오퍼랜드 스택으로서 그리고 상기 레지스터 엘리먼트들의 제 2 부분을 저장 레지스터로서 간주하며, 상기 시스템 레지스터 세트는 현재 상기 스택의 상단이 되는 상기 레지스터 화일내의 레지스터 엘리먼트를 지시하는 자바 오퍼랜드 스택 포인터 및 자바 레지스터 리맵 비트를 포함하는 상태 레지스터를 포함함 -
    (b) 상기 제 2 자바 명령어 서브세트가 인지될 때까지 제 1 자바 명령어 세트를 상기 자바 제어 모듈의 제어하에 상기 마이크로프로세서에 의해서 실행하는 단계;
    (c) 상기 마이크로코드내의 고유 명령어를 실행할 때에, 상기 고유 명령어에 의해 지정된 레지스터가 현재 상기 스택의 상단과 관련된 상기 레지스터 화일의 지 정 레지스터 엘리먼트에 대응하는 것으로서 취급되도록, 상기 제 2 자바 명령어 서브세트가 인지되면, 상기 자바 명령어에 관한 대응 고유 마이크로코드에 엑세스하고, 상기 자바 레지스터 리맵 비트를 설정하며, 상기 고유 제어 유닛으로 연산처리를 전환하며, 상기 고유 마이크로코드를 실행하는 단계;
    (d) 상기 제 2 자바 명령어 세트에 관한 마이크로코드가 완료되면, 상기 자바 제어 유닛으로 연산처리를 복귀시키며, 다음번째 자바 명령어에서 실행을 재개하는 단계;
    (e) 모든 자바 명령어들의 완료까지 상기 단계 (b) 내지 단계 (d) 를 반복하는 단계;
    를 포함하는 것을 특징으로 하는 자바 명령어를 실행하는 방법.
  16. 제 15 항에 있어서, 상기 고유 제어 유닛으로 연산처리를 전환하는 단계 및 상기 자바 제어 유닛으로 연산처리를 복귀시키는 단계는 상기 상태 레지스터내의 프로세서 상태 제어 정보에 의해 조정되는 것을 특징으로 하는 자바 명령어를 실행하는 방법.
  17. 제 15 항에 있어서, 상기 시스템 레지스터 세트에는 상기 고유 마이크로코드에 대한 메모리 기준 주소가 포함되는 자바 트랩 기준 주소 레지스터가 포함되며, 상기 제 2 자바 명령어 세트 중의 특정 자바 명령어에 관한 대응 고유 마이크로코드에 엑세스하는 상기 단계는 상기 명령어와 관련하여 지정된 오프셋을 상기 기준 주소에 적용하고 그런 다음 그 결과의 오프셋 주소에서 메모리에 엑세스하는 단계를 포함하는 것을 특징으로 하는 자바 명령어를 실행하는 방법.
  18. 제 15 항에 있어서, 상기 리맵 비트가 설정될 때마다, 고유 마이크로코드 명령어에 의해 엑세스되는 상기 스택의 상단부에 관한 상기 대응 레지스터는, 상기 오퍼랜드 스택 포인터의 최대값에서 상기 자바 오퍼랜드 스택 포인터에 의해 지정된 상기 레지스터 번호를 감산한 것이 되도록 하는 것을 특징으로 하는 자바 명령어를 실행하는 방법.
  19. 제 15 항에 있어서, 상기 제 2 자바 명령어 세트는 상기 제 1 자바 명령어 세트보다 더 복합적이며, 상기 제 2 자바 명령어 세트의 명령어들은 원자 명령어로서 하나의 클럭 사이클내에서 상기 프로세서 코어에서 실행될 수 없는 것을 특징으로 하는 자바 명령어를 실행하는 방법.
  20. 제 19 항에 있어서, 상기 제 2 자바 명령어 세트에는 자바 객체를 생성하고 처리하는 명령어들을 포함하는 것을 특징으로 하는 자바 명령어를 실행하는 방법.
  21. 제 20 항에 있어서, 상기 제 2 자바 명령어 세트에는 롱 형태의 데이터 및 부동소수점 형태의 데이터로 구현되는 명령어들을 포함하는 것을 특징으로 하는 자바 명령어를 실행하는 방법.
  22. 제 21 항에 있어서, 상기 제 2 자바 명령어 세트에는 더블 형태 명령어들이 포함되는 것을 특징으로 하는 자바 명령어를 실행하는 방법.
  23. 제 22 항에 있어서, 상기 프로세서 코어는 RISC 프로세서이고, 상기 고유 명령어는 RISC 명령어이며, 상기 제 2 자바 명령어 세트를 구현하는 상기 고유 마이크로코드는 RISC 마이크로코드인 것을 특징으로 하는 자바 명령어를 실행하는 방법.
KR1020077024684A 2005-04-15 2006-03-08 고유 명령어를 이용한 레지스터 화일로서의 오퍼랜드스택에 대한 마이크로프로세서 엑세스 Withdrawn KR20070118663A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/107,235 2005-04-15
US11/107,235 US7478224B2 (en) 2005-04-15 2005-04-15 Microprocessor access of operand stack as a register file using native instructions

Publications (1)

Publication Number Publication Date
KR20070118663A true KR20070118663A (ko) 2007-12-17

Family

ID=37109920

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077024684A Withdrawn KR20070118663A (ko) 2005-04-15 2006-03-08 고유 명령어를 이용한 레지스터 화일로서의 오퍼랜드스택에 대한 마이크로프로세서 엑세스

Country Status (9)

Country Link
US (1) US7478224B2 (ko)
EP (1) EP1875338A4 (ko)
JP (1) JP2008536240A (ko)
KR (1) KR20070118663A (ko)
CN (1) CN101156131A (ko)
CA (1) CA2604250A1 (ko)
NO (1) NO20075885L (ko)
TW (1) TW200705263A (ko)
WO (1) WO2006112978A2 (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6332215B1 (en) * 1998-12-08 2001-12-18 Nazomi Communications, Inc. Java virtual machine hardware for RISC and CISC processors
EP1197847A3 (en) 2000-10-10 2003-05-21 Nazomi Communications Inc. Java hardware accelerator using microcode engine
US7478224B2 (en) 2005-04-15 2009-01-13 Atmel Corporation Microprocessor access of operand stack as a register file using native instructions
US20070282928A1 (en) * 2006-06-06 2007-12-06 Guofang Jiao Processor core stack extension
US7979685B1 (en) 2007-11-27 2011-07-12 Oracle America, Inc. Multiple instruction execution mode resource-constrained device
CN101216756B (zh) * 2007-12-28 2011-03-23 中国科学院计算技术研究所 一种risc处理器装置及其模拟浮点栈操作的方法
US10802990B2 (en) * 2008-10-06 2020-10-13 International Business Machines Corporation Hardware based mandatory access control
US8639882B2 (en) * 2011-12-14 2014-01-28 Nvidia Corporation Methods and apparatus for source operand collector caching
CN102722353B (zh) * 2012-05-22 2015-09-23 广州晶锐信息技术有限公司 Java处理器浮点运算单元及其控制方法
US9110657B2 (en) 2013-01-21 2015-08-18 Tom Yap Flowchart compiler for a compound complex instruction set computer (CCISC) processor architecture
US9405534B2 (en) 2013-01-21 2016-08-02 Tom Yap Compound complex instruction set computer (CCISC) processor architecture
CN104679480A (zh) * 2013-11-27 2015-06-03 上海芯豪微电子有限公司 一种指令集转换系统和方法
US9477453B1 (en) * 2015-06-24 2016-10-25 Intel Corporation Technologies for shadow stack manipulation for binary translation systems
US20160381050A1 (en) 2015-06-26 2016-12-29 Intel Corporation Processors, methods, systems, and instructions to protect shadow stacks
US10394556B2 (en) 2015-12-20 2019-08-27 Intel Corporation Hardware apparatuses and methods to switch shadow stack pointers
US10430580B2 (en) 2016-02-04 2019-10-01 Intel Corporation Processor extensions to protect stacks during ring transitions
CN108701025B (zh) * 2016-02-27 2023-08-22 金辛格自动化有限责任公司 安全的存储器寻址方法
FR3070775B1 (fr) * 2017-09-04 2019-08-23 Vsora Allocation dynamique utilisant plusieurs piles
CN111625328B (zh) * 2020-05-15 2023-06-02 芯来智融半导体科技(上海)有限公司 适用于risc-v架构的中断装置、系统及方法
CN112199160B (zh) * 2020-10-16 2021-12-28 常熟理工学院 虚拟指令还原方法、装置、设备及存储介质
CN112199116B (zh) * 2020-10-16 2023-08-11 常熟理工学院 操作数栈寄存器识别方法、装置、设备及存储介质

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6058473A (en) 1993-11-30 2000-05-02 Texas Instruments Incorporated Memory store from a register pair conditional upon a selected status bit
US6076155A (en) 1995-10-24 2000-06-13 S3 Incorporated Shared register architecture for a dual-instruction-set CPU to facilitate data exchange between the instruction sets
US5701508A (en) * 1995-12-19 1997-12-23 Intel Corporation Executing different instructions that cause different data type operations to be performed on single logical register file
KR100584964B1 (ko) * 1996-01-24 2006-05-29 선 마이크로시스템즈 인코퍼레이티드 스택 메모리 구조에서의 캐싱 장치
EP0976029A2 (en) * 1996-01-24 2000-02-02 Sun Microsystems, Inc. A processor for executing instruction sets received from a network or from a local memory
WO1997027536A1 (en) 1996-01-24 1997-07-31 Sun Microsystems, Inc. Instruction folding for a stack-based machine
US6038643A (en) * 1996-01-24 2000-03-14 Sun Microsystems, Inc. Stack management unit and method for a processor having a stack
JP3635153B2 (ja) * 1996-05-28 2005-04-06 株式会社東芝 陰極線管用電子銃および陰極線管
US5812868A (en) 1996-09-16 1998-09-22 Motorola Inc. Method and apparatus for selecting a register file in a data processing system
US5937193A (en) 1996-11-27 1999-08-10 Vlsi Technology, Inc. Circuit arrangement for translating platform-independent instructions for execution on a hardware platform and method thereof
US6513156B2 (en) 1997-06-30 2003-01-28 Sun Microsystems, Inc. Interpreting functions utilizing a hybrid of virtual and native machine instructions
US5978901A (en) 1997-08-21 1999-11-02 Advanced Micro Devices, Inc. Floating point and multimedia unit with data type reclassification capability
US6038463A (en) * 1997-09-26 2000-03-14 Medtronic, Inc. Medical electrical lead
JP3377419B2 (ja) 1997-11-11 2003-02-17 インターナショナル・ビジネス・マシーンズ・コーポレーション 命令列生成方法及び装置、変換方法、及びコンピュータ
US6654954B1 (en) 1998-02-17 2003-11-25 International Business Machines Corporation Computer system, program product and method utilizing executable file with alternate program code attached as a file attribute
US6256725B1 (en) 1998-12-04 2001-07-03 Agere Systems Guardian Corp. Shared datapath processor utilizing stack-based and register-based storage spaces
US6826749B2 (en) 1998-12-08 2004-11-30 Nazomi Communications, Inc. Java hardware accelerator using thread manager
US6338160B1 (en) 1998-12-08 2002-01-08 Nazomi Communications, Inc. Constant pool reference resolution method
US6332215B1 (en) 1998-12-08 2001-12-18 Nazomi Communications, Inc. Java virtual machine hardware for RISC and CISC processors
US6651159B1 (en) * 1999-11-29 2003-11-18 Ati International Srl Floating point register stack management for CISC
AU2001241487A1 (en) 2000-02-14 2001-08-27 Chicory Systems, Inc. Transforming a stack-based code sequence to a register based code sequence
US6990567B1 (en) * 2000-12-22 2006-01-24 Lsi Logic Corporation Use of internal general purpose registers of a processor as a Java virtual machine top of stack and dynamic allocation of the registers according to stack status
KR20040034601A (ko) 2001-04-23 2004-04-28 아트멜 코포레이숀 바이트 컴파일된 자바 코드를 실행하는 마이크로 프로세서
WO2003025743A1 (en) * 2001-09-12 2003-03-27 Hitachi, Ltd. Processor system having java accelerator
JP2003280894A (ja) * 2002-03-27 2003-10-02 Hitachi Ulsi Systems Co Ltd 命令セット変換装置
EP1387250B8 (en) 2002-07-31 2012-02-29 Texas Instruments Inc. Processor that accomodates multiple instruction sets and multiple decode modes
EP1391821A3 (en) 2002-07-31 2007-06-06 Texas Instruments Inc. A multi processor computing system having a java stack machine and a risc based processor
EP1387247A3 (en) 2002-07-31 2007-12-12 Texas Instruments Inc. System and method to automatically stack and unstack java local variables
EP1387249B1 (en) 2002-07-31 2019-03-13 Texas Instruments Incorporated RISC processor having a stack and register architecture
US7478224B2 (en) 2005-04-15 2009-01-13 Atmel Corporation Microprocessor access of operand stack as a register file using native instructions
DK180048B1 (en) 2017-05-11 2020-02-04 Apple Inc. MAINTAINING THE DATA PROTECTION OF PERSONAL INFORMATION

Also Published As

Publication number Publication date
US20060236077A1 (en) 2006-10-19
CA2604250A1 (en) 2006-10-26
NO20075885L (no) 2007-11-15
TW200705263A (en) 2007-02-01
US7478224B2 (en) 2009-01-13
WO2006112978A3 (en) 2007-06-21
WO2006112978A2 (en) 2006-10-26
EP1875338A4 (en) 2008-07-30
EP1875338A2 (en) 2008-01-09
CN101156131A (zh) 2008-04-02
JP2008536240A (ja) 2008-09-04

Similar Documents

Publication Publication Date Title
KR20070118663A (ko) 고유 명령어를 이용한 레지스터 화일로서의 오퍼랜드스택에 대한 마이크로프로세서 엑세스
US11422837B2 (en) Virtual machine coprocessor for accelerating software execution
JP3786644B2 (ja) バイトコンパイルされたJava(R)コードを実行するためのマイクロプロセッサ
AU2004200608B2 (en) Extreme pipeline and optimized reordering technology
US5452456A (en) Apparatus for executing a plurality of program segments having different object code types in a single program or processor environment
RU2271565C2 (ru) Запоминание операндов стека в регистре
CN101375248B (zh) 硬件JavaTM字节码译码器
US20040225869A1 (en) Process for translating instructions for an arm-type processor into instructions for a LX-type processor; relative translator device and computer program product
US7251594B2 (en) Execution time modification of instruction emulation parameters
US7219337B2 (en) Direct instructions rendering emulation computer technique
JP4755371B2 (ja) 計算機システム
CN121501377B (zh) 一种在处理单元上加载计算核的方法、设备、介质
Egger Development of an Aos Operating System for the DNARD Network Computer
Ottlik Reducing Overhead in Microkernel Based Multiserver Operating Systems through Register Banks
Andrea et al. Process for translating instructions for an arm-type processor into instructions for a LX-type processor; relative translator device and computer program product
Standard User's Guide
Thomas Exceptional Mite: simple yet flexible non-local exits in a binary-portable VM

Legal Events

Date Code Title Description
PA0105 International application

Patent event date: 20071026

Patent event code: PA01051R01D

Comment text: International Patent Application

PG1501 Laying open of application
PC1203 Withdrawal of no request for examination
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid