KR101005633B1 - 일정한 개수의 가변 길이 명령을 가진 명령 캐시 - Google Patents

일정한 개수의 가변 길이 명령을 가진 명령 캐시 Download PDF

Info

Publication number
KR101005633B1
KR101005633B1 KR1020087004751A KR20087004751A KR101005633B1 KR 101005633 B1 KR101005633 B1 KR 101005633B1 KR 1020087004751 A KR1020087004751 A KR 1020087004751A KR 20087004751 A KR20087004751 A KR 20087004751A KR 101005633 B1 KR101005633 B1 KR 101005633B1
Authority
KR
South Korea
Prior art keywords
instructions
instruction
cache
cache line
length
Prior art date
Application number
KR1020087004751A
Other languages
English (en)
Other versions
KR20080031981A (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 KR20080031981A publication Critical patent/KR20080031981A/ko
Application granted granted Critical
Publication of KR101005633B1 publication Critical patent/KR101005633B1/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • 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/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

일정한 개수의 가변 길이 명령이 명령 캐시의 각 라인에 저장된다. 가변 길이 명령들은 미리 결정된 경계를 따라 정렬된다. 라인에서 각 명령의 길이 및 이에 따라 명령들이 차지하는 메모리의 스팬(span)은 알려지지 않기 때문에, 다음 이어지는 명령의 어드레스가 계산되어 캐시 라인에 저장된다. 캐시에 명령을 배치하기 전에 프리디코더에서 명령 경계의 확인, 명령 정렬, 및 다음 패치 어드레스 계산이 수행된다.

Description

일정한 개수의 가변 길이 명령을 가진 명령 캐시{INSTRUCTION CACHE HAVING FIXED NUMBER OF VARIABLE LENGTH INSTRUCTIONS}
본 발명은 일반적으로 프로세서 분야에 관한 것으로, 특히 일정한 개수의 가변 길이 명령을 저장하는 명령 캐시를 갖는 프로세서에 관한 것이다.
마이크로프로세서들은 휴대형 전자 기기들을 포함하는 다양한 애플리케이션에서 연산 작업을 수행한다. 많은 경우, 휴대형 전자 기기 및 다른 애플리케이션들에 추가 기능 및 특징이 구현되게 할 수 있도록 프로세서 성능의 최대화가 주요 설계 목표이다. 추가로, 전력 소비는 한정된 배터리 용량을 갖는 휴대형 전자 기기들에 특히 관여한다. 그러므로 성능을 높이고 전력 소비를 줄이는 프로세서 설계가 바람직하다.
대부분의 최신 프로세서는 하나 이상의 명령 실행 파이프라인을 사용하며, 전체 프로세서 성능을 개선하기 위해 많은 다단계 순차 명령들의 실행이 오버랩된다. 대부분의 프로그램의 공간 및 시간적 지역성에 편승하여, 최근에 실행된 명령들은 실행 파이프라인에 의한 액세스 준비를 위해 캐시- 고속인 통상의 온칩(on-chip) 메모리 -에 저장된다.
많은 프로세서 명령 세트 구조(ISA)는 가변 길이 명령들을 포함한다. 즉, 메모리로부터 판독되는 명령 연산 코드들은 모두 동일한 양의 공간을 차지하지는 않는다. 이는 산술 또는 논리 명령들을 가진 피연산자들의 포함, 매우 긴 명령어(VLIW)로의 다수의 연산 병합, 또는 다른 구조적 특징들에 기인할 수 있다. 가변 길이 명령에 대한 한 가지 단점은 명령 캐시로부터의 명령 패치시 프로세서가 각 명령의 경계를 확인해야 하며, 연산 작업은 전력을 소모하고 성능을 감소시킨다는 점이다.
가변 길이 명령에 직면하여 명령 캐시 액세스의 개선에 관해 공지된 한 가지 접근은 이들 명령을 캐시에 저장하기 전에 명령을 "프리디코딩(pre-decode)"하고, 추가로 명령들과 함께 캐시 라인에 어떤 명령 경계 정보를 저장하는 것이다. 이는 디코딩 작업에 배치되는 명령 경계들을 확인하는 추가 연산 부담을 감소시키지만 제거하지는 않는다.
또한, 명령들을 이들이 메모리로부터 판독되는 동일한 콤팩트 형태의 캐시에 패킹함으로써, 명령들이 이따금 오정렬되어 명령의 일부가 하나의 캐시 라인 끝에 저장되고 나머지가 이어지는 캐시 라인의 시작에 저장된다. 이 명령의 패치는 2회의 캐시 액세스를 필요로 하며, 명령이 실행될 때마다 2회의 액세스가 요구되기 때문에 특히 성능을 더 떨어뜨리고 전력 소비를 증가시킨다.
도 1은 가변 길이 명령(I1-I9)을 저장하는 종래 기술의 명령 캐시에 대한 두 라인(100, 140)의 대표도를 나타낸다. 이 대표적인 예에서, 각 캐시 라인은 16 바이트를 포함하고, 32 비트 워드 크기로 가정된다. 대부분의 명령은 1 워드 폭 또는 4 바이트이다. 어떤 명령들은 2 바이트를 포함하는, 1/2 워드 폭이다. 제 1 캐시 라인(100) 및 관련 태그 필드(120)는 명령(I1~I4) 및 명령(I5)의 1/2을 포함한다. 관련 태그 필드(160)를 가진 제 2 캐시 라인(140)은 명령(I5)의 두 번째 1/2과 명령(I6~I9)을 포함한다. 명령 길이 및 그 어드레스는 다음 표로 요약된다:
Figure 112010011784792-pct00001
표 1: 종래 기술의 캐시의 가변 길이 명령들
캐시 라인(100, 140)으로부터 명령을 읽기 위해, 프로세서는 - 전력 소비 및 지연을 감수하여 - 명령 경계를 결정하기 위한 추가 계산 노력을 들여야 한다. 이 작업은 명령을 프리디코딩하고 캐시 라인(100, 140)에 또는 캐시 라인(100, 140)과 관련하여 경계 정보를 저장함으로써 지원될 수 있지만, 추가 연산이 없어지지 않는다. 또한, 명령(I5)의 패치는 2회의 캐시 액세스를 필요로 할 것이다. 이러한 캐시로부터 오정렬된 명령을 패치하기 위한 이중 액세스는 추가 전력 소비 및 프로세 서 지연을 일으킨다.
일정한 개수의 가변 길이 명령이 명령 캐시의 각 라인에 저장된다. 가변 길이 명령들은 미리 결정된 경계를 따라 정렬된다. 라인에서 각 명령의 길이 및 이에 따라 명령들이 차지하는 메모리의 스팬(span)은 알려지지 않기 때문에, 다음 이어지는 명령의 어드레스가 계산되어 캐시 라인에 저장된다. 캐시에 명령을 배치하기 전에 프리디코더(predecoder)에서 명령 경계의 확인, 명령 정렬, 및 다음 패치 어드레스 계산이 수행된다.
일 실시예에서, 가변 명령 길이를 갖는 프로세스에서의 캐시 관리 방법은 캐시 라인마다 일정한 개수의 명령을 저장하는 것을 포함한다.
다른 실시예에서, 프로세서는 가변 길이의 명령을 실행하도록 동작하는 명령 실행 파이프라인 및 캐시 라인마다 일정한 개수의 가변 길이 명령을 저장하도록 동작하는 명령 캐시를 포함한다. 프로세서는 추가로 캐시 라인에 명령을 기록하기 전에 미리 결정된 경계를 따라 가변 길이 명령을 정렬하도록 동작하는 프리디코더를 포함한다.
도 1은 가변 길이 명령들을 저장하는 종래 기술의 명령 캐시 라인의 도면이다.
도 2는 프로세서의 기능 블록도이다.
도 3은 미리 결정된 경계를 따라 정렬된 일정한 개수의 가변 길이 명령을 저 장하는 명령 캐시의 도면이다.
도 2는 파이프라인형 구조 및 계층적 메모리 구조를 모두 사용하는 대표적인 프로세서(10)의 기능 블록도를 나타낸다. 프로세서(10)는 제어 로직(14)에 따라 명령 실행 파이프라인(12)의 명령들을 실행한다. 파이프라인은 파이프라인 스테이지에 구조화된 각종 레지스터 또는 래치(16), 및 하나 이상의 산술 논리 연산 유닛(ALU)(18)을 포함한다. 범용 레지스터(GPR) 파일(20)은 메모리 계층 구조의 상부를 포함하는 레지스터들을 제공한다.
파이프라인은 ITLB(Instruction-side Translation Lookaside Buffer)(24)에 의해 관리되는 메모리 어드레싱 및 허가에 의해 명령 캐시(I-캐시)(22)로부터 명령을 패치한다. 프리디코더(21)는 메모리로부터 패치된 명령들을 I-캐시(22)에 저장하기 전에 검사한다. 후술하는 바와 같이, 프리디코더(21)는 명령 경계를 확인하고 명령을 정렬하여 다음 패치 어드레스를 계산하고, 다음 패치 어드레스는 명령에 의해 I-캐시(22)에 저장된다.
메인 TLB(Translation lookaside Buffer)(28)에 의해 관리되는 메모리 어드레싱 및 허가에 의해 데이터 캐시(26)로부터 데이터가 액세스된다. 각종 실시예에서, ITLB(24)는 TLB(28) 일부의 사본을 포함할 수 있다. 대안으로, ITLB(24) 및 TLB(28)는 통합될 수도 있다. 마찬가지로, 프로세서(10)의 각종 실시예에서, I-캐시(22) 및 D-캐시(26)는 통합 또는 단일화될 수도 있다. I-캐시(22) 및/또는 D-캐시(26)의 누락은 메모리 인터페이스(30)의 제어 하에 메인(오프칩) 메모리(32)에 대한 액세스를 일으킨다.
프로세서(10)는 입력/출력(I/O) 인터페이스(34)를 포함하여, 각종 주변 장치(26)에 대한 액세스를 제어할 수 있다. 당업자들은 프로세서(10)의 다양한 변형이 가능한 것으로 인식할 것이다. 예를 들어, 프로세서(10)는 I 및 D 캐시(22, 26) 중 하나 또는 둘 다에 대한 제 2 레벨(L2) 캐시를 포함할 수 있다. 또한, 프로세서(10)에 나타낸 기능 블록 중 하나 이상이 특정 실시예에서 생략될 수도 있다.
본원에 개시된 하나 이상의 실시예에 따르면, 프로세서(10)는 일정한 개수의 가변 길이 명령을 각 캐시 라인에 저장한다. 명령들은 바람직하게는 예를 들어 워드 경계와 같이 미리 결정된 경계를 따라 정렬된다. 이는 명령 경계 계산의 필요성으로부터 디코드 파이프 스테이지를 완화하여, 더 높은 속도의 동작이 가능하게 하고 이에 따라 프로세서 성능을 개선한다. 이러한 방식의 I-캐시(22)로의 명령 저장은 또한 명령 길이 검출 및 정렬 연산을 한 번에 수행함으로써 전력 소비를 감소시킨다. I-캐시(22) 히트 레이트는 보통 90%로 높기 때문에, I-캐시(22)로부터 명령이 실행될 때마다 명령 경계를 확인해야 하는 필요성을 없앰으로써 상당한 전력 절약이 실현될 수 있다.
프리디코더(21)는 메인 메모리(32)와 I-캐시(22) 사이의 경로에 삽입되는 로직을 포함한다. 프리디코더(21) 로직은 메모리로부터 검색된 데이터를 검사하고, 명령 개수 및 길이를 확인한다. 프리디코더는 캐시 라인에 저장될 정렬된 명령들을 캐시로 전달하기 전에, 미리 결정된, 예를 들어 워드 경계를 따라 명령을 정렬 한다.
도 3은 I-캐시(22)의 2개의 대표적인 라인(200, 260)을 나타내며, 이들은 각각 도 1로부터의 일정한 개수의 가변 길이 명령(이 예에서는, 각 캐시 라인(200, 260)에 4개의 명령이 저장된다)을 포함한다. 캐시 라인(200, 260)은 16 바이트이다. 워드 경계는 파선으로 표시되고, 1/2 워드 경계는 점선으로 표시된다. 명령들은 워드 경계를 따라 정렬된다(즉, 각 명령은 워드 어드레스에서 시작한다). 파이프라인(12)에 의해 I-캐시(22)로부터 명령이 패치되면, 디코드 파이프 스테이지는 캐시 라인(200, 260)으로부터 관련 워드를 간단히 다중화하여, 즉시 op 코드의 디코딩을 시작할 수 있다. 1/2 워드 명령(예를 들어, I3 및 I8)의 경우, 캐시 라인(200, 260)에서 하나의 1/2 워드의 공간은 각각 도 3에서 음영으로 나타낸 것과 같이 사용되지 않는다.
도 1에 나타낸 종래 기술의 캐시와 비교할 때, 도 3의 캐시(22)는 두 캐시 라인에 9개보다는 단 8개의 명령만을 저장한다는 점에 주목한다. I9의 길이- 오프셋 0x0A 및 0x1E에서 1/2 워드 -에 해당하는 워드 공간은 이용되지 않는다. 이러한 캐시(22)로의 명령 저장 효율의 저하는 도 3에 나타낸 캐시 이용의 간소화, 개선된 프로세서 전력, 및 더 낮은 전력 소비의 대가이다.
추가로, 캐시 라인(200, 260)에 일정 개수의 가변 길이 명령을 할당하고, 미리 결정된 경계를 따라 명령을 정렬함으로써, 도 1의 I5와 같이 캐시 라인에 걸쳐 오정렬된 명령이 저장되지 않는다. 따라서 단일 명령을 검색하기 위한 2회 캐시(22) 액세스에 의해 일어나는 성능 페널티 및 과도한 전력 소비는 완전히 제거된 다.
알려진 전체 길이(캐시 라인의 길이)를 가지는 일정치 않은 개수의 명령이 아닌, 일정한 개수의 가변 길이 명령이 저장되기 때문에, 다음 순차 명령의 어드레스는 간단히 캐시 라인(200)의 메모리 크기만큼 한 캐시 라인(200)의 태그(220)를 증분함으로써 확인될 수 없다. 이에 따라 일 실시예에서는, (I-캐시(22)에 명령이 저장되기 전에) 명령이 정렬될 때 프리디코더(21)에 의해 다음 패치 어드레스가 계산되고 다음 패치 어드레스가 캐시 라인(200)과 함께 필드(240)에 저장된다.
다음 패치 어드레스의 계산 및 저장에 대한 대안으로서, 일 실시예에 따르면 태그(220)로부터의 오프셋이 계산되어 오프셋 필드(240)에서와 같이 캐시 라인(200)에 더하여 저장될 수 있다. 다음 패치 어드레스는 태그 어드레스에 오프셋을 추가함으로써 쉽게 계산될 수 있다. 이 실시예는 연속적인 어드레스 패치가 캐시 라인을 가로지를 때마다 이러한 추가를 수행하는 처리 지연 및 전력 소비를 초래한다. 다른 실시예에서는, 다음 패치 어드레스의 계산을 보조하기 위해 다른 정보가 저장될 수도 있다. 예를 들어, 캐시 라인(240)에서 일정한 개수의 명령과 같은 비트들의 세트가, 예를 들어 1은 해당 명령 "슬롯"에 저장되는 풀워드 길이 명령을 나타내고 0은 1/2 워드 길이 명령을 나타내도록 저장될 수도 있다. 메모리 내 명령들의 어드레스 및 다음 순차 명령의 어드레스가 이 정보로부터 계산될 수 있다. 당업자들은 추가적인 다음 어드레스 계산 보조가 안출되어 다음 명령 패치 어드레스를 계산하도록 저장될 수 있음을 쉽게 인지할 것이다.
여기서는 워드 및 1/2 워드 명령 길이를 포함하는 대표적인 ISA에 관해 다양 한 실시예가 전개되었지만, 본 발명은 이들 실시예에 한정되지 않는다. 일반적으로, 임의의 가변 길이 명령들이 미리 결정된 경계를 따라 정렬되어 일정한 개수로 명령 캐시(22)에 유리하게 저장될 수 있다. 추가로, 여기서 나타낸 것과 다른 크기의 캐시 라인(240, 300)이 다양한 실시예의 실행에 사용될 수 있다.
여기서는 본 발명의 특별한 특성, 형태 및 실시예에 관하여 본 발명의 실시예들이 설명되었지만, 본 발명의 범위 내에서 다양한 변형, 개조 및 다른 실시예들이 가능하고, 이에 따라 모든 변형, 개조 및 실시예가 발명의 범위 내에 있는 것으로 간주됨이 명백하다. 따라서 본 실시예들은 모든 형태에 있어 제약이 아닌 예시로 해석되어야 하며 첨부된 청구범위의 의미 및 등가 범위 내에 있는 모든 변형은 그 안에 포함되는 것으로 해석된다.

Claims (18)

  1. 가변 명령 길이를 가지는 프로세서에서의 캐시(cache) 관리 방법으로서,
    캐시의 제 1 캐시 라인에 일정한 수의 명령들을 포함하는 제 1 복수 명령들을 저장하는 단계 ― 상기 제 1 복수 명령들은 제 1 명령 길이를 가지는 제 1 명령 및 상기 제 1 명령 길이와 상이한 제 2 명령 길이를 가지는 제 2 명령을 포함함 ―;
    상기 캐시의 제 2 캐시 라인에 상기 일정한 수의 명령들을 포함하는 제 2 복수 명령들을 저장하는 단계; 및
    다음 패치(fetch) 어드레스; 및 상기 제 1 캐시 라인과 연관된 캐시 라인 태그에 추가될 때 상기 다음 패치 어드레스를 산출(yield)하는 오프셋 중 하나를 상기 캐시에 그리고 상기 제 1 캐시 라인에 인접하여 저장하는 단계를 포함하는, 가변 명령 길이를 가지는 프로세서에서의 캐시 관리 방법.
  2. 제1항에 있어서, 상기 제 1 복수 명령들의 대응하는 길이들을 결정하기 위해 상기 제 1 복수 명령들 각각을 검사하고, 미리 결정된 경계들을 따라 상기 제 1 복수 명령들 각각을 정렬하는 단계를 더 포함하는, 가변 명령 길이를 가지는 프로세서에서의 캐시 관리 방법.
  3. 제1항에 있어서, 상기 제 1 캐시 라인에 상기 제 1 복수 명령들을 배치하기 전에,
    상기 다음 패치 어드레스; 및
    상기 오프셋 중 적어도 하나를 결정하는 단계를 더 포함하는, 가변 명령 길이를 가지는 프로세서에서의 캐시 관리 방법.
  4. 제1항에 있어서, 상기 제 1 복수 명령들 각각과 연관된 대응하는 미리 결정된 명령 경계를 확정(ascertain)하는 단계를 더 포함하는, 가변 명령 길이를 가지는 프로세서에서의 캐시 관리 방법.
  5. 제1항에 있어서, 상기 제 1 캐시 라인의 대응하는 미리 결정된 경계를 이용하여 상기 제 1 복수 명령들 각각을 정렬하는 단계를 더 포함하는, 가변 명령 길이를 가지는 프로세서에서의 캐시 관리 방법.
  6. 제5항에 있어서, 각각의 미리 결정된 경계는 연관된 워드 어드레스를 가지는 워드 경계인, 가변 명령 길이를 가지는 프로세서에서의 캐시 관리 방법.
  7. 제1항에 있어서, 상기 일정한 수의 명령들을 저장한 후에, 상기 제 1 캐시 라인은 가득 차지 않은(unoccupied), 가변 명령 길이를 가지는 프로세서에서의 캐시 관리 방법.
  8. 제1항에 있어서, 상기 일정한 수는 4인, 가변 명령 길이를 가지는 프로세서에서의 캐시 관리 방법.
  9. 프로세서로서,
    제 1 명령 및 제 2 명령을 포함하는 미리 결정된 수의 명령들을 저장하기 위한 제 1 캐시 라인 ― 상기 제 1 명령은 제 1 명령 길이를 가지고 상기 제 2 명령은 상기 제 1 명령 길이와 상이한 제 2 명령 길이를 가짐 ―;
    상기 미리 결정된 수의 명령들을 저장하기 위한 제 2 캐시 라인을 포함하는 명령 캐시를 포함하며,
    상기 제 1 캐시 라인은 추가적으로:
    다음 패치 어드레스; 및 상기 제 1 캐시 라인과 연관된 캐시 라인 태그에 추가될 때 상기 다음 패치 어드레스를 산출하는 오프셋 중 하나를 저장하는, 프로세서.
  10. 제9항에 있어서, 상기 제 1 캐시 라인의 대응하는 미리 결정된 경계를 이용하여 상기 제 1 명령 및 상기 제 2 명령 각각을 정렬하도록 동작가능한 프리디코더(predecoder)를 더 포함하는, 프로세서.
  11. 제10항에 있어서, 상기 프리디코더는 상기 제 1 캐시 라인에 기록된 마지막 명령 다음의 다음 명령의 상기 다음 패치 어드레스를 계산하도록 동작가능한, 프로세서.
  12. 제9항에 있어서,
    각각의 명령의 대응하는 길이를 확정하고;
    상기 캐시의 대응하는 워드 경계를 따라 각각의 명령을 정렬하며; 그리고
    상기 캐시로 상기 정렬될 명령들을 패스(pass)하도록 동작가능한 프리디코더를 더 포함하는, 프로세서.
  13. 제9항에 있어서, 가변하는 길이들을 가지는 명령들을 실행하도록 동작가능한 명령 실행 파이프라인을 더 포함하는, 프로세서.
  14. 가변 명령 길이를 가지는 프로세서에서의 캐시 관리 방법으로서,
    복수의 캐시 라인들을 포함하는 캐시의 캐시 라인 마다 저장가능한 일정한 수의 명령들을 결정하는 단계 ― 상기 일정한 수는 1보다 큼 ―;
    제 1 캐시 라인에 상기 일정한 수의 명령들을 포함하는 복수의 명령들을 저장하는 단계 ― 상기 복수의 명령들은 제 1 명령 길이를 가지는 제 1 명령 및 상기 제 1 명령 길이와 상이한 제 2 명령 길이를 가지는 제 2 명령을 포함함 ―; 및
    다음 패치 어드레스 및 상기 제 1 캐시 라인과 연관된 캐시 라인 태그에 추가될 때 상기 다음 패치 어드레스를 산출하는 오프셋 중 하나를 상기 캐시에 그리고 상기 제 1 캐시 라인에 인접하여 저장하는 단계를 포함하는, 가변 명령 길이를 가지는 프로세서에서의 캐시 관리 방법.
  15. 제14항에 있어서, 각각의 명령의 대응하는 길이를 결정하기 위한 상기 복수의 명령들 각각을 검사하고, 그리고 상기 캐시에 배치하기 전에 대응하는 미리 결정된 경계를 따라 상기 복수의 명령들 각각을 정렬하는 단계를 더 포함하는, 가변 명령 길이를 가지는 프로세서에서의 캐시 관리 방법.
  16. 제14항에 있어서, 상기 복수의 명령들의 각각은 상기 제 1 캐시 라인과 연관된 워드 길이를 초과하지 않는 대응하는 명령 길이를 가지는, 가변 명령 길이를 가지는 프로세서에서의 캐시 관리 방법.
  17. 제15항에 있어서, 적어도 하나의 미리 결정된 경계는 워드 경계인, 가변 명령 길이를 가지는 프로세서에서의 캐시 관리 방법.
  18. 제14항에 있어서, 상기 제 1 캐시 라인에 상기 복수의 명령들을 저장하는 단계 이전에 상기 다음 패치 어드레스를 결정하는 단계를 더 포함하는, 가변 명령 길이를 가지는 프로세서에서의 캐시 관리 방법.
KR1020087004751A 2005-07-29 2006-07-26 일정한 개수의 가변 길이 명령을 가진 명령 캐시 KR101005633B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/193,547 2005-07-29
US11/193,547 US7568070B2 (en) 2005-07-29 2005-07-29 Instruction cache having fixed number of variable length instructions

Publications (2)

Publication Number Publication Date
KR20080031981A KR20080031981A (ko) 2008-04-11
KR101005633B1 true KR101005633B1 (ko) 2011-01-05

Family

ID=37451109

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087004751A KR101005633B1 (ko) 2005-07-29 2006-07-26 일정한 개수의 가변 길이 명령을 가진 명령 캐시

Country Status (6)

Country Link
US (1) US7568070B2 (ko)
EP (1) EP1910919A2 (ko)
JP (2) JP4927840B2 (ko)
KR (1) KR101005633B1 (ko)
CN (2) CN101268440A (ko)
WO (1) WO2007016393A2 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7337272B2 (en) * 2006-05-01 2008-02-26 Qualcomm Incorporated Method and apparatus for caching variable length instructions
US8898437B2 (en) * 2007-11-02 2014-11-25 Qualcomm Incorporated Predecode repair cache for instructions that cross an instruction cache line
US8627017B2 (en) * 2008-12-30 2014-01-07 Intel Corporation Read and write monitoring attributes in transactional memory (TM) systems
US9753858B2 (en) 2011-11-30 2017-09-05 Advanced Micro Devices, Inc. DRAM cache with tags and data jointly stored in physical rows
JP5968693B2 (ja) * 2012-06-25 2016-08-10 ルネサスエレクトロニクス株式会社 半導体装置
US11768689B2 (en) 2013-08-08 2023-09-26 Movidius Limited Apparatus, systems, and methods for low power computational imaging
US10001993B2 (en) 2013-08-08 2018-06-19 Linear Algebra Technologies Limited Variable-length instruction buffer management
US10853074B2 (en) * 2014-05-01 2020-12-01 Netronome Systems, Inc. Table fetch processor instruction using table number to base address translation
WO2016016726A2 (en) * 2014-07-30 2016-02-04 Linear Algebra Technologies Limited Vector processor
US9916251B2 (en) 2014-12-01 2018-03-13 Samsung Electronics Co., Ltd. Display driving apparatus and cache managing method thereof
CN106528450B (zh) * 2016-10-27 2019-09-17 上海兆芯集成电路有限公司 数据预先提取方法及使用此方法的装置
CN108415729A (zh) * 2017-12-29 2018-08-17 北京智芯微电子科技有限公司 一种cpu指令异常的处理方法及装置
CN110750303B (zh) * 2019-09-25 2020-10-20 支付宝(杭州)信息技术有限公司 基于fpga的流水线式指令读取方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001027749A1 (en) * 1999-10-14 2001-04-19 Advanced Micro Devices, Inc. Apparatus and method for caching alignment information
US6253287B1 (en) * 1998-09-09 2001-06-26 Advanced Micro Devices, Inc. Using three-dimensional storage to make variable-length instructions appear uniform in two dimensions

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5179680A (en) * 1987-04-20 1993-01-12 Digital Equipment Corporation Instruction storage and cache miss recovery in a high speed multiprocessing parallel processing apparatus
EP0498654B1 (en) * 1991-02-08 2000-05-10 Fujitsu Limited Cache memory processing instruction data and data processor including the same
WO1996029645A1 (en) * 1995-03-23 1996-09-26 International Business Machines Corporation Object-code compatible representation of very long instruction word programs
EP0843848B1 (en) * 1996-05-15 2004-04-07 Koninklijke Philips Electronics N.V. Vliw processor which processes compressed instruction format
TW357318B (en) * 1997-03-18 1999-05-01 Ind Tech Res Inst Branching forecast and reading device for unspecified command length extra-purity pipeline processor
US6112299A (en) * 1997-12-31 2000-08-29 International Business Machines Corporation Method and apparatus to select the next instruction in a superscalar or a very long instruction word computer having N-way branching
US6253309B1 (en) * 1998-09-21 2001-06-26 Advanced Micro Devices, Inc. Forcing regularity into a CISC instruction set by padding instructions
JP3490007B2 (ja) * 1998-12-17 2004-01-26 富士通株式会社 命令制御装置
US6779100B1 (en) * 1999-12-17 2004-08-17 Hewlett-Packard Development Company, L.P. Method and device for address translation for compressed instructions
JP2003131945A (ja) * 2001-10-25 2003-05-09 Hitachi Ltd キャッシュメモリ装置
US7133969B2 (en) * 2003-10-01 2006-11-07 Advanced Micro Devices, Inc. System and method for handling exceptional instructions in a trace cache based processor

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6253287B1 (en) * 1998-09-09 2001-06-26 Advanced Micro Devices, Inc. Using three-dimensional storage to make variable-length instructions appear uniform in two dimensions
WO2001027749A1 (en) * 1999-10-14 2001-04-19 Advanced Micro Devices, Inc. Apparatus and method for caching alignment information

Also Published As

Publication number Publication date
KR20080031981A (ko) 2008-04-11
CN101268440A (zh) 2008-09-17
WO2007016393A3 (en) 2007-06-28
US20070028050A1 (en) 2007-02-01
JP2009503700A (ja) 2009-01-29
US7568070B2 (en) 2009-07-28
CN104657110B (zh) 2020-08-18
WO2007016393A2 (en) 2007-02-08
EP1910919A2 (en) 2008-04-16
JP4927840B2 (ja) 2012-05-09
CN104657110A (zh) 2015-05-27
JP2012074046A (ja) 2012-04-12
JP5341163B2 (ja) 2013-11-13

Similar Documents

Publication Publication Date Title
KR101005633B1 (ko) 일정한 개수의 가변 길이 명령을 가진 명령 캐시
US7962725B2 (en) Pre-decoding variable length instructions
JP5837126B2 (ja) 現在実行している命令セット以外の命令セットから命令をプリロードするシステム、方法およびソフトウェア
US7676659B2 (en) System, method and software to preload instructions from a variable-length instruction set with proper pre-decoding
US5774710A (en) Cache line branch prediction scheme that shares among sets of a set associative cache
US7404042B2 (en) Handling cache miss in an instruction crossing a cache line boundary
US6092188A (en) Processor and instruction set with predict instructions
JP2009536770A (ja) ブロックに基づく分岐先アドレスキャッシュ
TW200818007A (en) Associate cached branch information with the last granularity of branch instruction variable length instruction set
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
CN113568663A (zh) 代码预取指令
JP3824657B2 (ja) 1クロックサイクル内でデータをストアするよう構成されたデータメモリユニット、およびその動作方法
CN115858022A (zh) 集群化解码管线的可缩放切换点控制电路系统
Jin et al. Instruction cache compression for embedded systems

Legal Events

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

Payment date: 20131129

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20141128

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20161125

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170929

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180928

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20190924

Year of fee payment: 10