KR101503554B1 - 에일리어스 어드레싱을 이용한 가변 길이 인스트럭션 인코딩의 구현 - Google Patents

에일리어스 어드레싱을 이용한 가변 길이 인스트럭션 인코딩의 구현 Download PDF

Info

Publication number
KR101503554B1
KR101503554B1 KR1020107004979A KR20107004979A KR101503554B1 KR 101503554 B1 KR101503554 B1 KR 101503554B1 KR 1020107004979 A KR1020107004979 A KR 1020107004979A KR 20107004979 A KR20107004979 A KR 20107004979A KR 101503554 B1 KR101503554 B1 KR 101503554B1
Authority
KR
South Korea
Prior art keywords
address space
instruction
mode
instructions
instruction length
Prior art date
Application number
KR1020107004979A
Other languages
English (en)
Other versions
KR20100061463A (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 KR20100061463A publication Critical patent/KR20100061463A/ko
Application granted granted Critical
Publication of KR101503554B1 publication Critical patent/KR101503554B1/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
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/04Addressing variable-length words or parts of words
    • 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
    • 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; 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

디지털 프로세서 및 동작의 방법은 레거시 프로세서 상의 가변 길이 인스트럭션 인코딩을 구현하기 위하여 에일리어스 어드레스 공간을 활용한다. 본 방법은 메모리에 코드 시퀀스의 인스트럭션들을 저장하는 단계; 코드 시퀀스의 인스트럭션 어드레스들을 생성하는 단계; 제1 어드레스 공간과 제2 어드레스 공간 사이의 인스트럭션 어드레스들의 전환에 응답하여 제1 동작 모드와 제2 동작 모드 사이에서 자동적으로 스위칭하는 단계로서, 제1 어드레스 공간과 제2 어드레스 공간의 어드레스들은 공통의 메모리 공간에 액세스하는 단계; 제1 동작 모드에서, 제1 어드레스 공간의 인스트럭션들에 액세스하는 단계; 제2 동작 모드에서, 제2 어드레스 공간의 인스트럭션들에 액세스하는 단계; 및 코드 시퀀스의 액세스된 인스트럭션들을 실행하는 단계를 포함한다. 상이한 인스트럭션 길이의 인스트럭션들이 제1 및 제2 동작 모드에서 활용될 수 있다.

Description

에일리어스 어드레싱을 이용한 가변 길이 인스트럭션 인코딩의 구현{IMPLEMENTATION OF VARIABLE LENGTH INSTRUCTION ENCODING USING ALIAS ADDRESSING}
본 발명은 레거시 프로세서 상의 가변 길이 인스트럭션 인코딩에 관한 것으로서, 특히, 자동 모드 스위칭을 구현하기 위하여 에일리어스 어드레스 공간을 활용하는 가변 길이 인스트럭션 인코딩에 관한 것이다.
가장 현대적인 임베디드 프로세서에서는 콤팩트한 코드 사이즈를 성취하기 위하여 자신의 인스트럭션 셋트들의 가변 길이 인스트럭션 인코딩을 채용한다. 레거시 프로세서의 존재에 따라서 이하의 2개의 접근법이 있어 왔다.
코드 사이즈가 중요한 설계 기준으로 되는 새로 설계된 인스트럭션 셋트에 있어서, 혼합된 사이즈 인코딩이 활용될 수 있다. 이 경우, 짧은 인스트럭션과 긴 인스트럭션은 동일한 인코딩 공간을 공유한다. 그 결과, 상이한 사이즈의 인스트럭션들을 디코딩하여 실행하는데 모드 스위칭이 필요치 않다.
코드 사이즈 감소가 수행되기 전에 활용되는 인스트럭션 셋트들에 있어서, 인코딩 공간은 이미 너무 혼잡하여 새로운 오퍼레이션 코드(op codes)들을 허용할 수 없을 수 있다. 스크래치로부터 인스트럭션 셋트들을 재설계하기보다는, 주로 프로세서가 새로 도입되는 인스트럭션들을 디코딩하여 실행하는 새로운 동작의 모드가 생성된다.
두번째 경우에 있어서, 프로세서가 새로운 인스트럭션 타입들을 디코딩하여 실행할 수 있기 전에, 프로세서는 새로운 모드에 진입될 필요가 있다. 주로, 이러한 레거시 모드에서 새로운 모드로의 모드 변경은 지정된 구성 레지스터에 모드 비트를 셋팅 또는 리셋팅하는 것으로 성취된다. 이러한 접근법은 단점들을 갖는다. 프로세서가 새로운 인스트럭션들을 디코딩하여 실행하기 시작하기 전에 모드 비트가 설정되어야 한다. 레거시 모드의 인스트럭션은 새로운 모드로 스위칭하도록 비트를 설정하여야 하며, 그 역으로도 마찬가지다. 이는 임의의 레거시 코드 모듈들이 재사용된다면, 이들이 이러한 모드의 변경에서 유효하도록 개조되어야 함을 암시한다. 이는 예를 들어, 미리 컴파일된 라이브러리 모듈들을 사용하는 경우 실제적으로 제한을 가질 수 있다. 모드 비트는 또한 추가되는 모드 변경 인스트럭션을 실행하는데 필요한 사이클뿐만 아니라 코드 사이즈의 측면에서, 일정한 오버헤드임을 암시한다. 또한, 모드가 변경될 때마다, 파이프라인 프로세서가 상이한 모드로부터 인스트럭션들을 디코딩하기 시작하기 전에 파이프라인을 드레인시켜야 한다. 이는 모드가 자주 스위칭되는 경우에는 성능에 영향을 줄 수도 있다.
따라서, 레거시 프로세서들의 가변 길이 인스트럭션 인코딩에 대한 방법과 장치에 대한 개선이 필요하다고 하겠다.
본 발명의 제1 양태에 따르면, 메모리, 프로그램 시퀀서, 및 실행부를 포함하는 디지털 프로세서를 동작시키기 위한 방법이 제공된다. 본 방법은, 메모리에 코드 시퀀스의 인스트럭션들을 저장하는 단계; 코드 시퀀스의 인스트럭션 어드레스들을 생성하는 단계; 제1 어드레스 공간과 제2 어드레스 공간 사이의 인스트럭션 어드레스의 전환에 응답하여 제1 동작 모드와 제2 동작 모드 사이에서 자동적으로 스위칭하는 단계로서, 제1 어드레스 공간과 제2 어드레스 공간의 어드레스들은 공통의 메모리 공간을 액세스하는 단계; 제1 동작 모드에서, 제1 어드레스 공간의 인스트럭션들에 액세스하는 단계; 제2 동작 모드에서, 제2 어드레스 공간의 인스트럭션들에 액세스하는 단계; 및 코드 시퀀스의 액세스되는 인스트럭션들을 실행하는 단계를 포함한다.
제1 동작 모드와 제2 동작 모드는 동일한 또는 상이한 인스트럭션 길이의 인스트럭션들을 활용할 수 있다. 특히, 제1 동작 모드는 하나 이상의 인스트럭션 길이들을 활용할 수 있으며, 제2 동작 모드는 하나 이상의 인스트럭션 길이들을 활용할 수 있다. 제1 모드와 제2 모드의 인스트럭션 길이들은 임의의 조합에서 동일하거나 상이할 수 있다. 몇몇 실시예에 있어서, 제1 모드는 제1 인스트럭션 길이의 인스트럭션들의 실행을 위하여 구성되며, 제2 모드는 제1 인스트럭션 길이, 제2 인스트럭션 길이, 및 제3 인스트럭션 길이의 인스트럭션들의 실행을 위하여 구성된다.
본 발명의 제2 양태에 따르면, 디지털 프로세서 장치는, 코드 시퀀스의 인스트럭션들을 저장하도록 구성되는 메모리; 코드 시퀀스의 인스트럭션 어드레스들을 생성하고, 제1 어드레스 공간과 제2 어드레스 공간과의 사이의 인스트럭션 어드레스들의 전환에 응답하여, 제1 동작 모드와 제2 동작 모드와의 사이에 자동적으로 스위칭하도록 구성되며, 제1 어드레스 공간과 제2 어드레스 공간의 어드레스들은 공통의 메모리 공간에 액세스하며, 제1 동작 모드에서는 제1 어드레스 공간에서 인스트럭션들이 액세스되며, 제2 동작 모드에서는 제2 어드레스 공간에서 인스트럭션들이 액세스되는 프로그램 시퀀서; 및 코드 시퀀스의 액세스된 인스트럭션들을 실행하도록 구성되는 실행부를 포함한다.
본 발명을 더 잘 이해하기 위하여, 본 명세서에 참조로서 포함되는 첨부 도면들에 대한 참조가 이루어진다.
도 1은 본 발명의 일 실시예에 따른 디지털 프로세서 장치의 개략 블록도이다.
도 2는 공통 물리 메모리 공간에 액세스하는 제1 어드레스 공간과 제2 어드레스 공간을 나타낸 개략도이다.
도 3은 본 발명의 일 실시예에 따른 인스트럭션 어드레싱을 나타낸 개략도이다.
도 4는 가상 메모리를 나타낸 개략도이다.
도 5는 본 발명의 일 실시예에 따른 프로세서 동작의 방법을 나타낸 흐름도이다.
도 6은 본 발명의 일 실시예에 따른 인스트럭션 정렬 버퍼를 나타낸 개략 블록도이다.
도 7은 본 발명의 일 실시예에 따른 레거시 모드와 비자 모드에서의 메모리 액세스를 나타낸 개략도이다.
도 8은 본 발명의 일 실시예에 따른 인스트럭션 정렬을 나타낸 개략도이다.
본 발명은 그 적용에 있어서 이하의 설명과 도면에 나타낸 성분들의 배치와 구성의 세부사항에 제한되지 않는다. 본 발명은 다른 실시예들로도 가능하며, 다양한 방식으로 실행되거나 실시될 수 있는 것이다. 또한, 본 명세서 사용되는 어구와 용어는 설명을 위한 것으로서, 제한적인 것으로 해석되어서는 아니된다. "포함한다(including, comprising, having, containing, involving)의 사용과 그 변형 형태는 본 명세서에 있어서 그 이후에 열거되는 항목들과 부가 항목들뿐만 아니라 그 균등물을 포괄하는 것을 의미한다.
본 발명의 일 실시예에 따른 디지털 프로세서(10)의 개략 블록도가 도 1에 도시되어 있다. 디지털 프로세서 장치(10)는 코어 프로세서(11)와 메모리(14)를 포함한다. 프로그램 시퀀서(12)는 어플리케이션 프로그램을 실행하기 위한 인스트럭션 어드레스들의 시퀀스를 생성한다. 프로그램 플로우는 연속적인 어드레스들에 액세스할 수 있지만, 통상 비연속적인 프로그램 플로우를 가져오는 루프, 서브루틴, 점프, 및/또는 인터럽트 등의 하나 이상의 프로그램 구조들을 포함한다. 프로그램 시퀀서(12)에 의해 어드레스 변환부(16)에 인스트럭션 어드레스들이 공급되며, 어드레스 변환부(16)가 논리 인스트럭션 어드레스들을 물리 메모리에 액세스하기 위한 물리 어드레스로 변환한다. 전술한 바와 같이, 자동 모드 스위칭을 구현하기 위하여 에일리어스 어드레스 공간이 사용될 수 있다. 몇몇 실시예에 있어서, 모드간의 구별을 위하여 노멀 워드(normal word) 어드레스 공간과 쇼트 워드(short word) 어드레스 공간이 활용된다. 다른 실시예에 있어서, 가상 어드레스 공간의 상이한 가상 페이지들이 모드간의 구별을 위하여 활용된다.
인스트럭션을 인스트럭션 정렬 버퍼(20)에 리턴하는 메모리(14)에 물리 어드레스들이 제공된다. 전술한 바와 같이, 메모리(14)는 클록 사이클당 하나보다 많은 인스트럭션을 리턴할 수 있으며, 인스트럭션 정렬 버퍼(20)는 실행을 위한 올바른 인스트럭션을 선택한다. IAB 컨트롤러(22)는 전술한 바와 같이 인스트럭션 정렬 버퍼(20)를 제어한다. 디코더(30)는 인스트럭션을 디코딩하고, 현재의 인스트럭션을 실행하기 위한 실행부(32)에 제어 신호들을 제공한다. 도 1의 실시예에 있어서, 코어 프로세서(11)는 프로그램 시퀀서(12), 어드레스 변환부(16), 인스트럭션 정렬 버퍼(20), IAB 컨트롤러(22), 디코더(30), 및 실행부(32)를 포함한다. 인스트럭션들에 필요한 피연산자들은 따로 액세스된다.
도 1에 도시된 바와 같이, 프로그램 시퀀서(12)는 모드 신호를 IAB 컨트롤러(22)와 디코더(30)에 공급한다. 제1 동작 모드와 제2 동작 모드는 디지털 프로세서 장치(10)에 의해 실행될 수 있는 상이한 인스트럭션 셋트들에 해당한다. 제1 및 제2 동작 모드들은 동일한 또는 상이한 인스트럭션 길이의 인스트럭션들을 활용할 수 있다. 특히, 제1 동작 모드는 하나 이상의 인스트럭션 길이들을 활용할 수 있으며, 제2 동작 모드는 하나 이상의 인스트럭션 길이들을 활용할 수 있다. 제1 모드와 제2 모드의 인스트럭션 길이들은 임의의 조합에서 동일하거나 상이할 수 있다. 몇몇 실시예에 있어서, 제1 인스트럭션 길이의 인스트럭션의 실행을 위하여 제1 모드가 구성되고, 제1 인스트럭션 길이, 제2 인스트럭션 길이, 및 제3 인스트럭션 길이의 인스트럭션의 실행을 위하여 제2 모드가 구성된다. 이러한 실시예들에 있어서, 제2 및 제3 인스트럭션 길이들은 제1 인스트럭션 길이보다 짧다.
몇몇 실시예에 있어서, "레거시" 모드라고도 하는 제1 모드는 기존의 인스트럭션 셋트에 해당하며, "비자" 모드라고 하는 제2 모드는 새로운 인스트럭션 셋트에 해당한다. 새로운 인스트럭션 셋트는 새로운 인스트럭션들 뿐만 아니라 기존의 인스트럭션 셋트의 인스트럭션들을 포함할 수도 있다. 예를 들어, 새로운 인스트럭션들의 적어도 일부는 코드 사이즈를 줄이기 위하여 기존의 인스트럭션들보다 짧은 인스트럭션 길이들을 가질 수 있다.
디코더(30)는 각각의 인스트럭션의 길이를 결정하고, 인스트럭션 길이 신호를 IAB 컨트롤러(22)와 프로그램 시퀀서(12)에 제공하도록 구성된다. 실행부(32)는 분기 어드레스를 프로그램 시퀀서(12)에 공급하도록 구성된다. 전술한 바와 같이, 취해진 분기는 모드 스위칭을 트리거할 수 있다.
도 1의 실시예에 있어서, 제1 모드는 48비트의 고정된 인스트럭션 길이를 활용한다. 제2 모드는 48 비트 인스트럭션, 32 비트 인스트럭션, 및 16 비트 인스트럭션을 포함하는 가변 길이 인스트럭션을 활용한다. 프로그램 시퀀서(12)는 현재 실행중인 인스트럭션의 어드레스에 기초하여 제1 모드와 제2 모드에 또한 이들 사이에서 자동적으로 스위칭한다. 본 발명의 실시예에 따르면, 제1 모드와 제2 모드 간의 구별을 위하여 에일리어스 어드레스가 사용된다.
메모리(14)의 에일리어스 어드레싱을 나타낸 개략도가 도 2에 도시되어 있다. 도 2에 있어서, 물리 메모리(14)는 각각 2 메가비트의 블록(70 및 72)으로 나누어지는 4 메가비트의 용량을 갖는다. 메모리(14)는 제1 어드레스 공간(74) 또는 제2 어드레스 공간(76)을 통해 액세스될 수 있다. 본 실시예에 있어서, 제1 어드레스 공간(74)을 "노멀 워드" 어드레스 공간이라고 하고, 제2 어드레스 공간(76)을 "쇼트 워드" 어드레스 공간이라고 한다. 노멀 워드 어드레싱에 있어서, 0x0002 0000 내지 0x0002 AAAA 및 0x0003 0000 내지 0x0003 AAAA의 범위의 어드레스들에서 48 비트 워드가 메모리(14)로부터 판독된다. 쇼트 워드 어드레싱에 있어서, 0x0004 0000 내지 0x0007 FFFF의 범위의 어드레스들에서 16 비트 워드가 메모리(14)로부터 판독될 수 있다. 쇼트 워드 어드레싱에서는 2개 이상, 전형적으로 3개의 16비트 워드가 메모리(14)로부터 판독될 수 있다. 도 2에 도시된 바와 같이, 제1 어드레스 공간(74)과 제2 어드레스 공간(76)은 상이한 어드레스 범위를 사용하지만, 공통의 물리 메모리 공간에 액세스한다.
도 2의 실시예에 있어서, 제1 어드레스 공간의 어드레스들과 제2 어드레스 공간의 어드레스들이 동일한 범위의 물리 메모리 어드레스들에 액세스한다. 다른 실시예에 있어서, 제1 어드레스 공간의 어드레스들과 제2 어드레스 공간의 어드레스들은 상이하지만 중복하는 물리 메모리 어드레스 범위들에 액세스한다. 따라서, 제1 어드레스 공간은 제2 어드레스 공간보다 더 크거나 더 작을 수도 있다. 그러나, 제1 어드레스 공간과 제2 어드레스 공간의 적어도 일부는 동일한 물리 메모리 공간에 해당한다. 제2 어드레스 공간은 때로는 제1 어드레스 공간에 대하여 에일리어스 어드레스 공간으로 알려져 있으며, 그 역으로도 마찬가지다.
본 발명의 일 실시예에 따른 에일리어스 어드레싱을 이용한 레거시 인코딩 및 비자 인코딩을 나타낸 개략도가 도 3에 도시되어 있다. 도 2의 블록(72)이 도 3에 도시되어 있다. 어플리케이션 프로그램을 위한 코드(80)는 물리 메모리(14)의 지정 어드레스 공간에 저장될 수 있다. 코드(80)는 레거시 코드 세그먼트(82 및 84)의 인스트럭션들과 비자 코드 세그먼트(86 및 88)의 인스트럭션들을 포함한다. 도시된 바와 같이, 코드 세그먼트들(82, 84, 86, 및 88)은 상이하지만 연속하는 물리 메모리(14)의 영역들을 점유한다. 노멀 워드 어드레스 공간의 어드레스들을 이용하여 레거시 코드 세그먼트(82 및 84)가 액세스되며, 쇼트 워드 어드레스 공간의 어드레스들을 이용하여 비자 코드 세그먼트(86 및 88)가 액세스된다. 그 결과, 프로그램 시퀀서(12)는 현재의 인스트럭션 어드레스가 노멀 워드 어드레스 공간에 있는지 또는 쇼트 워드 어드레스 공간에 있는지에 따라서 동작 모드를 결정할 수 있다.
가상 어드레싱을 나타낸 개략도가 도 4에 도시되어 있다. 물리 어드레스 공간(100)은 물리 페이지(102, 104, 106, 등)를 포함한다. 통상 물리 어드레스 공간(100)보다 더 큰 가상 어드레스 공간(120)에 액세스함으로써 코어 프로세서(110)가 동작한다. 가상 어드레스 공간(120)은 가상 페이지(130, 131, 132, 133, 134, 135, 136, 등)를 포함할 수 있다. 코어 프로세서(110)가 가상 어드레스 공간(120)의 위치에 액세스하는 때에, 어드레스 변환부(16)(도 1)에 의해 가상 어드레스가 물리 어드레스로 변환되며, 해당 물리 메모리 위치가 액세스된다. 몇몇 경우에 있어서, 필요한 데이터가 디스크 저장장치 등의 하위 레벨의 메모리에 액세스되어, 물리 메모리에 전달된다. 가상 페이지와 물리 페이지간의 맵핑은 페이지 테이블에 유지된다. 페이지 테이블이 적절하게 구성된 후에, 도 4의 예에 있어서, 가상 페이지 131은 물리 페이지(102)를 가리키고, 가상 페이지(133 및 136)는 물리 페이지(104)를 가리키고, 가상 페이지(135)는 물리 페이지(106)를 가리킨다. 도시된 바와 같이, 2개 이상의 가상 페이지들이 동일한 물리 페이지를 가리킬 수 있다.
본 발명의 실시예에 따르면, 코드 시퀀스의 인스트럭션들은 물리 페이지(104) 등의 물리 메모리의 영역에 저장될 수 있다. 코어 프로세서(110)는 가상 어드레스로서 코드 시퀀스의 인스트럭션 어드레스들을 생성한다. 제1 동작 모드에 해당하는 코드 시퀀스의 가상 어드레스들은 가상 페이지(133)에 있을 수 있으며, 제2 동작 모드에 해당하는 코드 시퀀스의 가상 어드레스들은 가상 페이지(136)에 있을 수 있다. 예를 들어, 가상 페이지(133)의 인스트럭션들은 동일한 인스트럭션 길이를 가질 수 있으며, 가상 페이지(136)의 인스트럭션들은 혼합된 인스트럭션 길이를 가질 수 있다. 코드 시퀀스가 가상 페이지(133)의 인스트럭션 어드레스에서 가상 페이지(136)의 인스트럭션 어드레스로 분기하는 때에, 코어 프로세서(110)는, 있다면 분기 타겟의 어드레스 공간에서의 변화를 검출하고, 제1 동작 모드에서 제2 동작 모드로 자동 스위칭한다. 마찬가지로, 가상 페이지(136)의 코드 시퀀스가 가상 페이지(133)의 인스트럭션으로 분기하는 때에, 코어 프로세서(110)는, 있다면 분기 타겟의 어드레스 공간의 변화를 검출하고, 제2 동작 모드에서 제1 동작 모드로 자동 스위칭한다. 제1 및 제2 동작 모드에 있어서, 상이한 인스트럭션 길이로 인하여 인스트럭션들은 상이하게 액세스될 수 있다.
본 발명의 일 실시예에 따른 디지털 프로세서 장치를 동작시키는 방법의 흐름도가 도 5에 도시되어 있다. 단계(200)에 있어서, 코드 시퀀스의 인스트럭션들이 도 1에 도시된 메모리(14) 등의 메모리에 저장된다. 제1 동작 모드의 인스트럭션들과 제2 동작 모드의 인스트럭션은 물리 메모리(14)의 인접 영역에 저장될 수 있다. 실행을 위해 코드 시퀀스가 호출되는 경우, 단계(202)에서 인스트럭션 어드레스가 생성된다.
리셋시, 주어진 모드에서 동작하도록 시퀀서가 초기화되어야 한다는 것은 명백하다. 프로세서들은 본 실시예에 있어서 통상적으로 역방향으로도 호환되도록 설계되므로, 시퀀서는 리셋시 레거시 동작 모드로 초기화된다.
단계 204에 있어서, 다음 인스트럭션 어드레스가 제1 어드레스 공간에서 제2 어드레스 공간으로의 전환을 나타내는지 여부에 대한 판정이 이루어진다. 다음 인스트럭션 어드레스가 제1 어드레스 공간에서 제2 어드레스 공간으로의 전환을 나타낸다면, 프로그램 시퀀서(12)(도 1)가 단계(206)에서 제2 동작 모드로 자동 스위칭되고 단계(220)로 진행한다. 다음 인스트럭션 어드레스가 제1 어드레스 공간에서 제2 어드레스 공간으로의 전환을 나타내지 않으면, 단계(208)에서 다음 인스트럭션 어드레스가 제2 어드레스 공간에서 제1 어드레스 공간으로의 전환을 나타내는지 여부에 대한 판정이 이루어진다. 다음 인스트럭션 어드레스가 제2 어드레스로 공간으로부터 제1 어드레스 공간으로의 전환을 나타내면, 프로그램 시퀀서(12)는 단계(210)의 제1 동작 모드로 자동 스위칭하여 단계(220)에 진행한다. 다음 인스트럭션 어드레스가 제2 어드레스 공간으로부터 제1 어드레스 공간으로의 전환을 나타내지 않으면, 처리는 모드 스위칭 없이 단계(220)에 진행한다. 어드레스 공간 사이의 전환은 어드레스 공간들 사이에서 분기하는 분기 인스트럭션에 의해 표시될 수 있다.
단계 220에서, 프로그램 시퀀서(12)는 적절한 동작 모드를 이용하여 다음 인스트럭션을 패치(fetch)하고, 실행을 위해 실행부에 인스트럭션을 디스패치(dispatch)한다. 다음, 처리는 단계(202)에 진행하여 다음 인스트럭션 어드레스를 생성한다.
상기 실시예에 있어서, 48 비트로 고정된 제1 인스트럭션 길이의 인스트럭션들의 실행을 위하여 제1 즉 레거시 동작 모드가 구성되며, 48 비트 인스트럭션, 32 비트 인스트럭션, 및 16 비트 인스트럭션을 포함하는 가변 인스트럭션 길이를 갖는 인스트럭션들의 실행을 위하여 제2 즉 비자 동작 모드가 구성된다. 메모리(14)는 16 비트 워드의 4개의 열(column)로 구성될 수 있다. 레거시 모드에서, 48 비트의 인스트럭션이 각각의 클록 사이클에서 패치되고 코어 프로세서(11)에 공급되어 디코딩 및 실행된다. 메모리 구성으로 인하여, 메모리(14)의 상이한 행(row)에 저장되는 48 비트의 인스트럭션들을 정렬하도록 인스트럭션 정렬 버퍼(20)가 사용된다. 모든 인스트럭션들은 48 비트이므로, 인스트럭션 길이 정보가 필요치 않으며, 프로그램 카운터는 각각의 클록 사이클에서 48 비트에 해당하는 값만큼 증분된다.
비자 모드에서, 48 비트, 32비트, 및 16 비트의 인스트럭션들이 메모리(14)에서 혼합된다. 혼합된 인스트럭션들은 높은 코드 밀도를 성취하기 위하여 메모리(14)의 연속적인 위치에 저장된다. 코드 시퀀스를 실행하는 경우, 다음 인스트럭션의 인스트럭션 길이는 미리 알려져 있지 않다. 따라서, 도 1을 참조하면, 인스트럭션이 디코더(30)에 의해 부분적으로 디코딩되는 때에, 인스트럭션 길이가 결정되고, 인스트럭션 길이 정보가 IAB 컨트롤러(22)와 프로그램 시퀀서(12)에 제공된다. 디코더(30)에 제공되는 다음 인스트럭션의 정렬을 제어하기 위하여 IAB 컨트롤러(22)에 의해 인스트럭션 길이 정보가 사용된다. 현재의 인스트럭션의 디코딩된 길이에 따라서 16 비트 워드를 하나, 둘, 또는 3개에 해당하는 값만큼 프로그램 카운터를 증분시키도록 프로그램 시퀀서(12)에 의해 인스트럭션 길이 정보가 사용된다.
다음 인스트럭션의 길이는 미리 알려져 있지 않으므로, 최대 길이 인스트럭션에 해당하는 다수의 워드들이 각각의 클록 사이클에서 메모리(14)로부터 패치된다. 상기 예에 있어서, 3개의 16 비트 워드들이 비자 모드에서 각각의 클록 사이클에서 메모리(14)로부터 패치된다. 인스트럭션 정렬 버퍼(20)는 디코더(30)로부터의 인스트럭션 길이 정보를 이용하여 각각의 클록 사이클에서 인스트럭션들을 정렬한다. 다음 인스트럭션의 길이가 미리 알려져 있지 않으므로, 3개의 16 비트 워드가 각각의 클록 사이클에서 인스트럭션 정렬 버퍼(20)에 의해 디코더(30)에 제공된다.
인스트럭션 정렬 버퍼(20)의 일 실시예의 블록도가 도 6에 도시되어 있다. 버퍼(300)는 5개의 16 비트 워드의 용량을 가지며, 16 비트 위치들(310, 311, 312, 313, 및 314)을 포함한다. 먹스(멀티플렉서)(320)는 버퍼(300)의 각각의 16 비트 위치에 데이터를 공급한다. 버퍼(300)로의 입력은 메모리로부터, 버퍼(300)의 출력으로부터, 또는 기타의 입력 소스로부터 나올 수 있다. 16 비트 위치의 출력은 상이한 16 비트 위치에 기입되어, 버퍼(300)의 인스트럭션들을 효과적으로 천이시킬 수 있다.
제1 즉 레거시 동작 모드에 있어서, 3개의 16 비트 워드가 메모리로부터 판독되어 각각의 클록 사이클에서 디코더(30)에 공급된다. 각각의 인스트럭션은 레거시 모드에서 48 비트이므로, 인스트럭션 정렬이 필요치 않다.
제2 즉 비자 동작 모드에 있어서, 3개의 16 비트 워드가 메모리로부터 판독되어 각 클록 사이클 상에서 버퍼(300)에 기입된다. 메모리로부터 판독된 48 비트는 임의의 클록 사이클에서 인스트럭션 길이들의 혼합을 포함할 수 있다. 3개의 16 비트 워드의 내용은 미리 알려지지 않으므로, 48 비트가 디코더(30)에 공급된다. 부분적인 디코딩 후에, 지정된 인스트럭션 코딩에 기초하여 인스트럭션 길이가 결정된다. 버퍼(300)가 메모리로부터 판독된 3개의 새로운 16 비트 워드를 수용할 수 없다면, 패치 동작이 지연된다.
레거시 모드에서의 동작을 위하여 48 비트 인스트럭션을 포함하는 메모리 블록(400)이 도 7에 도시되어 있다. 본 실시예에 있어서, 메모리 블록(400)은 16 비트 워드의 4개의 열을 포함한다. 비자 모드에서의 동작을 위하여 혼합된 길이 인스트럭션을 포함하는 메모리 블록(410)이 도 7에 도시되어 있다. 본 실시예에서, 레거시 모드와 비자 모드에 있어서 고차, 중차, 저차의 16비트 워드가 상이하게 배치된다(상이한 순환). 인스트럭션 길이 신호에 응답하여, 메모리 블록(410)으로부터 인스트럭션이 패치되어, 버퍼(300)에 위치되고, 도 8에 도시된 바와 같이 버퍼(300)에 천이된다. 연속적인 클록 사이클에서의 버퍼(300)의 내용이 도 8에 도시되어 있다. 연속적인 클록 사이클에서 혼합된 길이 인스트럭션들이 실행된다.
인스트럭션이 48 비트 인스트럭션으로서 디코딩되면, 인스트럭션의 3개의 16비트 워드가 버퍼(300)의 위치(312, 313, 및 314)에서 삭제된다. 다음 클록 사이클에서 메모리로부터 판독된 3개의 16 비트 워드는 버퍼(300)의 고차 위치(312, 313, 및 314)에 기입된다(도 8에서 n 및 n+1 사이클을 참조).
인스트럭션이 32 비트 인스트럭션으로서 디코딩되면, 인스트럭션의 2개의 16 비트 워드가 버퍼(300)의 위치(313 및 314)로부터 삭제되고, 버퍼(300)의 나머지 16 비트 워드가 좌측으로 2개 위치 천이된다(도 8의 n+1 및 n+2 사이클을 참조).
인스트럭션이 16 비트 인스트럭션으로서 디코딩되면, 버퍼(300)의 고차 위치(314)의 16 비트 워드가 삭제되고, 버퍼(300)의 나머지 16 비트 워드가 좌측으로 한 위치 천이된다(도 8의 n+4 및 n+5 사이클 참조). 따라서, 인스트럭션 정렬 버퍼(20)의 동작은 현재 인스트럭션의 디코딩된 인스트럭션 길이에 의존한다.
메모리로부터 패치된 3개의 16 비트 워드를 버퍼(300)가 수용할 수 없는 경우, 인스트럭션의 패치가 병목, 즉 정지된다. 도 8에 예가 도시되어 있다. 사이클 n+6에서, 버퍼(300)는 16 비트 워드(8H, 8M, 및 8L)(도 7 참조)를 수용할 수 없고, 패치가 병목된다.
레거시 모드 또는 비자 모드에서 동작하도록 어셈블러가 구성될 수 있다. 비자 모드에서 동작하는 어셈블러에 의해 어셈블되는 소스 코드는 다양한 길이의 인스트럭션의 혼합을 가질 수 있는 2진 코드를 생성한다. 모든 인스트럭션들은 메모리(14)의 쇼트 워드 어드레스 공간에 위치된다. 레거시 모드에서 어셈블되는 동일한 코드는 48 비트의 균일한 길이의 인스트럭션들을 갖는 2진 코드를 생성한다. 따라서 어셈블되는 전체 코드는 메모리(14)의 노멀 워드 어드레스 공간에 위치된다. 2 종류의 코드가 함께 링크될 수 있다. 실행가능한 파일은, 레거시 모드에서 생성되는 코드 섹션에 대한 분기 타겟은 노멀 워드 어드레스가 되고, 비자 모드에서 생성된 코드 섹션에 대한 분기 타겟은 쇼트 워드 어드레스가 되는 방식으로 분해되는 분기 타겟 기준과 함께, 비자 모드에서 어셈블되는 인스트럭션 뿐만 아니라 레거시 모드에서 어셈블되는 인스트럭션을 포함한다. 전술한 바와 같이, 리셋시 레거시 모드로 프로세서가 초기화된다. 따라서, 리셋 이벤트 직후에 프로세서에 의해 실행되는 리셋 ISR(Interrupt SubRoutine)이 레거시 모드에서 어셈블된다. 2개의 어드레스 공간은, 프로그램 시퀀서가 코드의 종류를 검출하고, 상이한 동작 모드에서 올바르게 인스트럭션들을 디코딩하도록 동작의 모드를 동적으로 스위칭할 수 있도록 한다.
이 때까지, 본 발명의 적어도 일 실시예의 수개의 양태들에 대하여 설명하였지만, 당업자에 대하여 다양한 변경예, 개조예, 및 개선예가 용이하게 일어날 수 있다는 것을 이해하기 바란다. 이러한 변경예, 개조예, 및 개선예들은 본 개시물의 일부로 하고자 한 것이며, 본 발명의 개념과 범주 내로 하고자 한다. 따라서, 상기 설명과 도면은 예시를 위한 것이다.

Claims (29)

  1. 메모리, 프로그램 시퀀서 및 실행부를 포함하는 디지털 프로세서를 동작시키는 방법으로서,
    상기 메모리에 코드 시퀀스의 인스트럭션들을 저장하는 단계;
    상기 코드 시퀀스의 인스트럭션 어드레스들을 생성하는 단계;
    제1 어드레스 공간과 제2 어드레스 공간 사이의 인스트럭션 어드레스들의 전환(transition)에 응답하여 제1 동작 모드와 제2 동작 모드 사이에서 자동적으로 스위칭하는 단계 - 상기 제1 어드레스 공간과 상기 제2 어드레스 공간의 어드레스들은 공통의 메모리 공간에 액세스함 -;
    상기 제1 동작 모드에서, 상기 제1 어드레스 공간에서 인스트럭션들에 액세스하는 단계;
    상기 제2 동작 모드에서, 상기 제2 어드레스 공간에서 인스트럭션들에 액세스하는 단계; 및
    상기 코드 시퀀스의 액세스된 인스트럭션들을 실행하는 단계
    를 포함하고,
    상기 제1 어드레스 공간에서 인스트럭션들에 액세스하는 단계는 제1 인스트럭션 길이의 인스트럭션들에 액세스하는 단계를 포함하고, 상기 제2 어드레스 공간에서 인스트럭션들에 액세스하는 단계는 제2 인스트럭션 길이의 인스트럭션들에 액세스하는 단계를 포함하는 디지털 프로세서 동작 방법.
  2. 제1항에 있어서,
    상기 자동적으로 스위칭하는 단계는, 상기 제1 어드레스 공간으로부터 상기 제2 어드레스 공간으로의 인스트럭션 어드레스들의 전환에 응답하여 상기 제1 모드로부터 상기 제2 모드로 스위칭하는 단계, 및 상기 제2 어드레스 공간으로부터 상기 제1 어드레스 공간으로의 인스트럭션 어드레스들의 전환에 응답하여 상기 제2 모드로부터 상기 제1 모드로 스위칭하는 단계를 포함하는 디지털 프로세서 동작 방법.
  3. 삭제
  4. 제1항에 있어서,
    상기 제2 어드레스 공간에서 인스트럭션들에 액세스하는 단계는, 상기 제2 어드레스 공간에서 상기 제1 인스트럭션 길이의 인스트럭션들에 액세스하는 단계를 더 포함하는 디지털 프로세서 동작 방법.
  5. 제4항에 있어서,
    상기 제2 모드에서 현재의 인스트럭션 길이를 판정하고, 현재의 인스트럭션 길이에 기초하여 다음의 인스트럭션을 정렬하는 단계를 더 포함하는 디지털 프로세서 동작 방법.
  6. 제5항에 있어서,
    인스트럭션들을 정렬하는 단계는, 상기 현재의 인스트럭션 길이에 응답하여 인스트럭션 정렬 버퍼에서 인스트럭션들을 천이(shifting)하는 단계를 포함하는 디지털 프로세서 동작 방법.
  7. 제1항에 있어서,
    상기 인스트럭션들에 액세스하는 단계는, 각각의 클록 사이클에서 가장 긴 인스트럭션 길이에 해당하는 다수의 비트들에 액세스하는 단계를 포함하는 디지털 프로세서 동작 방법.
  8. 제1항에 있어서,
    상기 제2 어드레스 공간에서 인스트럭션들에 액세스하는 단계는, 상기 제2 어드레스 공간에서 상기 제1 인스트럭션 길이의 인스트럭션들 및 제3 인스트럭션 길이의 인스트럭션들에 액세스하는 단계를 더 포함하는 디지털 프로세서 동작 방법.
  9. 제8항에 있어서,
    상기 제1 인스트럭션 길이는 상기 제2 인스트럭션 길이 및 상기 제3 인스트럭션 길이보다 더 큰 디지털 프로세서 동작 방법.
  10. 제1항에 있어서,
    상기 자동적으로 스위칭하는 단계는, 분기 인스트럭션의 타겟 어드레스를 검출하는 단계, 및 상기 분기 인스트럭션의 타겟 어드레스가 상기 제1 어드레스 공간과 상기 제2 어드레스 공간 사이의 전환을 나타내는 경우, 상기 제1 모드와 상기 제2 모드 사이에서 스위칭하는 단계를 포함하는 디지털 프로세서 동작 방법.
  11. 제8항에 있어서,
    상기 제2 어드레스 공간에서 인스트럭션들에 액세스하는 단계는, 상기 메모리의 연속적인 위치들에서 혼합된 인스트럭션 길이들의 인스트럭션들에 액세스하는 단계를 포함하는 디지털 프로세서 동작 방법.
  12. 제1항에 있어서,
    상기 제2 어드레스 공간에서 인스트럭션들에 액세스하는 단계는, 상기 제2 어드레스 공간에서 제3 인스트럭션 길이의 인스트럭션들에 액세스하는 단계를 더 포함하는 디지털 프로세서 동작 방법.
  13. 제8항에 있어서,
    상기 제1 인스트럭션 길이는 48 비트이며, 상기 제2 인스트럭션 길이는 32 비트이며, 상기 제3 인스트럭션 길이는 16 비트인 디지털 프로세서 동작 방법.
  14. 제1항에 있어서,
    상기 제1 어드레스 공간은 노멀 워드 어드레스 공간이며, 상기 제2 어드레스 공간은 쇼트 워드 어드레스 공간인 디지털 프로세서 동작 방법.
  15. 제1항에 있어서,
    상기 제1 어드레스 공간은 가상 어드레스 공간의 제1 가상 페이지이며, 상기 제2 어드레스 공간은 상기 가상 어드레스 공간의 제2 가상 페이지인 디지털 프로세서 동작 방법.
  16. 디지털 프로세서 장치로서,
    코드 시퀀스의 인스트럭션들을 저장하도록 구성되는 메모리;
    상기 코드 시퀀스의 인스트럭션 어드레스들을 생성하고, 제1 어드레스 공간과 제2 어드레스 공간 사이의 인스트럭션 어드레스들의 전환에 응답하여, 제1 동작 모드와 제2 동작 모드 사이에서 자동적으로 스위칭하도록 구성되는 프로그램 시퀀서 - 상기 제1 어드레스 공간과 상기 제2 어드레스 공간의 어드레스들은 공통의 메모리 공간에 액세스하고, 상기 제1 동작 모드에서는 상기 제1 어드레스 공간에서 인스트럭션들이 액세스되며, 상기 제2 동작 모드에서는 상기 제2 어드레스 공간에서 인스트럭션들이 액세스됨 -; 및
    상기 코드 시퀀스의 액세스된 인스트럭션들을 실행하도록 구성되는 실행부
    를 포함하고,
    상기 프로그램 시퀀서는 상기 제1 어드레스 공간에서 제1 인스트럭션 길이의 인스트럭션들에 액세스하고, 상기 제2 어드레스 공간에서 제2 인스트럭션 길이의 인스트럭션들에 액세스하도록 구성되는 디지털 프로세서 장치.
  17. 제16항에 있어서,
    상기 프로그램 시퀀서는, 상기 제1 어드레스 공간으로부터 상기 제2 어드레스 공간으로의 인스트럭션 어드레스들의 전환에 응답하여 상기 제1 모드로부터 상기 제2 모드로 스위칭하도록 구성되며, 상기 제2 어드레스 공간으로부터 상기 제1 어드레스 공간으로의 인스트럭션 어드레스들의 전환에 응답하여 상기 제2 모드로부터 상기 제1 모드로 스위칭하도록 구성되는 디지털 프로세서 장치.
  18. 삭제
  19. 제16항에 있어서,
    상기 프로그램 시퀀서는 상기 제2 어드레스 공간에서 상기 제1 인스트럭션 길이의 인스트럭션들에 액세스하도록 더 구성되는 디지털 프로세서 장치.
  20. 제16항에 있어서,
    상기 프로그램 시퀀서는 상기 제2 어드레스 공간에서 상기 제1 인스트럭션 길이 및 제3 인스트럭션 길이의 인스트럭션들에 액세스하도록 더 구성되는 디지털 프로세서 장치.
  21. 제20항에 있어서,
    상기 제1 인스트럭션 길이는 상기 제2 인스트럭션 길이 및 상기 제3 인스트럭션 길이보다 더 큰 디지털 프로세서 장치.
  22. 제20항에 있어서,
    상기 제1 인스트럭션 길이는 48 비트이며, 상기 제2 인스트럭션 길이는 32 비트이며, 상기 제3 인스트럭션 길이는 16 비트인 디지털 프로세서 장치.
  23. 제16항에 있어서,
    상기 프로그램 시퀀서는 각각의 클록 사이클에서 최대 길이 인스트럭션에 해당하는 다수의 비트를 패치(fetch)하도록 구성되는 디지털 프로세서 장치.
  24. 제16항에 있어서,
    상기 제2 모드에서 현재의 인스트럭션 길이를 판정하는 디코더 및 상기 현재의 인스트럭션 길이에 응답하여 다음 인스트럭션을 정렬하는 인스트럭션 정렬 버퍼를 더 포함하는 디지털 프로세서 장치.
  25. 제24항에 있어서,
    상기 인스트럭션 정렬 버퍼는 상기 현재의 인스트럭션 길이에 응답하여 인스트럭션들을 천이시키도록 구성되는 디지털 프로세서 장치.
  26. 제16항에 있어서,
    상기 프로그램 시퀀서는, 분기 인스트럭션의 타겟 어드레스를 검출하고, 상기 분기 인스트럭션의 타겟 어드레스가 상기 제1 어드레스 공간과 상기 제2 어드레스 공간 사이의 전환을 나타내는 것을 검출하는 것에 응답하여 상기 제1 모드와 상기 제2 모드 사이에서 스위칭하도록 구성되는 디지털 프로세서 장치.
  27. 제16항에 있어서,
    상기 제1 어드레스 공간은 노멀 워드 어드레스 공간이며, 상기 제2 어드레스 공간은 쇼트 워드 어드레스 공간인 디지털 프로세서 장치.
  28. 제16항에 있어서,
    상기 제1 어드레스 공간은 가상 어드레스 공간의 제1 가상 페이지이며, 상기 제2 어드레스 공간은 상기 가상 어드레스 공간의 제2 가상 페이지인 디지털 프로세서 장치.
  29. 메모리, 프로그램 시퀀서 및 실행부를 포함하는 디지털 프로세서를 동작시키는 방법으로서,
    상기 메모리에 코드 시퀀스의 인스트럭션들을 저장하는 단계;
    상기 코드 시퀀스의 인스트럭션 어드레스들을 생성하는 단계;
    제1 어드레스 공간과 제2 어드레스 공간 사이의 분기에 응답하여 제1 동작 모드와 제2 동작 모드 사이에서 자동적으로 스위칭하는 단계 - 상기 제1 어드레스 공간과 상기 제2 어드레스 공간의 어드레스들은 공통의 메모리 공간에 액세스함 -;
    상기 제1 동작 모드에서, 상기 제1 어드레스 공간에서 제1 인스트럭션 길이의 인스트럭션들에 액세스하는 단계;
    상기 제2 동작 모드에서, 상기 제2 어드레스 공간에서 상기 제1 인스트럭션 길이, 제2 인스트럭션 길이 및 제3 인스트럭션 길이의 인스트럭션들에 액세스하는 단계; 및
    상기 코드 시퀀스의 액세스된 인스트럭션들을 실행하는 단계
    를 포함하는 디지털 프로세서 동작 방법.
KR1020107004979A 2007-08-08 2008-07-17 에일리어스 어드레싱을 이용한 가변 길이 인스트럭션 인코딩의 구현 KR101503554B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/890,907 2007-08-08
US11/890,907 US7836285B2 (en) 2007-08-08 2007-08-08 Implementation of variable length instruction encoding using alias addressing
PCT/US2008/008725 WO2009020513A1 (en) 2007-08-08 2008-07-17 Implementation of variable length instruction encoding using alias addressing

Publications (2)

Publication Number Publication Date
KR20100061463A KR20100061463A (ko) 2010-06-07
KR101503554B1 true KR101503554B1 (ko) 2015-03-17

Family

ID=39940664

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107004979A KR101503554B1 (ko) 2007-08-08 2008-07-17 에일리어스 어드레싱을 이용한 가변 길이 인스트럭션 인코딩의 구현

Country Status (7)

Country Link
US (2) US7836285B2 (ko)
EP (1) EP2186001B1 (ko)
JP (1) JP5329541B2 (ko)
KR (1) KR101503554B1 (ko)
CN (1) CN101849222B (ko)
TW (2) TWI451329B (ko)
WO (1) WO2009020513A1 (ko)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007149876A2 (en) * 2006-06-20 2007-12-27 Datalogic Scanning, Inc. Imaging scanner with multiple image fields
US20090282220A1 (en) * 2008-05-08 2009-11-12 Mips Technologies, Inc. Microprocessor with Compact Instruction Set Architecture
US20100312991A1 (en) * 2008-05-08 2010-12-09 Mips Technologies, Inc. Microprocessor with Compact Instruction Set Architecture
US9274796B2 (en) 2009-05-11 2016-03-01 Arm Finance Overseas Limited Variable register and immediate field encoding in an instruction set architecture
US8838938B2 (en) * 2009-05-19 2014-09-16 Via Technologies, Inc. Prefix accumulation for efficient processing of instructions with multiple prefix bytes
US8533343B1 (en) 2011-01-13 2013-09-10 Google Inc. Virtual network pairs
US20120185688A1 (en) * 2011-01-13 2012-07-19 Google Inc. Processor mode locking
US8874888B1 (en) 2011-01-13 2014-10-28 Google Inc. Managed boot in a cloud system
US9135037B1 (en) 2011-01-13 2015-09-15 Google Inc. Virtual network protocol
US8812586B1 (en) 2011-02-15 2014-08-19 Google Inc. Correlating status information generated in a computer network
US9237087B1 (en) 2011-03-16 2016-01-12 Google Inc. Virtual machine name resolution
US8533796B1 (en) 2011-03-16 2013-09-10 Google Inc. Providing application programs with access to secured resources
US9063818B1 (en) 2011-03-16 2015-06-23 Google Inc. Automated software updating based on prior activity
US8261295B1 (en) 2011-03-16 2012-09-04 Google Inc. High-level language for specifying configurations of cloud-based deployments
US9378560B2 (en) * 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
US9075979B1 (en) 2011-08-11 2015-07-07 Google Inc. Authentication based on proximity to mobile device
US8966198B1 (en) 2011-09-01 2015-02-24 Google Inc. Providing snapshots of virtual storage devices
US9069616B2 (en) 2011-09-23 2015-06-30 Google Inc. Bandwidth throttling of virtual disks
US8958293B1 (en) 2011-12-06 2015-02-17 Google Inc. Transparent load-balancing for cloud computing services
US8800009B1 (en) 2011-12-30 2014-08-05 Google Inc. Virtual machine service access
US8983860B1 (en) 2012-01-30 2015-03-17 Google Inc. Advertising auction system
US9672052B1 (en) 2012-02-16 2017-06-06 Google Inc. Secure inter-process communication
US8996887B2 (en) 2012-02-24 2015-03-31 Google Inc. Log structured volume encryption for virtual machines
US8677449B1 (en) 2012-03-19 2014-03-18 Google Inc. Exposing data to virtual machines
US9069806B2 (en) 2012-03-27 2015-06-30 Google Inc. Virtual block devices
US9430255B1 (en) 2013-03-15 2016-08-30 Google Inc. Updating virtual machine generated metadata to a distribution service for sharing and backup
US10235219B2 (en) * 2015-07-27 2019-03-19 Sony Interactive Entertainment America Llc Backward compatibility by algorithm matching, disabling features, or throttling performance

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5481684A (en) * 1994-01-11 1996-01-02 Exponential Technology, Inc. Emulating operating system calls in an alternate instruction set using a modified code segment descriptor
US7149878B1 (en) * 2000-10-30 2006-12-12 Mips Technologies, Inc. Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6273333A (ja) * 1985-09-26 1987-04-04 Nec Corp エミュレーション制御装置
US5115500A (en) * 1988-01-11 1992-05-19 International Business Machines Corporation Plural incompatible instruction format decode method and apparatus
GB2290395B (en) * 1994-06-10 1997-05-28 Advanced Risc Mach Ltd Interoperability with multiple instruction sets
US5638525A (en) * 1995-02-10 1997-06-10 Intel Corporation Processor capable of executing programs that contain RISC and CISC instructions
JP3451595B2 (ja) * 1995-06-07 2003-09-29 インターナショナル・ビジネス・マシーンズ・コーポレーション 二つの別個の命令セット・アーキテクチャへの拡張をサポートすることができるアーキテクチャ・モード制御を備えたマイクロプロセッサ
US5826074A (en) * 1996-11-22 1998-10-20 S3 Incorporated Extenstion of 32-bit architecture for 64-bit addressing with shared super-page register
US5881258A (en) * 1997-03-31 1999-03-09 Sun Microsystems, Inc. Hardware compatibility circuit for a new processor architecture
JPH1173315A (ja) * 1997-08-28 1999-03-16 Saibaa Lab:Kk 可変長命令プロセサ
US6189090B1 (en) * 1997-09-17 2001-02-13 Sony Corporation Digital signal processor with variable width instructions
JP2000010863A (ja) * 1998-06-24 2000-01-14 Sony Computer Entertainment Inc 情報処理装置および方法、並びに提供媒体
US6167459A (en) * 1998-10-07 2000-12-26 International Business Machines Corporation System for reassigning alias addresses to an input/output device
US7065633B1 (en) * 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US6820189B1 (en) 1999-05-12 2004-11-16 Analog Devices, Inc. Computation core executing multiple operation DSP instructions and micro-controller instructions of shorter length without performing switch operation
US6571330B1 (en) * 2000-01-14 2003-05-27 Advanced Micro Devices, Inc. Address size and operand size prefix overrides for default sizes defined by an operating mode of a processor
US7171543B1 (en) * 2000-03-28 2007-01-30 Intel Corp. Method and apparatus for executing a 32-bit application by confining the application to a 32-bit address space subset in a 64-bit processor
US6671791B1 (en) * 2001-06-15 2003-12-30 Advanced Micro Devices, Inc. Processor including a translation unit for selectively translating virtual addresses of different sizes using a plurality of paging tables and mapping mechanisms
JP4073721B2 (ja) * 2002-06-28 2008-04-09 株式会社ルネサステクノロジ データ処理装置
US7149873B2 (en) * 2003-10-24 2006-12-12 Hewlett-Packard Development Company, L.P. Methods and apparatus for a dual address space operating system
US7421568B2 (en) * 2005-03-04 2008-09-02 Qualcomm Incorporated Power saving methods and apparatus to selectively enable cache bits based on known processor state
GB2435116B (en) 2006-02-10 2010-04-07 Imagination Tech Ltd Selecting between instruction sets in a microprocessors

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5481684A (en) * 1994-01-11 1996-01-02 Exponential Technology, Inc. Emulating operating system calls in an alternate instruction set using a modified code segment descriptor
US7149878B1 (en) * 2000-10-30 2006-12-12 Mips Technologies, Inc. Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values

Also Published As

Publication number Publication date
EP2186001A1 (en) 2010-05-19
CN101849222B (zh) 2014-01-29
US8332621B2 (en) 2012-12-11
WO2009020513A1 (en) 2009-02-12
TWI451329B (zh) 2014-09-01
TWI520059B (zh) 2016-02-01
TW201445442A (zh) 2014-12-01
JP2010536089A (ja) 2010-11-25
EP2186001B1 (en) 2018-06-13
US7836285B2 (en) 2010-11-16
US20090043990A1 (en) 2009-02-12
US20110078423A1 (en) 2011-03-31
JP5329541B2 (ja) 2013-10-30
TW200907796A (en) 2009-02-16
KR20100061463A (ko) 2010-06-07
CN101849222A (zh) 2010-09-29

Similar Documents

Publication Publication Date Title
KR101503554B1 (ko) 에일리어스 어드레싱을 이용한 가변 길이 인스트럭션 인코딩의 구현
US5758115A (en) Interoperability with multiple instruction sets
JP6591978B2 (ja) 命令セット変換システム及び方法
KR100577445B1 (ko) 분기 예측들을 신속하게 특정하기 위해 명령 캐시 내의 바이트 범위들과 관련되는 분기 선택자들
JP5313228B2 (ja) 適切なプレデコーディングにより可変長命令セットから命令をプレロードするシステム、方法およびソフトウェア
JP3803723B2 (ja) 分岐予測を選択する分岐セレクタを採用する分岐予測機構
CN1332407A (zh) 用以执行多重指令组的数据处理装置
WO1999014669A1 (en) Digital signal processor with variable width instructions
US5771377A (en) System for speculatively executing instructions using multiple commit condition code storages with instructions selecting a particular storage
KR100603067B1 (ko) 분기 예측의 타입을 분류하기 위해 복귀 선택 비트들을 이용하는 분기 예측
US20060095746A1 (en) Branch predictor, processor and branch prediction method
US20120173850A1 (en) Information processing apparatus
US10437598B2 (en) Method and apparatus for selecting among a plurality of instruction sets to a microprocessor
CN108920188B (zh) 一种扩展寄存器堆的方法及装置
US7519799B2 (en) Apparatus having a micro-instruction queue, a micro-instruction pointer programmable logic array and a micro-operation read only memory and method for use thereof
US5890006A (en) Apparatus for extracting instruction specific bytes from an instruction
CN100356318C (zh) 用于指令对准的方法和设备
US6061775A (en) Apparatus and method for predicting a first microcode instruction of a cache line and using predecode instruction data to identify instruction boundaries and types
KR19980083442A (ko) 분기예측회로
JPH11175337A (ja) データ処理装置、機械命令生成装置及び記録媒体
JPH07104780B2 (ja) マイクロプロセッサ
JPH0425937A (ja) 情報処理装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant