KR100867085B1 - 공통 명칭을 갖는 다중 레지스터에 대한 선택적인 액세스 방법 및 장치 - Google Patents

공통 명칭을 갖는 다중 레지스터에 대한 선택적인 액세스 방법 및 장치 Download PDF

Info

Publication number
KR100867085B1
KR100867085B1 KR1020037001251A KR20037001251A KR100867085B1 KR 100867085 B1 KR100867085 B1 KR 100867085B1 KR 1020037001251 A KR1020037001251 A KR 1020037001251A KR 20037001251 A KR20037001251 A KR 20037001251A KR 100867085 B1 KR100867085 B1 KR 100867085B1
Authority
KR
South Korea
Prior art keywords
register
condition
stack pointer
processor
general purpose
Prior art date
Application number
KR1020037001251A
Other languages
English (en)
Other versions
KR20030019629A (ko
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 KR20030019629A publication Critical patent/KR20030019629A/ko
Application granted granted Critical
Publication of KR100867085B1 publication Critical patent/KR100867085B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/08Payment architectures
    • G06Q20/10Payment architectures specially adapted for electronic funds transfer [EFT] systems; specially adapted for home banking systems
    • G06Q20/105Payment architectures specially adapted for electronic funds transfer [EFT] systems; specially adapted for home banking systems involving programming of a portable memory device, e.g. IC cards, "electronic purses"

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Economics (AREA)
  • Development Economics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

본 발명의 프로세서(22)는 레지스터 뱅크(50) 내에 다수의 레지스터를 갖는다. 상기 레지스터는 공통 레지스터 명을 갖는 범용 레지스터(52a) 및 스택 포인터 레지스터(52b)를 포함한다. 프로세서(22)는 상기 공통 레지스터 명을 참조하는 프로그램 명령어를 실행시키는 프로그래밍에 응답하는 로직을 포함한다. 상기 명령어는 제 1 조건하에서는 범용 레지스터(52a)로, 제 2 조건 하에서는 스택 포인터 레지스터로 실행된다. 따라서, 동일한 명칭에 의해 식별된 다중 레지스터는 어떠한 조건의 설정에 기초하여 선택적으로 액세스될 수 있다.

Description

공통 명칭을 갖는 다중 레지스터에 대한 선택적인 액세스 방법 및 장치{SELECTIVE ACCESS TO MULTIPLE REGISTERS HAVING A COMMON NAME}
본 발명은 프로그램 가능한 장치 및/또는 프로그래밍 방법에 관한 것이다. 보다 구체적으로는, 본 발명은 동일한 프로그래밍 식별자를 갖는 프로그램 가능한 디바이스의 다중 레지스터를 선택적으로 액세스하는 기법에 관한 것이나, 여기에 본 발명이 국한되는 것은 아니다.
디지털 프로세서 및 기타 프로그램 가능한 디바이스는 흔히 개별적으로 액세스 가능한 다수의 하드웨어 레지스터를 포함한다. 통상적으로, 각각의 레지스터는 그러한 레지스터를 오퍼랜드(operand)로서 이용하기 위해 대응하는 어셈블리 언어 명령어에 의해 참조될 수 있는 "논리 식별자(logical identifier)" 또는 고유의 어셈블리 언어 프로그래밍 명칭(assembly language programming name)을 갖는다. 따라서, 어느 정도까지는, 저 레벨 실행가능 형식으로 컴파일된 고 레벨 애플리케이션 프로그램은 일반적으로 적절한 동작을 위해 소정의 레지스터 배열에 의존한다.
때에 따라, 프로세서의 레지스터 배열을 변경하는 것이 바람직할 수 있다. 일례에서는, 보다 뛰어난 "차세대" 프로세서를 설계하기 위한 노력의 일환으로 이용가능한 레지스터의 총 수가 확대된다. 다른 예에서는, 기존의 설계를 수정하여 하나 이상의 하드웨어 레지스터를 추가할 수 있다. 이러한 노력과 함께, 기존의 프로그램과 호환성을 유지하는 것이 중요하다.
따라서, 프로그램 가능한 디바이스의 레지스터 배열에 대해 변경을 가하는 새로운 방법이 요구되고 있다.
본 발명의 일실시예는 다중 레지스터를 이용하는 고유의 기법이다. 본 발명의 다른 실시예들은 공통의 레지스터 명칭 또는 식별자를 갖는 레지스터에 대한 액세스를 제공하는 고유의 디바이스, 방법, 시스템 및 장치를 포함한다.
본 발명의 다른 실시예는 레지스터 명칭을 공통으로 갖는 제 1 레지스터 및 제 2 레지스터를 포함하는 프로그램 가능한 디바이스를 동작시키는 것을 포함한다. 이 명칭은 프로그래밍 명령어에서 참조된다. 프로그래밍 명령어는 제 1 조건이 만족되면 제 1 레지스터로 수행되고 제 2 조건이 만족되면 제 2 레지스터로 수행된다.
또 다른 실시예는, 레지스터 식별자를 공통으로 갖는 범용 레지스터와 스택 포인터 레지스터를 포함하는 다수의 레지스터들을 갖는 프로세서를 동작시키는 것과, 프로그래밍 명령어로 상기 식별자를 참조하는 것과, 사전 정의된 조건에 기초하여 상기 스택 포인터 레지스터와 범용 레지스터 중 하나로 프로그래밍 명령어를 실행하는 것을 포함한다.
다른 실시예에서, 프로세서는 공통 식별자를 갖는 제 1 레지스터 및 제 2 레지스터를 포함한다. 이 식별자는 제 1 조건 하에서 제 1 레지스터로 실행되고, 제 2 조건 하에서 제 2 레지스터로 실행되는 프로그래밍 명령어에 의해 참조된다. 제 1 조건 및 제 2 조건은 각각 프로세서를 동작시키는 공통 모드 동안 설정될 수 있다. 일례에서는, 제 1 레지스터는 범용 타입이고, 제 2 레지스터는 스택 포인터를 제공한다.
본 발명의 또 다른 실시예에서는, 프로세서가 레지스터 명칭을 공통으로 갖는 제 1 레지스터 및 제 2 레지스터를 포함하는 둘 이상의 레지스터를 포함한다. 제 1 조건 하에서, 이 명칭은 제 1 레지스터 내의 메모리 공간에 포인터를 로드하는데 참조된다. 제 2 레지스터의 내용을 변경하기 위해 제 2 조건 하에서 레지스터 명칭을 참조하게 하는 다른 프로그래밍 명령어가 실행된다. 이들 내용은 제 1 레지스터를 구비한 포인터에 기초하여 메모리 공간 내에 저장된다. 일례에서, 제 1 레지스터는 범용 타입이고, 제 2 레지스터는 스택 포인터를 제공한다.
또 다른 실시예는 동일한 프로그래밍 식별자를 갖는 둘 이상의 레지스터를 구비한 프로그램 가능한 디바이스를 포함한다. 만약 이 식별자가 프로그래밍 명령어에 의해 참조되면, 그 레지스터들 중 하나는 조건/상태에 기초하여 액세스를 위해 선택된다. 이들 레지스터들 중 하나에 대한 액세스는 다른 하나의 레지스터보다 더 억제된다. 이 억제(constraint)는 조건 또는 상태의 각각의 설정에 대한 보다 억제된 레지스터로 실행된 명령어들에 대한 제한 및/또는 보다 더 억제된 레지스터로 실행될 수 있는 명령어들의 유형에 대한 제한으로 표현될 수 있다.
본 발명의 또 다른 실시예에 있어서, 동일한 레지스터 명칭으로 식별되는 디폴트 레지스터 및 대체(alternate) 레지스터를 포함하는 프로그램 가능한 디바이스가 동작한다. 사전 정의된 조건이 만족되지 않으면, 디폴트 레지스터로 이 명칭을 참조하는 다수의 명령어들이 실행된다. 이 조건을 각각 설정하는 동안, 디폴트 레지스터 대신에 대체 레지스터로 명령어 수행하는데 있어서 사전에 설정된 명령어 수가 제한된다. 일례에서, 이 수의 제한은 단지 하나의 명령어이고, 따라서, 사전 정의된 조건은 각각의 명령어가 대체 레지스터로 실행되도록 재설정될 필요가 있을 것이다.
또 다른 실시예는 프로세서에 의한 실행을 위해 프로그래밍 명령어들을 운반하는 장치와 관련된다. 프로세서는 레지스터 명칭을 공통으로 갖는 범용 레지스터와 스택 포인터 레지스터를 포함한다. 프로그래밍 명령어들은, 스택 포인터 액세스 조건을 설정하고, 이 조건 설정에 응답하여 레지스터를 참조하여 메모리 포인터를 스택 포인터 레지스터로 로드하고, 상기 레지스터 명칭을 참조하여 스택 포인터 액세스 조건과 상이한 동작 조건 하에서 범용 레지스터로 유저 루틴을 실행하고, 스택 포인터 레지스터 액세스 조건을 재설정하고 인터럽트에 응답하여 포인터에 기초하여 메모리 내에 범용 레지스터의 내용을 저장하고, 범용 레지스터로 인터럽트 루틴을 수행하고, 인터럽트 루틴의 수행 후에 포인터에 기초하여 메모리로부터 범용 레지스터의 내용을 복원하도록 동작할 수 있다.
따라서, 하나의 본 발명의 목적은 다중 레지스터를 이용하는 고유의 기법을 제공하는 것이다.
본 발명의 다른 목적은 공통 명칭을 갖는 다중 레지스터와 관련된 고유의 디바이스, 방법, 시스템 또는 장치를 제공하는 것이다.
본 발명의 다른 목적, 실시예, 형태, 특징, 장점 및 이점은 본원에 포함된 상세한 설명 및 도면으로부터 명확해질 것이다.
도 1은 본 발명에 따른 시스템을 도시한 도면.
도 2는 도 1의 시스템의 레지스터 뱅크의 상세를 도시한 도면.
도 3a 및 3b는 도 1의 시스템으로 실행시킬 수 있는 본 발명에 따른 프로세스를 도시한 도면.
도 4는 도 1의 시스템을 위한 프로세서의 일부를 도시한 도면.
본 발명은 여러 가지 상이한 형태로 구현될 수 있지만, 본 발명의 원리를 쉽게 이해할 수 있도록 도면에 도시된 실시예들을 참조하여 특정 언어를 사용하여 설명한다. 그러나, 이는 본 발명의 범주를 제한하고자 하는 것은 아님에 주의하라. 본원 명세서에 기술된 실시예들의 임의의 변경 및 추가의 변형과, 본 발명의 원리의 임의의 추가적인 응용은 본 발명과 관련된 기술 분야에서 통상의 지식을 가진 자에게 자명한 것으로 해석되어야 한다.
본 발명의 일실시예에서, 프로세서는 동일한 어셈블리 언어 식별자에 의해 참조되는 범용 레지스터와 스택 레지스터를 포함한다. 이 식별자가 어셈블리 언어 명령어에 의해 참조되면, 상기 명령어는, 사전 정의된 프로그램 동작 상태가 참조에 대한 전제 조건으로서 설정되지 않으면 범용 레지스터로 실행된다. 그렇지 않으면, 스택 포인터 레지스터에 대한 액세스 또는 스택 포인터 레지스터로의 실행은 범용 레지스터로 수행될 수 있는 명령어들의 서브세트로 억제되거나 제한된다. 부가적으로 또는 대안으로, 동작 상태가 설정될 때마다, 사전 설정된 명령어의 수의 제한이 스택 포인터 레지스터에 의한 명령어 실행시에 부과될 수 있다.
도 1은 본 발명의 다른 실시예의 프로세싱 시스템(20)을 도시하고 있다. 프로세싱 시스템(20)은 프로세서(22), 메모리(24) 및 주변 회로(26)를 포함한다. 프로세서(22)는 데이터 버스(D) 및 어드레스 버스(A)에 의해 메모리(24)에 결합되고, 표준 방식으로 메모리(24)와 인터페이스하도록 구성된다. 프로세서(22)는 도 1에 개략적으로 도시된 다수의 논리 오퍼레이터(28)를 포함한다. 오퍼레이터(28)는 추가적인 프로세싱이 수행될 수 있을 때까지 메모리(24)로부터 로드된 정보를 선택적으로 수신하여 유지하는 데이터 버스(D)에 결합된 메모리 판독 로직(30)을 포함한다. 이 정보는 실행가능한 마이크로코드 형태로 프로세서(22)의 프로그램 명령어들을 포함한다. 일실시예에서, 판독 로직(30)은 명령어들을 사전 인출하여(pre-fetch) 명령어 파이프라인을 설정하도록 동작할 수 있다. 대안적으로 또는 부가적으로, 다른 형태의 데이터가 저장될 수 있으며, 판독 로직(30)에 의해 메모리(24)로부터 판독될 수 있다. 판독 로직(30)은 하나 이상의 레지스터, 레지스터 파일, 캐쉬, 및/또는 다른 로직, 데이터 및/또는 명령어들을 사전 처리하도록 동작할 수 있는 고속 메모리 장치를 포함할 수 있다.
오퍼레이터(28)는 또한 주변 회로(26)에 결합된 디코딩 및 제어 로직(32)을 포함한다. 디코딩 및 제어 로직(32)은 판독 로직(30)으로부터 수신된 명령어들을 디코딩하여 적절한 상태 및 제어 신호를 통해 프로세서(22)의 동작을 지시한다. 이들 제어 관계는 화살촉을 갖는 접속 선으로 개략적으로 표현된다. 대안적으로 또는 부가적으로, 디코딩 및 제어 로직(32)은 회로(26)로부터의 입력에 응답하여 프로세서(22)의 동작을 적절히 지시한다. 디코딩 및 제어 로직(32)은 또한 다양한 상태를 발생할 수 있으며, 회로(26)가 응답하는 출력을 제어할 수 있다. 일례로, 프로세서(22)로부터 회로(26)의 출력은 프로세서 모드 상태, 메모리 인터페이싱, 디지털-아날로그(D/A) 변환, 코프로세싱(co-processing), 데이터 통신, 및/또는 당업자라면 알 수 있는 하나 이상의 상이한 출력 신호 유형과 관련될 수 있다. 회로(26)로부터 프로세서(22)로의 입력은 하나 이상의 하드웨어 인터럽트, 프로세서 리셋 및/또는 일시 중지 동작 신호(suspended operation signal), 하나 이상의 클록 또는 타이밍 신호, 하나 이상의 프로세서 구성 신호, 아날로그-디지털(A/D) 변환 신호, 데이터 통신 신호, 및/또는 당업자라면 알 수 있는 하나 이상의 상이한 입력 신호 유형을 포함할 수 있다.
전술한 판독 로직(30), 기록 로직(34), 어드레스 로직(36), 산술/논리 장치(ALU)(38) 및 레지스터 뱅크(50)를 포함하며, 디코딩 및 제어 로직(32)에 응답하는, 프로세서(22)에 대한 다수의 다른 오퍼레이터(28)가 서술된다. 기록 로직(34)은 프로세서(22)로부터 메모리(24)로 데이터를 기록하도록 구성되며, 출력 을 위해 데이터를 유지하는 하나 이상의 레지스터를 포함할 수 있다. 어드레스 로직(36)은 판독 로직(30) 및 기록 로직(34)에 의한 기록 및 판독 동작을 위해 어드레스 버스(A) 상에 어드레스를 제공하는 하나 이상의 레지스터를 포함한다. 어드레스 로직(36)은 필요한 경우 어드레스를 증분/감분(increment/decrement)시키는 로직을 포함한다. ALU(38)는 디코딩 및 제어 로직(32)에 의해 디코딩된 명령어에 따라서 메모리(24) 및/또는 레지스터 뱅크(50)로부터 제공된 데이터에 대해 산술 및 논리 연산을 수행한다. 레지스터 뱅크(50)는 다양한 범용 레지스터 및 특정 용도 레지스터로 이루어지는데, 이에 대해서는 이하에 도 2 및 도 4를 참조하여 설명한다.
도시된 바와 같이, 프로세서(22)는 집적 회로 디바이스(40) 형태이다. 또한, 프로세서(22)는 둘 이상의 요소 및/또는 상이한 유형의 요소로 이루어질 수 있다. 프로세서(22)는 아날로그 회로, 디지털 회로 또는 이들의 조합을 포함할 수 있다. 프로세서(22)의 동작은 적어도 부분적으로는, 소프트웨어, 펌웨어, 및/또는 배선에 의한(hardwired) 전용 상태 머신 형태의 로직으로 프로그램될 수 있다. 일실시예에서, 프로세서(22)는 어드밴스드 RISC 머신즈사(Advanced RISC Machines Limited)에 의해 제공된 ARM7 또는 ARM9 프로세서 군의 32 비트 RISC(Reduced Instruction Set Computer)로서 동작하도록 구성된다.
메모리(24)는 하나 이상의 고체 상태의 전자 유형의 요소를 포함할 수 있으며, 부가적으로 또는 대안적으로 자기 또는 광학 브라이어티(variety)와 같은 다른 유형을 포함할 수도 있다. 예를 들면, 메모리(24)는 고체 상태의 전자 RAM(Random Access Memory), SAM(Sequentially Accessible Memory)(예를 들어 FIFO(First-In, First-Out) 브라이어티 또는 LIFO(Last-In, First-Out) 브라이어티), EPROM(Electrically Programmable Read Only Memory) 또는 EEPROM(Electrically Erasable Programmable Read Only Memory), 광학 디스크 메모리(예를 들어 CD ROM), 자기적으로 인코딩된 하드 디스크, 플로피 디스크, 테이프, 또는 카트리지 메체, 또는 이들 유형들의 조합을 포함할 수도 있다. 또한, 메모리(24)는 휘발성, 비휘발성 또는 휘발성 및 비휘발성 브라이어티의 혼성 조합일 수도 있다.
프로세서(22)는 여러 개의 가능한 동작 모드로 명령어들을 실행할 수 있으며, 하나의 모드가 한번에 활성화될 수 있다. 한 모드로부터 다른 모드로의 변화는 통상적으로 외부 인터럽트를 프로그래밍하거나 또는 당업자라면 알 수 있는 다른 예외적인 처리에 의해 이루어진다. 프로세서(22)의 상이한 동작 모드는 시스템 관리 루틴을 실행하기 위한 감독자 모드와 인터럽트 처리 루틴을 실행하기 위한 하나 이상의 인터럽트 모드와 같은 하나 이상의 특권 모드(privileged mode)와, 유저 루틴을 실행하기 위한 유저 모드를 포함한다. 일반적으로, 애플리케이션은 유저 프로그램 또는 루틴이 유저 모드에서 수행될 때 발생하는 임의의 예외 사항을 처리하도록 특권 모드가 트리거되도록 구성된다.
도 2에 있어서, 레지스터 뱅크(50)는 범용 레지스터 세트(52)를 포함한다.
범용 레지스터 세트(52)의 멤버는 유저 모드 및 하나 이상의 특권 모드와 같은 프로세서(22)의 둘 이상의 동작 모드 가운데 액세스될 수 있는 범용 레지스터이다. 범용 레지스터 세트(52)의 각각의 하드웨어 레지스터는 프로그래밍 식별자 또는 R0, R1, ... Rn 시리즈에 대응하는 명칭으로 지칭된다. 여기서, n은 색인 정수이며, 범용 레지스터 세트(52) 내의 범용 레지스터의 총 수는 n보다 1 크다. ARM7 RISC 프로세서에 기초한 실시예에서, 범용 레지스터 오퍼랜드 R0 내지 R7은 모든 동작 모드에 공통이고, 레지스터 오퍼랜드 R8 내지 R12는 거의 한 모드에 공통이다.
어셈블리 레벨 프로그래밍에 있어서, "R0"와 같은 소정의 레지스터의 프로그래밍 명은 프로그램 오퍼랜드로서 대응하는 하드웨어 레지스터를 사용하도록 어셈블리 명령어에 의해 참조된다. 모드 변경이 일어나면, 범용 레지스터 세트(52) 내의 레지스터의 내용은 다음 모드에 의해 액세스되어 변경될 수 있다. 따라서, 일부 실시예에서, 모드 변경의 일부로서 하나 이상의 범용 하드웨어 레지스터의 내용을 저장하기 위해 메모리 스택이 생성된다. 일례에서, 유저 모드에서 실행하는 루틴은 특권 모드에서 인터럽트 핸들러를 실행하도록 정지한다. 이 예에서, 인터럽트 핸들러는 통상적으로 내에 범용 레지스터의 유저 모드 상태를 저장하고, 인터럽트를 서비스하고, 메모리 스택으로부터 범용 레지스터의 유저 모드 상태를 복원하고, 유저 모드로 다시 전환하여 유저 루틴을 다시 시작한다.
레지스터 뱅크(50)는 또한 전용 레지스터(private register) 세트(54)를 포함한다. 전용 레지스터 세트(54)의 각 멤버는 프로세서(22)의 특정 동작 모드에 대해 고유하다. 전용 레지스터 세트(54)의 멤버는 일반적으로 Rm, Rm+1, .., Rp (여기서, m=n+1) 시리즈에 따라서 명명되고, 각각의 동작 모드에 전용인 레지스터를 구별하기 위해 일부 추가적인 명칭을 포함할 수도 있지만, 공통인 숫자 표시를 갖는다. 예를 들면, ARM7 명명법은 R13, R13_fiq, R13_svc, R13_irq, 및 R13_und를 이용하여 상이한 동작 모드의 각각에 대해 전용 "R13" 레지스터를 지칭한다. 유사한 명칭이 전용 "R14" 레지스터에 대해 이용된다.
따라서, 범용 레지스터 세트(52) 내의 레지스터들과는 달리, 전용 레지스터 세트(54)의 전용 레지스터의 내용은 메모리 스택으로부터의 상태를 저장하여 복원할 필요없이 유지된다.
레지스터(56)는 모든 모드에 대해 공통이며 일반적인 방식으로 이용되는 표준 프로그램 카운터(PC) 레지스터이다. 일반적인 상태 레지스터(58)(레지스터 SR로도 지칭됨)는 프로세서(22)의 현재 활동적인 동작 모드에서 실행되는 프로그램을 반영하는 다양한 조건들 및 동작들의 상태를 제공한다. 일반적인 상태 레지스터(58)는 모든 프로세서 동작 모드에 의해 공유된다. 동작의 특권 모드 각각에 대해 고유 상태 레지스터(USR)를 포함하는 레지스터 세트(59)가 또한 레지스터 뱅크(50) 내에 제공된다. 레지스터 세트(59)의 멤버는, 한 모드로부터 다음 모드로 전환할 때 일반적인 상태 레지스터(58)의 내용을 저장하도록 각각 구성된다. 따라서, 레지스터 세트(59) 내의 레지스터는 어떠한 환경 하에서 보다 일찍 실행된 모드로 돌아갈 때 상태 레지스터(SR)를 복원한다. ARM7 실시예에 있어서, 일반적인 상태 레지스터(58)는 오퍼랜드명 CPSR로 지정되고, 레지스터 세트(59)의 멤버는 SPSR_fiq, SPSR_svc, SPSR_abt, SPSR_irq, 및 SPSR_und로 지정된다.
어떤 예에서는, 동작을 개선시키기 위해 하나 이상의 부가적인 레지스터가 요구된다. 이 부가적인 레지스터는 기존의 레지스터와 동일한 명칭으로 프로그래밍 명령어들 내에서 참조될 수 있다. 소정의 동작 모드에 있어서, 기존의 레지스터는 하나의 조건 하에서 참조되고, 스택 포인터 레지스터는 다른 조건 하에서 참조된다. 일례에서, 기존의 레지스터는 범용 타입이고, 추가된 레지스터는 범용 레지스터 세트(52)의 범용 레지스터를 저장하고 복원하기 위한 전용 스택 포인터로서 제공된다. 이 구성은 범용 레지스터의 내용을 저장 및/또는 판독하기 위해 메모리 스택을 참조하기 위한 전용 스택 포인터가 없는 일부 실시예에 있어서 바람직하다.
도 4의 도표는 그러한 실시예의 구현에 대해 더 자세히 나타내고 있다. 도 4에 도시되어 있는 바와 같이, 레지스터 뱅크(50)는 범용 레지스터 세트(52)에 대응하는 범용 레지스터(52a) 및 스택 포인터(SP) 레지스터(52b)로 더 예시되어 있다. 범용 레지스터(52a) 및 스택 포인터(SP) 레지스터(52b)는 프로세서(22)의 상이한 하드웨어 레지스터로서 각각 제공되며, 공통 어셈블리 언어 프로그래밍 명 R0으로 참조된다. 물론 다른 실시예에서는 다른 명칭이 선택될 수 있다. 레지스터 명 R0이 프로그램 명령어에 의해 참조되면, 비트가 일반적인 상태 레지스터(58) 내에서 스택 포인터 레지스터(52b)에 대한 액세스를 지시하도록 설정되지 않는 한 범용 레지스터(52a)가 정상적으로 액세스된다. 따라서, 상태 비트의 두 상태는 두 개의 조건, 즉, R0에 대한 명령어 참조가 범용 레지스터(52a)로 실행될 수 있는 하나의 조건과, R0에 대한 명령어 참조가 스택 포인터 레지스터(52b)로 실행될 수 있는 다른 하나의 조건을 제공한다.
스택 포인터 레지스터(52b)로 R0을 참조하는 명령어가 실행될 수 있는 조건은 또한 명령어 타입에 의존한다. 구체적으로는, 범용 레지스터(52a)로 동작 가능한 프로그래밍 명령어의 서브세트만이 스택 포인터 레지스터(52b)로 동작 가능하다. 이 서브세트는 로드 다중(load multiple) 레지스터(LDM) 명령어, 저장 다중(store multiple) 레지스터(STM) 명령어, 및 무브(move) 레지스터(MOV) 명령어를 포함하고, 디코딩 및 제어 로직(32)의 LDM 상태 머신(32a), STM 상태 머신(32b), 및 MOV 상태 머신(32c)이 도 4에 각각 도시되어 있다. 이들 명칭은 ARM7 실시예에 대한 유사한 명령어 연상 기호에 대응한다. 상태 머신(32a, 32b, 32c)은 전술한 대응 스택 포인터 액세스 비트를 액세스하기 위해 일반적인 상태 레지스터(58)에 접속된다. 도 4에 도시되어 있는 스위치(60)는 범용 레지스터(52a) 및 스택 포인터 레지스터(52b) 간의 상태 머신(32a, 32b, 32c)의 선택을 부호적으로 나타내고 있다. 다른 실시예에서는, 스택 포인터 레지스터(52b)를 액세스하는데 더 많거나 적은 명령어를 갖는 상이한 명령어 서브세트가 이용될 수 있거나, 그러한 제한 없을 수 있음을 주지하라.
도 3a 및 3b의 절차(120)는 다중 프로세서 동작 모드 내의 범용 레지스터(52a) 및 스택 포인터 레지스터(52b)의 일 실시예를 도시한 것이다. 절차(120)는 개시 루틴(130)에서 시작한다. 루틴(130)에서, 스택 포인터 레지스터(52b)에 대한 액세스는 동작(132)에서 일반적인 상태 레지스터(58) 내의 지정된 비트를 설정함으로써 가능해진다. 동작(134)에서, 메모리 위치가 스택 포인터 레지스터(52b)로 로드되어, 메모리(24) 내의 선택된 메모리 스택 공간에 대한 포인터로서 작용한다. MOV 상태 머신(32c)은 동작(134)에서 범용 레지스터(52a) 대신에 스택 포인터 레지스터(52b)를 로드하는데 이용된다. 다른 실시예에서, 범용 레지스터(52a)의 내용은 또한 상태 머신(32c)에 의해 스택 포인터 레지스터(52b)와 동일한 방식으로 변경될 수 있다. ARM7 실시예에 있어서, ARM7 상태 레지스터(CPSR)의 비트 24와 같은 예약된 상태 레지스터 비트는, 실행이 범용 레지스터(52a)로 이루어지는지 또는 스택 포인터 레지스터(52b)로 이루어지는지를 판정하는데 사용될 수 있다. 이 실시예에서, 동작(132)은 명령어 MSR CPSR_flg, #0x01000000에 따라서 상태 레지스터 CPSR을 설정함으로서 수행될 수 있으며, 동작(134)은 MOV R0, #Stack_Location(여기서, "Stack_Location"은 포인터로서 로드될 어드레스를 나타냄)과 같은 무브(move) 레지스터 명령어로 수행될 수 있다.
동작(134)으로부터, 조건문(136)으로 진행된다. 일반적인 상태 레지스터(58)가 스택 포인터 레지스터(52b)에 대한 액세스를 허용하도록 설정될 때마다, 실행이 범용 레지스터(52a)로 다시 자동으로 전환되기 전에 단지 한정된 수의 명령어만이 수행될 수 있다. 만약 이 제한된 수에 도달하지 않으면, 이 명령어가 레지스터 R0을 참조하고 상태 머신(32a, 32b, 또는 32c) 중 하나에 대응하는 타입이면 스택 포인터 레지스터(52b)로 실행되는 조건 하에서 다음 명령어를 실행하는 동작(138)으로 진행된다. 다음 명령어가 실행된 후, 루틴(130)은 다시 조건문(136)으로 명령어 수를 검사하도록 리턴된다. 일단 제한된 수에 도달하면, 초기화 루틴(130)이 실행된다. 일실시예에서, 명령어 수의 제한은 단 하나의 명령어로 사전 설정되며, 따라서 조건문(136)이 참이 되기 전에 단 하나의 명령어의 실행이 허용된다. 이 실시예에서, 조건문(136)은 동작(134) 다음에 항상 참일 것이며 따라서 동작(138)은 결코 실행되지 않을 것이다. 다른 실시예에서, 당업자들이라면 알 수 있듯이, 상이한 명령어 수의 제한 및/또는 실행 제한의 상이한 방법이 이용될 수 있다.
절차(120)는 루틴(130)으로부터 유저 모드 루틴(140)으로 진행한다. 루틴(140)에서, 동작(142)은 공통 레지스터 명 R0을 참조하는 각각의 명령어가 스 택 포인터 레지스터(52b) 대신에 범용 레지스터(52a)로 실행된다는 것을 나타낸다. 루틴(140)은 동작(142)으로부터 조건문(144)으로 진행하여 프로그램이 완료되었는지의 여부를 검사한다. 프로그램이 완료되면, 절차(120)는 중지된다. 조건문(144)에 의해 검사된 프로그램이 완료되지 않았으면, 조건문(146)으로 진행하여 특권 동작 모드로의 변경이 트리거되었는지의 여부가 검사된다. 조건문(146)의 검사 결과가 거짓이면, 루틴(140)은 동작(142)으로 다시 진행하여, 스택 포인터 레지스터(52b) 대신에 레지스터 R0을 참조하는 각각의 명령어로 범용 레지스터(52a)를 액세스한다. 조건문(146)의 검사 결과가 참이면, 루틴(140)은 종료된다.
도 3b를 구체적으로 살펴보면, 절차(120)는 루틴(140)으로부터 인터럽트 핸들러와 같은 특권 모드 루틴(152)으로 진행한다. 루틴(150)은 루틴(130)과 관련하여 전술한 바와 같이, 동작(132)에서 레지스터 명 R0에 대해 후속 참조를 위해 범용 레지스터(52a) 대신에 스택 포인터 레지스터(52b)에 대한 액세스를 가능하게 하는 것으로부터 시작된다. 루틴(150)의 동작(132)으로부터 동작(154)으로 진행하며, 여기서 범용 레지스터 세트(52)의 지정된 멤버들이 스택 포인터 레지스터(52b)에 의해 지시된 메모리 스택에 저장된다. 동작(154)을 수행하기 위해 STM 상태 머신(32b)이 이용되는데, 이 상태 머신(32b)은 스택 포인터 레지스터(52b)의 내용을 사용하여 메모리 스택 공간을 어드레스하고(스택을 지시하고), 지정된 경우에는 범용 레지스터(52a)를 포함하여 지정된 레지스터의 내용을 스택 상에 저장한다. 또한, ARM7의 일실시예에서, 상태 머신(32b)은 임의의 리스트된 레지스터를 저장하기 전에 SPSR 상태 레지스터를 저장하고, 스택 포인터 레지스터(52b)에 "회답(write back)"하여 선택된 스택 어드레스 관리 포맷에 따라서 새로운 저장 위치를 지시하도록 그 내용을 자동으로 조정한다. ARM7의 실시예에서, R0에 의해 지정된 범용 레지스터(52a)의 내용을 포함하는 전체 레지스터 세트를 저장하기 위해 다음의 명령어, 즉, STMIA R0, {R0-R14}가 사용될 수 있다.
루틴(150)의 동작(154)으로부터 루틴(130)과 관련하여 전술한 바와 같은 조건문(136)으로 다시 진행한다. 만약 조건문(136)의 검사 결과가 부정이면, 루틴(130)에 대해 설명한 바와 같이 다음 명령어가 실행된다. 조건문(136)의 검사 결과가 긍정이면, 루틴(150)은 단계(156)에서 계속된다. 단계(156)에서 R0에 대한 각각의 참조는 스택 포인터 레지스터(52b) 대신에 범용 레지스터(52a)로 실행된다. 그 다음에 단계(156)로부터, 조건문(164)으로 진행하여, 특권 모드 동작이 완료되었는지의 여부가 검사된다. 만약 조건문(164)의 검사 결과가 부정이면, 루틴(150)은 단계(156)로 다시 순환된다. 만약 조건문(164)의 검사 결과가 긍정이면, 루틴(150)은 전술한 동작(132)을 계속하여 스택 포인터 레지스터(52b)에 대한 액세스를 다시 가능하게 한다. 루틴(150) 내에서 동작(132)이 두 번째로 발생한 다음, 단계(168)로 진행하며, 여기서 동작(154) 동안 메모리 스택 내에 저장된 범용 레지스터 세트(52)의 내용이 LDM 상태 머신(32a)으로 실행된 로드 다중 명령어를 이용하여 복원된다. LDM 상태 머신(32a)은 스택 포인터 레지스터(52b)의 내용을 이용하여, 메모리 스택을 지시하고, 지정된 경우 범용 레지스터(52a)의 내용을 포함하여 메모리 스택으로부터 범용 레지스터의 지정된 리스트의 내용을 로드한다. ARM7의 일실시예에서, 리스트된 레지스터 및 회답(write back)이 스택 포인터 레지스터(52b)에 대한 소정의 스택 어드레스 관리 구조에 대해 수행되기 전에, SPSR 레지스터가 먼저 로드된다. 이 ARM7 실시예에 있어서, 단계(168)를 실행하는 명령어는 다음과 같다. 즉, LDMIA R0, {R0-R14}. 단계(168)로부터, 루틴(150)은 종료되고 유저 모드 동작의 이전 상태를 복원한다. 따라서, 초기화 루틴(130)으로 다시 진입하여 루틴(140)에서 유저 모드 동작을 다시 시작하기 전에 조건문(36)의 명령어 제한 검사를 수행한다.
다른 실시예에서는, 공통 레지스터 명을 갖는 둘 이상의 레지스터에 대한 조건 액세스는 범용 및 스택 포인터 레지스터 버라이어티 외에 레지스터 타입 및/또는 레지스터 타입의 조합에 대해 이용된다. 또한, 또 다른 실시예에서, 상태 레지스터 비트에 추가로 또는 그 대안으로 하나 이상의 다른 조건들이 사용되어 공통 레지스터 명칭을 갖는 다수의 레지스터들 중 선택된 하나로 명령어 실행을 가능하게 할 수 있다. 일례에 따르면, 모드의 변경이 자동으로 스택 포인터 이용을 트리거할 수 있다.
또한, 하나 이상의 레지스터 명령어 참조 기법에 대해 상이한 제한이 이용될 수 있거나 또는 그러한 제한이 없을 수도 있다. 또 다른 실시예에서, 공통 식별자를 갖는 다중 레지스터가 다중 동작 모드를 포함하거나 포함하지 않을 수도 있는 다른 유형의 프로그램된 장치 또는 디바이스와 함께 이용될 수 있다. 대안적으로 또는 부가적으로, 본 발명의 또 다른 실시예에서, 소정의 레지스터에 대한 액세스는 전술한 특징으로 갖는 본 발명에 따라 제한되거나 억제될 수 있다.
본원에 기술된 임의의 이론, 동작 메카니즘, 입증(proof), 또는 발견은 본 발명의 이해를 돕고자 하는 것이지 그러한 이론, 동작 메타니즘, 입증, 또는 발견에 본 발명을 한정하고자 하는 것은 아니다. 이상 도면 및 상세한 설명을 통해 본 발명을 설명하였지만, 이는 예시일 뿐 한정 사항은 아니며, 단지 선택된 실시예만 도시하고 설명하였으며, 본원에 정의되었거나 첨부한 청구범위에 의해 정의된 본 발명의 사상 내의 모든 동등물, 변화 및 변경 사항은 보호되어야 함을 알 수 있을 것이다.

Claims (18)

  1. 레지스터 명(register name)을 공통으로 갖는 범용 레지스터(52a) 및 스택 포인터 레지스터(52b)를 포함하는 둘 이상의 레지스터(50)를 포함하는 프로세서(22)를 동작시키는 단계와,
    프로그래밍 명령어로 상기 레지스터 명을 참조하는 단계와,
    제 1 조건 하에서는 상기 범용 레지스터(52a)로, 제 2 조건 하에서는 상기 스택 포인터 레지스터(52b)로 상기 프로그래밍 명령어를 실행하는 단계를 포함하는 방법.
  2. 제 1 항에 있어서,
    지정된 상태 값이 상기 참조에 대한 사전 조건(precondition)으로서 제공되고 또한 상기 프로그래밍 명령어가 상기 범용 레지스터(52a)로 동작 가능한 여러 명령어 타입의 지정된 서브세트 중 하나인 경우에 상기 제 2 조건이 설정되는 방법.
  3. 제 1 항에 있어서,
    상기 제 2 조건이 설정될 때마다 상기 스택 포인터 레지스터(52b)에 의한 명령어 실행에 대한 사전설정된 명령어 수의 한계를 제공하는 단계를 더 포함하는 방법.
  4. 제 3 항에 있어서,
    상기 사전 설정된 명령어 수의 한계는 1인 방법.
  5. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    프로세서 동작의 공통 모드에서 상기 범용 레지스터(52a)로 유저 프로그램을 실행하는 단계와,
    인터럽트에 응답하여, 상기 스택 포인터 레지스터(52b)로 정의된 메모리 스택 내에 상기 범용 레지스터(52a)의 상태를 저장하는 단계와,
    상기 저장 단계 후에 프로세서 동작의 인터럽트 모드에서 상기 범용 레지스터(52a)로 인터럽트 루틴을 실행하는 단계와,
    상기 스택 포인터 레지스터(52b)로 명령어를 실행함으로써 상기 범용 레지스터(52a)의 상태를 복원하는 단계를 더 포함하는 방법.
  6. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 제 1 조건은 상태 비트의 제 1 상태에 대응하고, 상기 제 2 조건은 상기 상태 비트의 제 2 상태에 대응하는 방법.
  7. 제 1 레지스터(52a) 및 제 2 레지스터(52b)를 포함하는 프로세서(22)를 동작시키는 단계 -상기 제 1 레지스터(52a) 및 상기 제 2 레지스터(52b)는 공통 레지스터 명에 의해 식별됨- 와,
    사전 정의된 조건이 설정되지 않으면, 상기 제 1 레지스터(52a)로 상기 공통 레지스터 명을 참조하는 다수의 명령어들을 실행하는 단계와,
    상기 사전 정의된 조건을 설정할 때마다, 상기 제 1 레지스터(52a) 대신에 상기 제 2 레지스터(52b)에 의한 명령어 실행에 대한 사전 설정된 명령어 수의 한계를 제공하는 단계를 포함하는 방법.
  8. 제 7 항에 있어서,
    상기 사전 설정된 명령어 수의 한계는 1인 방법.
  9. 제 7 항에 있어서,
    상기 사전 정의된 조건은 상기 제 2 레지스터(52b)로 상기 명령어 실행에 대 한 사전 조건으로서 제공된 지정된 상태 값에 대응하는 방법.
  10. 제 7 항에 있어서,
    상기 사전 정의된 조건은 상태 레지스터(58) 비트 상태에 기초하는 방법.
  11. 제 7 항 내지 제 10 항 중 어느 한 항에 있어서,
    상기 제 2 레지스터(52b)로 스택 포인터를 정의하고 상기 스택 포인터에 기초하여 메모리 스택에 대해 상기 제 1 레지스터(52a)의 내용을 주고받는 단계를 더 포함하는 방법.
  12. 다수의 레지스터(50)를 포함하는 프로세서(22)를 포함하고, 상기 레지스터(50)는 공통 레지스터 명을 갖는 범용 레지스터(52a) 및 스택 포인터 레지스터(52b)를 포함하며, 상기 프로세서(22)는, 프로그래밍에 응답하여 제 1 조건 하에서는 상기 범용 레지스터(52a)로, 제 2 조건 하에서는 상기 스택 포인터 레지스터(52b)로 상기 공통 레지스터 명을 참조하는 프로그램된 명령어를 실행시키는 로직(32)을 포함하는 장치.
  13. 제 12 항에 있어서,
    상기 프로세서(22)에 결합된 메모리(24)를 더 포함하고,
    상기 로직(32)은 상기 프로그래밍에 응답하여 상기 스택 포인터 레지스터(52b) 내에 메모리 포인터를 저장하고 상기 메모리 포인터로 지정된 상기 메모리 내에 정의된 스택에 대해 상기 레지스터(50)의 내용을 주고받는 장치.
  14. 제 12 항에 있어서,
    상기 프로세서(22)는 집적 회로 디바이스(40)의 형태인 장치.
  15. 제 12 항에 있어서,
    상기 프로세서(22)는 상기 레지스터(50)에 결합된 산술/논리 장치(38)를 포함하는 장치.
  16. 제 12 항 내지 제 15 항 중 어느 한 항에 있어서,
    상기 로직(32)은 상기 제 1 조건이 만족되면 상기 범용 레지스터(52a)에 대한 액세스를 각각 허용하는 상기 프로세서(22)의 다수의 상이한 동작 모드를 정의 하도록 동작 가능한 장치.
  17. 제 12 항 내지 제 15 항 중 어느 한 항에 있어서,
    상기 레지스터(50)는 상태 레지스터(58)를 포함하고, 상기 제 1 조건은 상기 상태 레지스터(58)의 비트의 제 1 상태에 대응하고, 상기 제 2 조건은 상기 상태 레지스터(58)의 상기 비트의 제 2 상태에 대응하는 장치.
  18. 제 12 항 내지 제 15 항 중 어느 한 항에 있어서,
    상기 로직(32)은 상기 제 1 조건이 설정될 때마다 상기 스택 포인터 레지스터(52b)에 의한 명령어 실행에 대한 사전 설정된 명령어 수의 한계를 제공하도록 동작 가능한 장치.
KR1020037001251A 2001-05-31 2002-05-28 공통 명칭을 갖는 다중 레지스터에 대한 선택적인 액세스 방법 및 장치 KR100867085B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/871,135 2001-05-31
US09/871,135 US6666383B2 (en) 2001-05-31 2001-05-31 Selective access to multiple registers having a common name
PCT/IB2002/001889 WO2002097612A1 (en) 2001-05-31 2002-05-28 Selective access to multiple registers having a common name

Publications (2)

Publication Number Publication Date
KR20030019629A KR20030019629A (ko) 2003-03-06
KR100867085B1 true KR100867085B1 (ko) 2008-11-04

Family

ID=25356798

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020037001251A KR100867085B1 (ko) 2001-05-31 2002-05-28 공통 명칭을 갖는 다중 레지스터에 대한 선택적인 액세스 방법 및 장치

Country Status (5)

Country Link
US (1) US6666383B2 (ko)
EP (1) EP1397740A1 (ko)
JP (1) JP4024751B2 (ko)
KR (1) KR100867085B1 (ko)
WO (1) WO2002097612A1 (ko)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6986122B2 (en) * 2001-06-07 2006-01-10 International Business Machines Corporation IF statement having an expression setup clause to be utilized in structured assembly language programming
US7185183B1 (en) * 2001-08-02 2007-02-27 Mips Technologies, Inc. Atomic update of CPO state
US7634638B1 (en) * 2002-10-22 2009-12-15 Mips Technologies, Inc. Instruction encoding for system register bit set and clear
TWI251762B (en) * 2003-12-12 2006-03-21 Via Tech Inc Sales rolling forecast managing system and method and recording medium
TWI259398B (en) * 2004-02-04 2006-08-01 Sunplus Technology Co Ltd Device and method using operation mode in processor to switch register
JP5289688B2 (ja) * 2006-07-05 2013-09-11 ルネサスエレクトロニクス株式会社 プロセッサシステム及びプロセッサシステムを動作させるオペレーティングシステムプログラムの処理方法
WO2008122746A1 (en) 2007-04-10 2008-10-16 Cambridge Consultants Limited Data processing apparatus
US9645949B2 (en) 2008-07-10 2017-05-09 Cambridge Consultants Ltd. Data processing apparatus using privileged and non-privileged modes with multiple stacks
JP5414057B2 (ja) * 2009-05-22 2014-02-12 ルネサスエレクトロニクス株式会社 マイクロコンピュータ
US9645822B2 (en) 2011-04-07 2017-05-09 Via Technologies, Inc Conditional store instructions in an out-of-order execution microprocessor
US9244686B2 (en) 2011-04-07 2016-01-26 Via Technologies, Inc. Microprocessor that translates conditional load/store instructions into variable number of microinstructions
US8880851B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US8880857B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor
US9176733B2 (en) 2011-04-07 2015-11-03 Via Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked registers
US9292470B2 (en) 2011-04-07 2016-03-22 Via Technologies, Inc. Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program
US9898291B2 (en) 2011-04-07 2018-02-20 Via Technologies, Inc. Microprocessor with arm and X86 instruction length decoders
US9378019B2 (en) 2011-04-07 2016-06-28 Via Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
US9043580B2 (en) 2011-04-07 2015-05-26 Via Technologies, Inc. Accessing model specific registers (MSR) with different sets of distinct microinstructions for instructions of different instruction set architecture (ISA)
US9141389B2 (en) 2011-04-07 2015-09-22 Via Technologies, Inc. Heterogeneous ISA microprocessor with shared hardware ISA registers
US9336180B2 (en) 2011-04-07 2016-05-10 Via Technologies, Inc. Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode
US9146742B2 (en) 2011-04-07 2015-09-29 Via Technologies, Inc. Heterogeneous ISA microprocessor that preserves non-ISA-specific configuration state when reset to different ISA
US9032189B2 (en) 2011-04-07 2015-05-12 Via Technologies, Inc. Efficient conditional ALU instruction in read-port limited register file microprocessor
US8924695B2 (en) 2011-04-07 2014-12-30 Via Technologies, Inc. Conditional ALU instruction condition satisfaction propagation between microinstructions in read-port limited register file microprocessor
US9274795B2 (en) 2011-04-07 2016-03-01 Via Technologies, Inc. Conditional non-branch instruction prediction
US9128701B2 (en) 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
US9317288B2 (en) 2011-04-07 2016-04-19 Via Technologies, Inc. Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9727353B2 (en) 2015-10-30 2017-08-08 International Business Machines Corporation Simultaneously capturing status information for multiple operating modes
CN114661355B (zh) * 2022-05-24 2022-12-02 深圳市智想科技有限公司 Risc架构处理器的寄存器架构、寄存器组及risc架构处理器

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5634046A (en) 1994-09-30 1997-05-27 Microsoft Corporation General purpose use of a stack pointer register
US5812868A (en) 1996-09-16 1998-09-22 Motorola Inc. Method and apparatus for selecting a register file in a data processing system

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5446904A (en) 1991-05-17 1995-08-29 Zenith Data Systems Corporation Suspend/resume capability for a protected mode microprocessor
US5493687A (en) 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
US5717947A (en) 1993-03-31 1998-02-10 Motorola, Inc. Data processing system and method thereof
US5568380A (en) 1993-08-30 1996-10-22 International Business Machines Corporation Shadow register file for instruction rollback
US6138230A (en) * 1993-10-18 2000-10-24 Via-Cyrix, Inc. Processor with multiple execution pipelines using pipe stage state information to control independent movement of instructions between pipe stages of an execution pipeline
US5557737A (en) 1994-06-13 1996-09-17 Bull Hn Information Systems Inc. Automated safestore stack generation and recovery in a fault tolerant central processor
US5553232A (en) 1994-06-13 1996-09-03 Bull Hn Informations Systems Inc. Automated safestore stack generation and move in a fault tolerant central processor
US6216200B1 (en) 1994-10-14 2001-04-10 Mips Technologies, Inc. Address queue
US5642516A (en) 1994-10-14 1997-06-24 Cirrus Logic, Inc. Selective shadowing of registers for interrupt processing
US6421754B1 (en) 1994-12-22 2002-07-16 Texas Instruments Incorporated System management mode circuits, systems and methods
US6199095B1 (en) 1996-01-29 2001-03-06 Compaq Computer Corporation System and method for achieving object method transparency in a multi-code execution environment
US5987258A (en) 1997-06-27 1999-11-16 Lsi Logic Corporation Register reservation method for fast context switching in microprocessors
US6212609B1 (en) 1997-06-30 2001-04-03 Intel Corporation Alternate access mechanism for saving and restoring state of read-only register
US6128728A (en) * 1997-08-01 2000-10-03 Micron Technology, Inc. Virtual shadow registers and virtual register windows
US5974525A (en) 1997-12-05 1999-10-26 Intel Corporation System for allowing multiple instructions to use the same logical registers by remapping them to separate physical segment registers when the first is being utilized
US6209082B1 (en) 1998-11-17 2001-03-27 Ip First, L.L.C. Apparatus and method for optimizing execution of push all/pop all instructions

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5634046A (en) 1994-09-30 1997-05-27 Microsoft Corporation General purpose use of a stack pointer register
US5812868A (en) 1996-09-16 1998-09-22 Motorola Inc. Method and apparatus for selecting a register file in a data processing system

Also Published As

Publication number Publication date
WO2002097612A1 (en) 2002-12-05
EP1397740A1 (en) 2004-03-17
JP2004520662A (ja) 2004-07-08
KR20030019629A (ko) 2003-03-06
JP4024751B2 (ja) 2007-12-19
US20020179719A1 (en) 2002-12-05
US6666383B2 (en) 2003-12-23

Similar Documents

Publication Publication Date Title
KR100867085B1 (ko) 공통 명칭을 갖는 다중 레지스터에 대한 선택적인 액세스 방법 및 장치
US9003422B2 (en) Microprocessor architecture having extendible logic
US8468324B2 (en) Dual thread processor
RU2265880C2 (ru) Новый режим процессора для ограничения функционирования гостевого программного обеспечения, выполняющегося на виртуальной машине, поддерживаемой монитором виртуальной машины
US5517651A (en) Method and apparatus for loading a segment register in a microprocessor capable of operating in multiple modes
KR100312092B1 (ko) 스택레퍼런스및비스택레퍼런스방식으로공유논리레지스터파일의레지스터를지정하는두명령어유형을실행하는방법및장치
US8429669B2 (en) Virtual machine switching control by prefetching information out of and updating a set of processor control information based on a bitmap having update status
US6209085B1 (en) Method and apparatus for performing process switching in multiprocessor computer systems
US5148544A (en) Apparatus and method for control of asynchronous program interrupt events in a data processing system
JPH05173783A (ja) 命令パイプラインをドレーンさせるためのシステムおよび方法
US20020066004A1 (en) Storing stack operands in registers
WO1994027214A1 (en) Method for decoding sequences of guest instructions for a host computer
KR20030072550A (ko) 데이터 처리장치와 복귀상태의 저장방법
US5815701A (en) Computer method and apparatus which maintains context switching speed with a large number of registers and which improves interrupt processing time
KR100864891B1 (ko) 다중 명령 세트 시스템에서의 미처리된 연산 처리
WO1997022920A1 (en) Microarchitecture for indicating that the packed data state is full or empty
TWI756212B (zh) 處理向量指令
EP0297892B1 (en) Apparatus and method for control of asynchronous program interrupt events in a data processing system
JPH08255476A (ja) データ処理システムにおけるメモリ拡張スタック装置および方法
US10762226B2 (en) Register access control
EP3649549B1 (en) Context data management
US20050235093A1 (en) Apparatus and method for managing registers in a processor to emulate a portion of stack
WO2001082059A2 (en) Method and apparatus to improve context switch times in a computing system
JPH01276232A (ja) データ処理装置

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120927

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20130927

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140929

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150930

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160929

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20170929

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20180928

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20190924

Year of fee payment: 12