KR100385495B1 - 워드정렬브랜치타겟을가지는처리시스템 - Google Patents
워드정렬브랜치타겟을가지는처리시스템 Download PDFInfo
- Publication number
- KR100385495B1 KR100385495B1 KR1019960702537A KR19960702537A KR100385495B1 KR 100385495 B1 KR100385495 B1 KR 100385495B1 KR 1019960702537 A KR1019960702537 A KR 1019960702537A KR 19960702537 A KR19960702537 A KR 19960702537A KR 100385495 B1 KR100385495 B1 KR 100385495B1
- Authority
- KR
- South Korea
- Prior art keywords
- instruction
- word
- address
- placing
- memory
- Prior art date
Links
- 238000012545 processing Methods 0.000 title claims description 8
- 230000015654 memory Effects 0.000 claims abstract description 45
- 230000008859 change Effects 0.000 claims description 19
- 238000000034 method Methods 0.000 claims description 8
- 238000012546 transfer Methods 0.000 claims description 5
- 239000013598 vector Substances 0.000 description 7
- 230000008901 benefit Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000006073 displacement reaction Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 230000000593 degrading effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000005034 decoration Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 210000004185 liver Anatomy 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/324—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address using program counter relative addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/321—Program or instruction counter, e.g. incrementing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3816—Instruction alignment, e.g. cache line crossing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
마이크로 제어기 또는 프로세서 아키텍처는 워드 정렬 다중바이트 페치들을 실행하지만 바이트 정렬된 명령들을 허용한다. 점프 타겟 어드레스들은 워드 정렬되어, 점프 명령의 워드 정렬 페치가 된다. 어셈블러 또는 컴파일러는 워드 경계들 상에 정렬된 브랜치 명령 타겟 어드레스들을 가진 코드를 명령 메모리에 적재한다. 인터럽트들로부터의 복귀들은 바이트 정렬된 완전한 복귀 어드레스로 프로그램 카운터를 적재된다.
Description
본 발명은 프로세서를 포함하는 처리 시스템에 관한 것이다. 상이한 프로세서들을 위한 명령 세트들은 임의의 명령의 각각의 데이타 항목(item) 또는 제 1 바이트의 허용 가능한 어드레스들을 규정한다. 공지된 프로세서들은 2가지 카테고리들로 나누어질 수 있다. 즉, 1) 어드레스가 단지 특정한 경계들, 즉 바이트, 워드(2 바이트들) 또는 2배 워드(doubleword)(4 바이트들)일 수 있는 완전 정렬(fully-aligned) 카테고리. 이러한 프로세서들은 그 정렬 크기의 배수로서의 (2진수) 명령 크기를 가지는 명령 세트를 구현한다. 2) 어드레스가 임의의 크기의 정렬에 한정되지 않는 비정렬 카테고리, 즉 통상 임의의 바이트 어드레스인(그러나, 이것으로 제한되는 것은 아님) 임의의(허용 가능한) 어드레스에서 시작할 수 있는 비정렬 카테고리.
프로세서들 또는 마이크로 제어기들(microcontrollers)의 성능 평가에 중요한 한가지 인자는 캐쉬(cache) 메모리, 판독 기입 메모리 및 판독 전용 메모리를 포함하는 메모리 시스템으로부터 코드가 판독되는 장식이다. 오늘날의 프로세서들 및 마이크로 제어기들의 내부 실행의 높은 속도 및 결과적인 증가된 명령 대역폭 요건들로 인해, 메모리들은 일반적으로 다중 바이트 버스들(또는, 데이타 경로들)을 통해 액세스된다. 고속 액세스를 처리하고 불필요한 게이트 지연들을 회피하기위한 가장 간단한 방식은 판독된 각각의 코드 또는 명령에 대해 고정된 정렬로 메모리를 액세스하는 것이다. 이것은 시스템 계층(system hierarchy)의 대부분(또는 모든) 레벨들에서 복잡한 포스트 페치(post fetch) 정렬 스킴을 회피한다. 이러한 방법은 고성능 또는 다중 바이트 지향 프로세서 구현들에서 보편적으로 받아들여진다. 이것은 위에서 설명된 완전 정렬 아키텍처들에 특히 잘 동작한다.
오늘날의 마이크로 제어기들에 중요한 다른 인자는 코드 밀도이다. 각각의 명령은 양을 정할 수 있는 정보를 가지고 있고, 모든 필요한 정보를 포함하기 위해 특정 크기를 필요로 한다. 특정 기술/아키텍처용의 각 명령의 인코딩을 최적화하는 데는 많은 방식들이 있다. 일반적으로, 이들에게는 매우 간단한 다음과 같은 규칙이 있다: 대역폭(동적 코드 크기) 및 코드 메모리 크기(정적 코드 크기) 요건들을 충족하도록 가장 빈번하게 사용되는 명령들은 가능한 짧아야 한다. 인코딩의 영향은 많은 인자들에 의해 좌우되지만, 비용이 드는 설계에 있어서, 이러한 규칙은 매우 양호하게 유지되며 프로그램 코드 밀도를 증가시키는 경향이 있다. 이러한 규칙을 따르면 가능하게는 비정렬된 어드레스들에 크기가 변하는 명령들을 나타낼 수 있다.
그러나, 비정렬 방식을 구현하는 이러한 프로세서들에 있어서, 비정렬 어드레스로의 브랜치 후의 코드 페치들은 여분 메모리 사이클들을 통상적으로 취한다(타겟 명령 길이가 정렬된 메모리 액세스 경계와 교차할 때). 이것은 실행 능력을 저하시키고 프로세서의 성능을 열화시킨다는 중요한 결점을 갖는다. 이러한 문제점에 대한 몇 가지 해결책들이 있는데, 그 대부분이 비교적 비용이 많이 드는 몇몇타입의 캐싱 스킴(caching scheme)을 구현한다. 코드 페치 및 명령 배열을 간단하게 하기 위한 가장 바람직한 방식은 완전 정렬된 명령 세트이다.
그러나, 적은 비용의 구동 프로세서 설계들에 대하여, 완전 정렬 방식에서 감소된 브랜치 패널티(penalty)는 코드 크기를 증가시키는 반면에 성능을 증가시킬 것이다.
필요한 것은 비정렬 아키텍처의 코드 팩킹 밀도(code packing density) 및 완전 정렬 아키텍처의 페치 속도와 단순화를 이용하는 최적 해결책이다.
발명의 요약
본 발명의 목적은 스케줄된 브랜치들(scheduled branches)에 따르는 고속 페치 및 높은 코드 팩킹 밀도를 제공하는 것이다.
본 발명의 다른 목적은 명령들이 바이트 경계들 상에 정렬되도록 하기 위한 것이다.
본 발명의 목적은 또한 워드의 크기가 특정 구현에서 판독되는 메모리 크기와 배열에 의해 규정되는 워드 경계들 상에, 브랜치 타겟들과 같은, 흐름 변화 타겟 명령들을 배열하기 위한 것이다.
본 발명의 또 다른 목적은 단일 또는 다중 바이트 명령 또는 코드 페치를 수행하는 프로세서를 제공하는 것이다.
본 발명의 부가적 목적은 소정의 오프셋 크기에 대한 브랜치 명령들에 관한 프로그램 카운터에 대해 보다 큰 브랜치 타겟 범위를 제공하는 것이다.
상술한 목적들은 처리 시스템에 의해 달성되는데, 이 처리 시스템은,
메모리와;
프로세서를 포함하며, 상기 프로세서는,
-한번에 한 워드씩 메모리로부터 명령 정보를 페칭하기 위한 페칭 수단과;
- 명령 정보로부터 얻어진 명령들을 실행하기 위한 실행 수단으로서, 상기 명령들 중 적어도 일부는 워드 길이의 배수들 사이의 중간 길이를 가지는, 상기 실행 수단과;
- 명령 정보를 메모리 내에 배치시키기 위한 명령 배치 수단을 포함하며,
상기 명령 배치 수단은 각각의 명령에 대해 그 명령이 흐름 변화 명령의 흐름 변화 타겟인지를 검출하며, 상기 명령 배치 수단은 만일 특정한 명령이 흐름 변화 타겟이 아니라면, 메모리 내에 코드 밀도를 최대화시키기 위해 각 특정한 명령을 배치시키고, 흐름 변화 타겟의 경우는 명령 배치 수단이 그 특정한 명령을 워드 경계에 배치시킨다.
처리 시스템은 예를 들어 마이크로제어기 아키텍처 및 컴파일러(complier)를 포함한다. 마이크로제어기는 비정렬된 다중 바이트 페치들을 수행하고, 워드 정렬 브랜치 어드레스들을 점프하여, 점프 명령(jump-to instruction)의 워드 정렬 페치를 허용하고, 워드 경계들 상에 정렬된 브랜치 명령 타겟 어드레스들을 가지는 명령 메모리로 코드를 적재한다.
본 발명에 따른 처리 시스템의 실시예는 흐름 변화 타겟에 대한 참조를 포함하는 흐름 변화 명령의 제어 하에 프로그램 카운터 레지스터의 내용을 변형시키기 위해 상기 프로그램 카운터 레지스터에 결합된 명령 어드레스 변형 유닛을 포함하고 상기 참조의 최하위 비트가 상이한 워드들 간을 구별한다. 따라서, 그 참조는 워드 내의 상이한 바이트들 간을 구별하기 위한 비트를 포함하지 않는다. 그러므로, 참조의 소정의 길이에 대하여, 보다 큰 브랜치 타겟 범위가 있다.
실질적으로 명백해질 이런 목적 및 다른 목적 및 이점들은 이것의 일부를 형성하는 첨부 도면들을 참조하여 하기에 보다 완전히 상술되고 청구된 바와 같은 구성 및 동작에 관한 상세한 설명에 있으며 여기서 동일한 숫자들은 전체에 걸쳐 동일한 부분을 나타낸다.
제 1도는 본 발명에 따른 하나의 마이크로 제어기 또는 프로세서의 구성 요소들을 도시한 도면.
제 2도 및 제 3도는 메모리 구성을 도시한 도면.
제 4도 및 제 5도는 스택들을 도시한 도면.
제 6도는 다중 바이트 페치들의 바이트 정렬을 도시한 도면.
제 7도는 페칭 동안 프로그램 카운터 변형을 도시한 도면.
양호한 실시예의 설명
본 발명은 브랜치들, 점프들, 절차 호출들에서 발생하는 것과 같은 프로그램 흐름에서 스케줄된 변화들을 위한 워드 크기 코드의 처리량을 최대화 한다. 이를 실행하기 위해, 본 발명의 프로세서 또는 마이크로제어기, 명령세트 및 어셈블러 또는 컴파일러는 워드(2 바이트) 경계 상의 브랜치 타겟들과 같은 모든 흐름 변화 엔트리 점들을 정렬하고, 바람직하게 다중 바이트들의 코드 페치들을 수행하는데,다중 워드 페치들이 가능하다 하더라도 바람직하게 2 바이트들 또는 워드의 코드 페치를 수행하지만 이에 제한되지는 않는다. 이것은 브랜치가 취해진 후 빠른 코드 페치들을 허용한다. 이러한 아키텍처는 명령들이 임의의 바이트로 정렬되도록 함으로써 코드 밀도를 최대화하고, 다중 바이트 페치들로 명령들을 페치시키며, 페치 유닛에서 포스트(post) 페치 정렬을 수행한다. 명령 크기는 길이에서 1 바이트부터 7 바이트들까지 변하고, 다중 바이트 페치의 크기 및 정렬에 한정되는 것은 아니고 또한 높은 코드 밀도를 허용한다. 명령들이 바이트 경계들에서 페치될 수 있지만, 브랜치 타겟들이 워드 경계 정렬되기 때문에, 브랜치 타겟 어드레스들에 대한 보다 큰 타겟 어드레스 범위는 동일한 수의 어드레스 비트들을 갖는 마이크로제어기에서 가능한데, 이는 타겟 어드레스가 바이트들 간을 구별하는 최하위 비트를 가질 필요가 없으며 대신 부가적인 최상위 비트를 가질 수 있기 때문이다. 또한, 마이크로제어기는 인터럽트 또는 예외가 발생할 때 스택 상에 전체(full) 복귀 어드레스를 저장함으로써 임의의 바이트 어드레스에서 예컨대 예외들 및 인터럽트로 인해 야기되는 프로그램 흐름의 비계획된 변화들을 지원한다. 복귀 명령은 스택으로부터 전체 어드레스를 팝(pop)하며 이러한 스케줄되지 않은 인터럽트들 및 예외들을 위해 바이트 어드레스로의 프로그램 브랜치를 허용한다. 물론, 기수(odd) 어드레스로의 복귀는 통상적으로 우수(even) 어드레스로의 복귀보다 느릴 것이다.
본 발명의 마이크로제어기 시스템(10)의 아키텍처가 제 1도에 도시되어 있다. 이 시스템(10)은 별개의 내부 명령 및 데이타 저장부를 갖는 단일 칩 마이크로제어기(12)를 포함한다. 마이크로제어기(12)는 외부 장치들(14 및 16)을 지원하고,20/24 비트 외부 어드레스 능력을 통해, 외부 명령 저장부(18)의 16 메가바이트 및 외부 데이타 저장부(20)의 16 메가바이트를 지원한다. 마이크로제어기(12)는 16 비트 외부 양방향 어드레스 및 데이타 버스(24)로 외부 메모리들(18 및 20)과 통신하는 버스 인터페이스 유닛(22)을 포함하는데, 어드레스들은 2 사이클들로 전송되고, 20/24 비트 어드레스의 일부분은 외부 래치(도시하지 않음)로 래치된다. 마이크로제어기(12)는 특정 기능 레지스터들(special function registers; SFR)(40)로서 어드레스할 수 있는 I/O 포트들(26-28)을 통해 외부 장치들(14 및 16)과 통신한다. 다른 특정 기능 레지스터들뿐만 아니라 포트들(26-28)은 버스 인터페이스 유닛(22)을 통해 내부 주변 버스(42) 상으로 어드레스할 수 있다. 온 칩 특정 기능 레지스터들(40) 중 일부는 비트 어드레스 가능하고, 온 칩 특정 기능 레지스터(40)들은 또한 내부 및 외부 장치들과 통신하는 인터럽션 제어 유닛(84)에 결합된 프로그램 상태 워드(PSW) 레지스터(44)를 포함한다. PSW 레지스터(44)는 또한 플래그 및 일반 상태 제어를 위해 ALU(72), 실행 유닛(70) 및 디코드 유닛(74)에 접속된다. 레지스터(40)는 또한 인터럽트 레지스터(46), 타이머 레지스터들(50) 및 시스템 구성 비트들을 포함하는 시스템 구성 레지스터(SCR)(54)를 포함한다. 프로그램 상태 워드 레지스터(44)는 일반 레지스터 동작들을 위해 주변 버스(42)를 통해 어드레스할 수 있고, 또한 다른 실행 관련 동작들을 위해 외부 버스(86)와의 접속을 통해 어드레스 할 수 있다. 버스 인터페이스 유닛(22)은 주변의 특정 기능 레지스터들(40)을 마이크로제어기 코어(60)와 분리시킨다. 코어(60)는 ALU(72) 및 다른 유닛들에 의해 명령들의 실행을 제어하는 마이크로코드화된 실행 유닛(70)을 포함한다. 디코드유닛(74)에 의해 디코딩된 명령들은 명령 메모리 공간의 일부분인 내부 EPROM(76)으로부터, 또는 페치 유닛(78)에 의한 외부 명령 메모리(18)로부터 페치된다. 레지스터 파일(82)의 범용 레지스터들뿐만 아니라, 데이타 메모리 공간의 일부분인 정적 RAM(80)은 또한 명령 및 데이타 저장을 위해 이용할 수 있다.
마이크로제어기(12)는 제 2도 및 제 3도에 도시된 바와 같은 메모리 구조를 포함하는데, 여기서 제 2도는 페이지들(pages)로의 구조를 도시한 것이고, 제 3도는 페이지의 구조를 보다 상세히 도시한 것이다. 상술한 바와 같이, 마이크로제어기(12)는 명령 메모리 및 데이타 메모리용의 별개의 어드레스 공간들을 갖는다. 프로그램 및 데이타 메모리의 논리 분리는 두 메모리로의 동시 액세스를 허용한다. 마이크로제어기(12)는 별개의 데이타 및 프로그램 메모리(24 비트 어드레스들을 갖는)의 16 메가바이트까지 지원한다. 데이타 메모리 공간(18)은 제 3도에 도시된 바와 같이 64 K 바이트 페이지들(120)로 분할된다. 또한 온 칩 RAM(레지스터 파일(82)) 내에서 어드레스 0으로 시작하고 어드레스 1F 16진법까지 진행하는 데이타 메모리 내에 맵핑되는 바이트 레지스터들(R0 내지 R7)(도 5 참조)의 4개의 뱅크들이 있다. 4개 뱅크들 중 하나의 뱅크는 PSW 레지스터(44) 내에서 2 비트들로 액티브 뱅크로서 선택된다. 선택된 뱅크는 범용 레지스터들로서 나타난다.
시스템(10) 내의 메모리는 바이트 단위들로 어드레스되며, 각 바이트는 8 비트들로 구성된다. 워드는 2개의 인접 바이트들로 구성되는 16 비트 값이다. 마이크로제어기(12) 내의 저장 순서는 "Little Endian"로서, 워드의 낮은 바이트는 낮은 어드레스에 저장되고, 높은 바이트는 다음의 높은 어드레스에 저장된다. 모든 16비트 워드 어드레스 가능한 위치들은 바이트들과 워드들로서 액세스될 수 있다. 외부 버스(24)는 칩 리셋 동안 선택된 8 또는 16 비트 모드로 구성될 수 있다. 선택된 동작 모드에 따라, 모든 16 비트 외부 액세스들은 엄격하게 워드들(16 비트 모드) 또는 연속 메모리 위치들로부터 바이트들(8 비트 모드)일 수 있다. 8 비트 모드의 외부 워드 페치는 2개의 별개의 바이트 액세스들이 된다(결과는 데이타가 온 칩인 경우 단일 워드 액세스와 동일하다).
상술한 바와 같이, 마이크로제어기(12)는 16 메가바이트들의 어드레스 가능한 공간을 가지는 프로그램 메모리(18)를 지원한다. 명령 세트는 점프들 및 호출들을 포함하는데, 이들 중 일부는 로컬 코드 공간상에서만 동작하고, 이들 중 일부는 전체 프로그램 메모리 공간에 액세스할 수 있고, 이들 중 일부는 레지스터 간접이다. 보다 상세하게 후술한 바와 같이, 마이크로 코드 프로그램 제어 하에 점프들, 호출들, 브랜치들, 트랩들 및 인터럽트들에 의해 참조되는 프로그램 메모리 타겟 어드레스들은 워드 정렬된다. 그러나, 서브루틴들 또는 인터럽트 핸들러(handler)들로부터의 복귀 어드레스는 기수 또는 우수 바이트 경계들 상에 있을 수 있다. 예를 들어, 브랜치 명령은 임의의 코드 어드레스에서 발생할 수 있지만, 단지 우수 어드레스로 브랜치할 수 있다. 브랜치 어드레스 정렬은 2가지 이점들을 제공한다: 1) 브랜치 범위들은 명령에 여분 비트를 제공하지 않아도 두배가 된다. 2) 브랜치 코드는 명령(워드)의 제 1의 2개 바이트들이 동시에 페치되기 때문에 워드 정렬되는 경우 고속으로 실행한다. 마이크로제어기(12)에 있어서, 제 4도 및 제 5도에 도시된 바와 같은 스택은 하이 어드레스에서 로우 어드레스로 하향 성장한다. 마이크로제어기(12)의 아키텍처는 LIFO(Last-in First-out; 후입 선출) 스택을 지원한다. 임의의 소정의 시간에, 스택 포인터(SP)는 스택으로 푸쉬된 최종 워드를 가리킨다. 새로운 데이타가 푸쉬될 때, 스택 포인터는 메모리에 기입되기 전에 감소된다. 데이터가 스택으로부터 팝될 때, 스택 포인터는 데이타가 메모리로부터 판독된 후 증가된다. 마이크로제어기(2)가 메모리 최상위 비트(MSB) 내에 데이타를 먼저 저장하기 때문에, 스택 포인터는 스택 상에 기입된 워드의 최하위 비트(LSB)를 항상 가리킨다. 이는 범용 포인터가 메모리로부터 데이터에 액세스하는 방식과 매치하므로, 스택 포인터는 범용 포인터 레지스터로 복사될 수 있고, 스택에 남아 있는 파라미터들로 액세스하는데 이용된다. 스택 동작들은 레지스터 파일(82)의 레지스터들 내에 위치한 사용자 스택 포인터(USP) 및 시스템 스택 포인터(SSP)인 2개 스택 포인터들에 의해 용이하게 된다. 16 비트 스택 포인터들은 푸쉬 다운 스택 상에 최상위 자료(datum)를 어드레싱하는 종래 스택의 상부(customary top-of-stack) 포인터들이다. 이것은 PUSH 및 POP 동작들, 서브 루틴 호출들, 복귀들 및 트랩/예외 인터럽트 동작들에 의해 암시적으로 참조된다. 스택은 항상 WORD로 정렬된다. 스택에 대한 임의의 PUSH(바이트/워드)는 스택 포인터를 2(SP=SP-2) 만큼 감소시키고, 임의의 POP(바이트/워드)는 스택 포인터를 2(SP=SP+2)만큼 증가시킨다. 그러므로, 스택 정렬은 모든 스택 동작들이 워드 경계들(우수 어드레스들) 상에 있도록 하여 정렬 이슈들(issues)을 제거하고, 다른 16 비트 또는 보다 큰 스택 동작들에 대해서 뿐만 아니라 인터럽트 대기(latency) 시간을 감소시킨다. SP가 PUSH 전에 먼저 감소되기 때문에, 워드 정렬된 스택은 FE로부터 하향 성장할 수 있다. 다중 임무 수행시스템들에 있어서, 하나의 스택 포인터는 감독 시스템으로 이용되고, 다른 스택 포인터는 현재의 액티브 태스크용으로 이용된다. 이것은 시스템 소프트웨어의 분리를 사용자 애플리케이션들로부터 제공함으로써 보호 메커니즘에 도움을 준다. 2개의 스택 포인터들은 또한 인터럽트들의 성능을 개선하는데 도움을 준다. 2개의 스택 포인터들은 동일한 레지스터 어드레스를 공유한다. 임의의 소정의 시간에 이용될 것이고, 레지스터 파일내에 "나타"날 것인 스택 포인터는 프로그램 상태 워드(PSW) 레지스터(44)내에서 시스템 모드 비트(SM)에 의해 결정된다. 사용자 모드에 있어서, 모든 푸쉬들 및 팝들 및 서브루틴 복귀 어드레스들은 애플리케이션 또는 사용자 스택을 이용한다. 그러나, 인터럽트들은 시스템 스택을 항상 이용한다. 상술한 바와 같이, 레지스터 파일 내에는 8개의 16 비트 레지스터들이 있다. 이러한 8개의 레지스터들 중 하나는 스택 포인터(R7)를 위해 보류되고, 다른 7개의 레지스터들은 메모리의 상이한 세그먼트들에 액세스하기 위한 범용 포인터 레지스터들로서 이용될 수 있다. SFR 공간 내의 "바이트" 레지스터는 간접 어드레싱 모드들을 위한 24 비트 어드레스에 대한 최상위 8 비트의 소스로서 DS 또는 ES 레지스터를 선택하는 7개의 범용 포인터 레지스터들(즉, SP가 아닌) 각각과 연관되는 비트들을 포함한다. 이러한 레지스터는 세그먼트 선택 레지스터로 불린다.
예외들 및 인터럽터들은 정상 명령 처리를 먼저 점유(pre-empt)하고, 프로그램 흐름에서 비계획된 또는 비예상된/스케줄되지 않은 변화들인 이벤트들이다. 각각의 인터럽트 또는 예외는 연관된 핸들러 루틴을 가리키는 할당된 벡터를 갖고 있다. 예외 및 인터럽트 처리는 핸들러 루틴에 대한 제어를 전송하는데 필요한 모든동작들을 포함하지만 핸들러 루틴 그 자체의 실행은 포함하지 않는다. 예외/인터럽터 벡터는 예외를 처리하는 루틴의 어드레스를 포함한다. 예외/인터럽트 벡터들은 코드 메모리 페이지 0의 제 1의 256 바이트들 내에 위치하는 벡터 테이블로 불리는 데이타 구조에 포함된다. 모든 벡터들은 i) 워드 경계 상에 위치한 절차 엔트리 포인트를 가지는 예외 핸들러의 어드레스, 및 ii) 핸들러에 대한 초기 PSW 내용들인 2 워드들로 구성한다. RESET가 아닌 모든 예외들 및 인터럽트들은 현재 프로그램 카운터(PC) 및 PSW 값으로 하여금 스택 상에 저장되게 하고, 그 우선 순위(priority) 레벨에 기초한 현재 명령의 완료 후에 서비스된다. 예외 또는 인터럽트 동안, 전체 24 비트 복귀 어드레스 및 현재 PSW 워드가 스택 상으로 푸쉬된다. 스택된 PC(하이 바이트) : PC(로우 워드) 값은 현재 명령 스트림 내의 다음 명령의 24 비트 어드레스이다. 그 다음, 프로그램 카운터(PC)는 벡터 테이블로부터 대응하는 핸들러 루틴의 어드레스로 적재되고, 그 다음 PSW는 대응하는 벡터의 상부 워드 내에 저장된 새로운 값으로 적재된다. 예외 또는 인터럽트 핸들러의 실행은 인터럽트(RETI) 명령으로부터의 복귀가 더 높은 우선 순위의 인터럽트 또는 다른 예외에 의해 조우(encount)될 때까지 진행한다. RETI 명령은 각각 핸들러 루틴을 종료한다. 마이크로 코드 프로그램 제어 하에, 이것은 스택으로부터 전체 24 비트 복귀 어드레스를 PC 내에 팝하고, 스택으로부터 원래의(original) PSW를 재적재하며, 프로세서로 하여금 인터럽트된 루틴의 실행을 재개하게 한다.
코드 또는 명령 어드레스들이 마이크로 제어기(12)에서 명령들을 실행하도록 형성될 수 있는 몇 가지 방식들이 있다. 프로그램 흐름에서 스케줄되거나 또는 계획된 변화들은 간단한 관련 브랜치들, 긴 관련 브랜치들, 24 비트 점프들 및 호출들, 16 비트 점프들 및 호출들, 및 복귀들로 행해진다. 간단한 관련 브랜치들은 새로운 코드 어드레스를 발생시키기 위해 프로그램 카운터(PC)에 추가된 8 비트 부호 변위를 이용한다. 계산은 1 비트만큼 남겨진 8 비트 관련 변위(이것은 워드 어드레스에 대한 변위이기 때문)를 리프트시키고, 24 비트들에 그 결과를 부호 확장시켜, 프로그램 카운터 내용들에 부가하고, 그 결과의 최하위 비트를 0으로 되게 함으로써 달성된다. 긴 관련 비조건 브랜치(JMP) 및 16 비트 관련 변위들을 가지는 호출은 동일한 시퀀스를 이용한다. 원거리(far) 점프들 및 호출들은 명령 내의 24 비트 절대 어드레스를 포함하고, 전체 프로그램 카운터 내용들을 새로운 값과 간단히 대체한다. 복귀 명령들은 SCR 레지스터 내의 페이지 0 모드 비트의 복귀 및 세팅 타입에 따라서, 길이의 16 또는 24 비트들일 수 있는 스택으로부터 어드레스를 얻는다. 24 비트 어드레스는 전체 프로그램 카운터 값을 간단히 대체할 것이다. 16 비트 복귀 어드레스는 페이지 0 모드의 PC의 하부 16 비트들만을 대체하는데, PC의 상부 8 비트들은 0으로 가정된다. 코드 어드레스들은 24 비트 코드 어드레스를 형성하기 위해 코드 세그먼트(CS) 레지스터 또는 프로그램 카운터(PC)의 상부 8 비트들로 첨부된 포인터 레지스터로부터 16 비트값을 이용함으로써 발생될 수 있다. 상부 8 비트 어드레스에 대한 소스는 이용되는 포인터 레지스터에 대응하는 SSEL 레지스터 내의 세그먼트 선택 비트(0=PC 및 1=CS)의 세팅에 의해 결정된다. CS는 8 비트 SFR임에 유념해야 한다.
페치된 명령들을 워드 또는 바이트 경계 상에 정렬되도록 하는 페치 동작은제 6도에 도시된 바와 같이, 페치 장치(78) 및 디코드 장치(74) 내의 종래의 비정렬 코드 페치 및 종래의 정렬 회로들의 조합에 의해 수행된다. 종래의 프리페치 큐(200)는 코드 또는 명령 메모리(76 또는 18)로부터 워드들을 수신하여 워드들을 종래의 정렬 멀티플렉서(202)에 제공한다. 멀터플렉서(202)는 디코드 장치(74)의 종래의 디코드 논리(204)에 제공하기에 적절한 바이트(들)를 선택한다. 디코드 논리(204)는 명령을 디코드하고, 디코드된 명령을 종래의 스테이징(staging) 레지스터들(206)을 통해 실행 장치(70)와 같은 코어의 다른 장치들로 제공한다. 이러한 방식으로, 명령들은 바이트 정렬될 수 있고, 그들의 적절한 순서로 스테이지될 수 있다.
비계획된 프로그램 흐름 변화 동안 워드 정렬된 타겟으로의 흐름 전달 및 비계획 프로그램 흐름 변화로부터 바이트 정렬 복귀 타겟으로의 복귀를 용이하게 하기 위해, 프로그램 카운터 레지스터(220)의 프로그램 카운터 값은 제7도에 도시된 바와 같은 회로를 이용하여 조정된다. 프로그램 흐름이 순차적인 정상 순차 명령 실행 동작들 동안, 각각의 명령이 실행된 후, 프로그램 카운터 레지스터(220)의 최상위 비트(MSB) 내용은 가산기(222)에 직접 제공된다. 최하위 비트(LSB)는 스테이징 레지스터(206)에 의해 나타나는 브랜치가 없는 한 AND 게이트(223)를 통해 가산기(222)에 제공된다. 가산기(222)는 멀티플렉서(224)를 통해 디코더 스테이징 레지스터들(206)에 의해 제공된 명령 길이를 프로그램 카운터 값에 부가하고, 갱신된 PC는 멀티플렉서(206)를 통해 프로그램 카운터 레지스터(220)내에 다시 저장된다. 브랜치 명령 점프 또는 호출이 스테이징 레지스터들(206)에 의해 제공될 때와 같이스케줄된 흐름 변화가 발생할 때, AND 게이트(223)는 최하위 비트가 가산기(222)에 제공되는 것을 방해한다. 명령 길이를 제공하는 대신에, 멀티플렉서(224)는 최하위 비트의 강제된 "0" 및 브랜치 오프셋의 최하위 비트(워드 어드레스)를 가산기(222)에 제공한다. 가산기(222)는 LSB 증가된 오프셋을 프로그램 카운터 값에 가산하고, 이러한 값은 프로그램 카운터 레지스터(220) 내에 저장된다. 흐름에 따른 예상치 못한 변화가 예외 또는 인터럽터 시에서와 같이 발생할 때, 인터럽트로부터의 복귀와 같은 원래의 흐름으로의 복귀시, 멀티플렉서(226)는 예를 들어 인터럽트의 경우에 스택으로부터 얻어진 내부 버스(86)로부터의 전체 복귀 어드레스로 프로그램 카운터 레지스터(220)를 적재한다.
상술한 바와 같이, 본 발명은 전송 타겟 어드레스들이 몇몇 경우들에 워드 경계 상에서 오는 것을 요구한다. 전송 타겟이 워드 정렬된 상황은 워드 경계 상에 정렬된 명령이 다음과 같은 기수 바이트들을 가질 때 발생한다.
이러한 예에 있어서, 동일하지 않는 브랜치 명령(branch not equal instruction; BNE)은 2 바이트들을 점유하고, 이동 명령(MOV.B)은 브랜치 타겟("L1")의 다음 명령을 기수 바이트 어드레스로 밀어 넣는 3 바이트들이다. 어셈블리 또는 컴파일러는 이러한 문제점을 해결하고, 워드 정렬된 점프 타겟 어드레스들을 가진 목적(object) 코드를 다수의 상이한 방식들로 생성하거나 또는 발생시킬 수 있다. 어셈블러 또는 컴파일러에 관한 한가지 방식에 있어서, 기호 테이블이 구성되고, 점프 타겟에 기호명(symbolic name) 테이블 내의 기호명이 할당될 때, 기호 테이블은 최종 어드레스가 워드 경계상에 할당되어야 하는지의 여부를 나타내는 필드 (field)를 포함하도록 할당된다. 최하위 비트가 2진수 0이 아니거나 위치 포인터가 기수 값을 포함하는 경우인, 카운터 또는 위치 포인터의 값이 워드 경계에 있지 않는 경우에, 점프 타겟이 조우될 때, 단일 NOP 명령이 그 위치에 삽입될 수 있고, 위치 포인터가 다음 바이트로 증가된다. 이것은 다음 명령 및 기호가 워드 정렬되게 하고, 그 위치의 값은 점프 타겟의 기호명에 할당되며, 그 결과 점프 타겟에 할당된 어드레스는 다음과 같은 다음 워드 정렬 위치 카운터 어드레스로 된다.
이러한 해는 실행 장치가 처리해야 하는 소비된 명령(NOP)을 발생시킨다. 이것은 몇 개의 클럭 사이클들을 소비하지만, 여분 NOP가 루프 파라메터 초기화 시에 삽입되고, 정렬된 라벨이 다수 배로 브랜치될 수 있는 루프 엔트리인 경우에서와 같이, 몇몇 경우들에 수용될 수 있다. 다른 해는 컴파일러가 연속 코드를 주사하고, 바이트 경계들 상에 있는 점프 타겟을 식별하고, 타겟 명령 전의 임의의 명령이 타겟에 대한 워드 정렬이 되는 명령으로 확장될 수 있는지를 결정한다. 이러한 경우, 명령이 확장되고, 그렇지 않는 경우, NOP가 삽입될 수 있다. 워드 정렬을 하게 하는 확장은 다음과 같다.
이러한 예에 있어서, 모든 0의 여분의 바이트는 관련 오프셋에 추가된다. 워드 경계들에서 점프 타겟들을 갖는 코드를 발생시키기 위한 컴파일러 또는 어셈블리를 이용함으로써 비정렬된 코드 프로세서 내의 프로그램 흐름의 계획된 변화에 대한 패널티는 최소화되고, 전체 프로세서 처리량은 증가한다.
본 발명의 많은 특징들 및 이점들은 상세한 명세서에서 명백해지며 따라서 첨부된 청구항들은 본 발명의 진실한 정신 및 범위 내에 포함되는 본 발명의 이러한 모든 특징들 및 이점들을 포함하도록 의도된다. 게다가, 수많은 수정예들 및 변화들은 당업자에게 쉽게 발생할 것이므로, 예시되고 기술된 정확한 구조 및 동작에 본 발명을 한정시키는 것은 바람직하지 않다. 예를 들어, 본 발명은 정렬이 4개의 바이트 경계 상에서 바람직할 경우 사용될 수 있다. 따라서, 모든 적절한 수정예들 및 등가물들은 본 발명의 범위내에 포함되도록 재분류될 수 있다.
Claims (5)
- 처리 시스템에 있어서,메모리(18, 76)와;프로세서(12)를 포함하며, 상기 프로세서는,- 한번에 한 워드씩 메모리(18, 76)로부터 명령 정보를 페칭하기 위한 페칭 수단(78)과;- 명령 정보로부터 얻어진 명령들을 실행하기 위한 실행 수단(70)으로서, 상기 명령들 중 적어도 일부는 워드 길이의 배수들 사이의 중간 길이를 가지는, 상기 실행 수단(70)과;- 명령 정보를 메모리 내에 배치시키기 위한 명령 배치 수단을 포함하며,상기 명령 배치 수단은 각각의 명령에 대해 그 명령이 흐름 변화 명령의 흐름 변화 타겟(flow change target)인지를 검출하며, 상기 명령 배치 수단은 만일 특정한 명령이 흐름 변화 타겟이 아니라면, 메모리 내에 코드 밀도를 최대화시키기 위해 각 특정한 명령을 배치시키고, 흐름 변화 타겟의 경우는 명령 배치 수단이 특정한 명령을 워드 경계에 배치시키는, 처리 시스템.
- 제 1항에 있어서,워드 경계에 배치되지 않은 명령으로 비계획된 프로그램 흐름 변화들에서 복귀시키기 위한 전송 수단(226)을 더 포함하는, 처리 시스템.
- 제 1항에 있어서,상기 명령 배치 수단은 워드 경계들 상에 흐름 변화 타겟들인 명령을 배치시키기 위해 명령 확장 및 코드 조작들을 수행하는 컴파일러를 포함하는, 처리 시스템.
- 제 1항에 있어서,상기 페칭 수단(78)은,바이트 정렬된 명령들을 수신하는 명령 큐(200)와;상기 큐에 결합되고, 실행을 위한 명령들을 정렬하는 정렬 멀티플렉서(202)를 포함하는, 처리 시스템.
- 제 1항에 있어서,상기 실행 수단은(70),페치된 명령들의 어드레스들을 지정하는 프로그램 카운터 레지스터(220)와;상기 프로그램 카운터 레지스터(220)에 결합되며, 이동 변화 타겟에 대한 참조를 포함하는 흐름 변화 명령의 제어 하에 프로그램 카운터 레지스터의 내용을 변형시키기 위한 명령 어드레스 변형 장치(222, 223, 224, 226)를 포함하고 상기 참조의 최하위 비트는 상이한 워드들 사이를 구별하는, 처리 시스템.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US308,337 | 1989-02-09 | ||
US08/308,337 US5590358A (en) | 1994-09-16 | 1994-09-16 | Processor with word-aligned branch target in a byte-oriented instruction set |
Publications (2)
Publication Number | Publication Date |
---|---|
KR960706124A KR960706124A (ko) | 1996-11-08 |
KR100385495B1 true KR100385495B1 (ko) | 2003-08-14 |
Family
ID=23193583
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019960702537A KR100385495B1 (ko) | 1994-09-16 | 1995-08-21 | 워드정렬브랜치타겟을가지는처리시스템 |
Country Status (6)
Country | Link |
---|---|
US (1) | US5590358A (ko) |
EP (1) | EP0729605B1 (ko) |
JP (1) | JPH09505427A (ko) |
KR (1) | KR100385495B1 (ko) |
DE (1) | DE69524379T2 (ko) |
WO (1) | WO1996008762A2 (ko) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5706483A (en) * | 1994-12-13 | 1998-01-06 | Microsoft Corporation | Run-time code compiler for data block transfer |
US5966514A (en) | 1995-05-31 | 1999-10-12 | Matsushita Electric Industrial Co., Ltd. | Microprocessor for supporting reduction of program codes in size |
US5687339A (en) * | 1995-09-14 | 1997-11-11 | Elan Microelectronics Corp. | Pre-reading and pre-decoding of instructions of a microprocessor within single cycle |
US6338106B1 (en) | 1996-12-20 | 2002-01-08 | Pact Gmbh | I/O and memory bus system for DFPS and units with two or multi-dimensional programmable cell architectures |
US5889997A (en) * | 1997-05-30 | 1999-03-30 | Hewlett-Packard Company | Assembler system and method for a geometry accelerator |
CA2211515C (en) * | 1997-07-25 | 2001-12-11 | Kevin Alexander Stoodley | System and method of local data alignment for stack memory |
EP0953898A3 (en) | 1998-04-28 | 2003-03-26 | Matsushita Electric Industrial Co., Ltd. | A processor for executing Instructions from memory according to a program counter, and a compiler, an assembler, a linker and a debugger for such a processor |
EP0992894A1 (en) * | 1998-10-06 | 2000-04-12 | Texas Instruments Inc. | Apparatus and method for loop execution |
US6721875B1 (en) * | 2000-02-22 | 2004-04-13 | Hewlett-Packard Development Company, L.P. | Method and apparatus for implementing a single-syllable IP-relative branch instruction and a long IP-relative branch instruction in a processor which fetches instructions in bundle form |
WO2002061573A1 (en) * | 2001-01-30 | 2002-08-08 | Koninklijke Philips Electronics N.V. | Synchronization of a main processor with an instruction patch coprocessor |
US6993619B2 (en) * | 2003-03-28 | 2006-01-31 | International Business Machines Corporation | Single request data transfer regardless of size and alignment |
US8006071B2 (en) * | 2004-03-31 | 2011-08-23 | Altera Corporation | Processors operable to allow flexible instruction alignment |
US20060277396A1 (en) * | 2005-06-06 | 2006-12-07 | Renno Erik K | Memory operations in microprocessors with multiple execution modes and register files |
US20080162879A1 (en) * | 2006-12-29 | 2008-07-03 | Hong Jiang | Methods and apparatuses for aligning and/or executing instructions |
US20080162522A1 (en) * | 2006-12-29 | 2008-07-03 | Guei-Yuan Lueh | Methods and apparatuses for compaction and/or decompaction |
US8966228B2 (en) * | 2009-03-20 | 2015-02-24 | Arm Limited | Instruction fetching following changes in program flow |
JP4862100B1 (ja) * | 2011-03-25 | 2012-01-25 | 好一 北岸 | 中央演算処理装置及びマイクロコンピュータ |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5163139A (en) * | 1990-08-29 | 1992-11-10 | Hitachi America, Ltd. | Instruction preprocessor for conditionally combining short memory instructions into virtual long instructions |
US5187782A (en) * | 1986-02-26 | 1993-02-16 | Hitachi, Ltd. | Data processing system |
JPH05274143A (ja) * | 1992-03-30 | 1993-10-22 | Toshiba Corp | 複合条件処理方式 |
JPH0667877A (ja) * | 1992-08-19 | 1994-03-11 | Kofu Nippon Denki Kk | 命令フェッチ回路 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4338663A (en) * | 1978-10-25 | 1982-07-06 | Digital Equipment Corporation | Calling instructions for a data processing system |
WO1985000453A1 (en) * | 1983-07-11 | 1985-01-31 | Prime Computer, Inc. | Data processing system |
US4791557A (en) * | 1985-07-31 | 1988-12-13 | Wang Laboratories, Inc. | Apparatus and method for monitoring and controlling the prefetching of instructions by an information processing system |
US5051885A (en) * | 1988-10-07 | 1991-09-24 | Hewlett-Packard Company | Data processing system for concurrent dispatch of instructions to multiple functional units |
WO1990008355A1 (en) * | 1989-01-17 | 1990-07-26 | Fujitsu Limited | Microprocessor |
KR940000968B1 (ko) * | 1989-08-28 | 1994-02-07 | 니뽄 덴끼 가부시끼가이샤 | 마이크로프로세서 |
JP2560889B2 (ja) * | 1990-05-22 | 1996-12-04 | 日本電気株式会社 | マイクロプロセッサ |
US5335332A (en) * | 1991-12-24 | 1994-08-02 | International Business Machines Corporation | Method and system for stack memory alignment utilizing recursion |
-
1994
- 1994-09-16 US US08/308,337 patent/US5590358A/en not_active Expired - Lifetime
-
1995
- 1995-08-21 DE DE69524379T patent/DE69524379T2/de not_active Expired - Fee Related
- 1995-08-21 JP JP8510021A patent/JPH09505427A/ja active Pending
- 1995-08-21 EP EP95927064A patent/EP0729605B1/en not_active Expired - Lifetime
- 1995-08-21 WO PCT/IB1995/000667 patent/WO1996008762A2/en active IP Right Grant
- 1995-08-21 KR KR1019960702537A patent/KR100385495B1/ko not_active IP Right Cessation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5187782A (en) * | 1986-02-26 | 1993-02-16 | Hitachi, Ltd. | Data processing system |
US5163139A (en) * | 1990-08-29 | 1992-11-10 | Hitachi America, Ltd. | Instruction preprocessor for conditionally combining short memory instructions into virtual long instructions |
JPH05274143A (ja) * | 1992-03-30 | 1993-10-22 | Toshiba Corp | 複合条件処理方式 |
JPH0667877A (ja) * | 1992-08-19 | 1994-03-11 | Kofu Nippon Denki Kk | 命令フェッチ回路 |
Also Published As
Publication number | Publication date |
---|---|
WO1996008762A2 (en) | 1996-03-21 |
DE69524379D1 (de) | 2002-01-17 |
WO1996008762A3 (en) | 1996-05-30 |
KR960706124A (ko) | 1996-11-08 |
US5590358A (en) | 1996-12-31 |
DE69524379T2 (de) | 2002-10-17 |
EP0729605A1 (en) | 1996-09-04 |
EP0729605B1 (en) | 2001-12-05 |
JPH09505427A (ja) | 1997-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100385495B1 (ko) | 워드정렬브랜치타겟을가지는처리시스템 | |
EP0071028B1 (en) | Instructionshandling unit in a data processing system with instruction substitution and method of operation | |
EP0415461B1 (en) | Central processing unit supporting variable length instructions | |
US5142631A (en) | System for queuing individual read or write mask and generating respective composite mask for controlling access to general purpose register | |
US5781750A (en) | Dual-instruction-set architecture CPU with hidden software emulation mode | |
KR100218572B1 (ko) | 고성능 프로세서의 번역버퍼에 대해 세분성 힌트를 이용하는 프로세서 동작 방법 및 장치 | |
US5717946A (en) | Data processor | |
US6560692B1 (en) | Data processing circuit, microcomputer, and electronic equipment | |
US20040177211A1 (en) | Microcontroller instruction set | |
EP0465248B1 (en) | Pseudo-linear bank switching memory expansion | |
US7546442B1 (en) | Fixed length memory to memory arithmetic and architecture for direct memory access using fixed length instructions | |
KR100682635B1 (ko) | 동일한 논리 공간을 점유하는 다중 레지스터 파일을 포함하는 마이크로프로세서 | |
US6978358B2 (en) | Executing stack-based instructions within a data processing apparatus arranged to apply operations to data items stored in registers | |
GB2024475A (en) | Memory access controller | |
US4812971A (en) | Central processing unit for a digital computer | |
US4893235A (en) | Central processing unit for a digital computer | |
EP0206653A2 (en) | Method and means for loading and storing data in a reduced instruction set computer | |
US6012128A (en) | Microcontroller having a page address mode | |
CA1193738A (en) | Pre-execution next address calculating mechanism | |
EP0101718B1 (en) | Computer with automatic mapping of memory contents into machine registers | |
US5649229A (en) | Pipeline data processor with arithmetic/logic unit capable of performing different kinds of calculations in a pipeline stage | |
WO1996008767A2 (en) | Microcontroller system with a multiple-register stacking instruction | |
JP3147884B2 (ja) | 記憶装置及び情報処理装置 | |
CA1250666A (en) | Central processing unit for a digital computer | |
Martin et al. | A RISC architecture with uncompromised digital signal processing and microcontroller operation |
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 | ||
LAPS | Lapse due to unpaid annual fee |