KR101545701B1 - 프로세서 및 그 명령어 번들 복원 방법 - Google Patents

프로세서 및 그 명령어 번들 복원 방법 Download PDF

Info

Publication number
KR101545701B1
KR101545701B1 KR1020080098348A KR20080098348A KR101545701B1 KR 101545701 B1 KR101545701 B1 KR 101545701B1 KR 1020080098348 A KR1020080098348 A KR 1020080098348A KR 20080098348 A KR20080098348 A KR 20080098348A KR 101545701 B1 KR101545701 B1 KR 101545701B1
Authority
KR
South Korea
Prior art keywords
compression
instruction
value
timer
instructions
Prior art date
Application number
KR1020080098348A
Other languages
English (en)
Other versions
KR20100039121A (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 삼성전자 주식회사
Priority to KR1020080098348A priority Critical patent/KR101545701B1/ko
Priority to CN200910133577.9A priority patent/CN101714076B/zh
Priority to US12/467,536 priority patent/US8051274B2/en
Priority to EP09164747A priority patent/EP2175363A1/en
Publication of KR20100039121A publication Critical patent/KR20100039121A/ko
Application granted granted Critical
Publication of KR101545701B1 publication Critical patent/KR101545701B1/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • GPHYSICS
    • G06COMPUTING; 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • 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
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions

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

본 발명은 복수의 명령어들을 동시에 처리하는 프로세서의 명령어 페치 기술에 관련된다. 본 발명에 따른 프로세서는 프로그램 메모리에서 압축된 명령어들을 페치(fetch)하여 병렬 처리될 일련의 명령어들로 구성된 명령어 번들을 생성할 때, 이전 싸이클에서 페치한 압축 코드를 이용한다. 프로그램 메모리와 명령어 복원부 사이에는 압축 버퍼가 구비되고, 이에 따라 이전 싸이클에서 읽혀진 압축 코드는 항상 그 다음 명령어 번들의 복원 싸이클 초기에 준비된다. 이에 따라 메모리 액세스 소요시간(memory latency)에 따른 지연이 극복된다.
프로세서, 파이프라인, VLIW, 명령어 압축, 버퍼

Description

프로세서 및 그 명령어 번들 복원 방법{A processor and a method for decompressing instruction bundles}
본 발명은 프로그램 메모리에 저장된 명령어들을 실행하는 프로세서에 관련되며, 더 자세하게는 VLIW(Very Long Instruction Word) 프로세서에 관련되나 반드시 이에 한정되는 것은 아니다.
VLIW 머신은 명령어 병렬처리(ILP : Instruction Level parallelism) 를 이용하기 위해 설계된 CPU 구조를 가리킨다. 슈퍼스칼라 구조(superscaler architectures) 에 있어서, 하나의 프로세서는 다중 처리 블록들을 구비한다. 순차적으로 실행되는 명령어들의 상이한 스텝들을 구성하는 다중 명령어들이 이 다중 처리 블록들에서 동시에 실행된다. 이 같은 병렬 처리 구조에 있어서 명령어의 실행 스케쥴을 제어하는 복잡한 하드웨어가 포함된다.
VLIW 접근에 있어서, 명령어의 실행 스케쥴은 소프트웨어인 컴파일러에 의해 프로세서 외부에서 결정되고, 프로세서 내에서의 실행 스케쥴은 고정되어 있다. 이에 의해 복잡한 제어를 위한 하드웨어를 간단하게 한다.
VLIW 머신의 명령어 번들은 내부의 다중 처리 블록들에서 동시에 실행되는 명령어들을 포함하고 있다. ILP 의 제한(restriction)과 같은 요인에 의해 병렬 처리될 명령어들의 수는 VLIW 명령어 폭(instruction width) 보다 작을 수 있다. 이때 빈 명령어 슬롯(slot) 에는 NOP(No Operation)를 채우게 된다. 그런데 메모리 효율을 높이기 위해 명령어 번들을 저장할 때 NOP 부분은 압축하여 저장한다. 이 압축은 NOP 여부를 나타내는 스톱 비트(stop bit)를 명령어들과 함께 저장함으로써 이루어지곤 한다. 이 스톱 비트는 다음 싸이클에 수행될 명령어들을 결정하며, Next PC (Program Counter) 계산에 사용된다. 그런데 스톱 비트는 메모리로부터 읽혀지는 값이므로 메모리 액세스 소요시간(memory latency) 이후에 값이 결정된다. 한 클럭 주기 중에 많은 시간이 메모리로부터 값이 확정되는데 소요되고, 스톱 비트의 읽기에 소요되는 시간으로 인해 클럭 주기가 늘어나거나, 이를 회피하기 위해 매번 명령어 페치때마다 추가적인 클럭이 삽입되어야 하는 문제점이 발생한다. 이는 VLIW 머신의 클럭 스피드를 제한하는 병목으로 작용하게 된다.
본 발명은 이 같은 배경에서 도출된 것으로, 압축된 병렬 처리될 명령어 번들을 생성함에 있어서 메모리 액세스 소요시간(memory latency) 에 따른 병목 현상을 해결하는 것을 목적으로 한다.
상기 목적을 달성하기 위한 본 발명의 일 양상에 따르면, 본 발명에 따른 프로세서는 프로그램 메모리에서 압축된 명령어들을 페치(fetch)하여 병렬 처리될 일 련의 명령어들로 구성된 명령어 번들을 생성할 때, 이전 싸이클에서 페치한 압축 코드를 이용한다.
프로그램 메모리와 명령어 복원부 사이에는 압축 버퍼가 구비되고, 이에 따라 이전 싸이클에서 읽혀진 압축 코드는 항상 그 다음 명령어 번들의 복원 싸이클 초기에 준비된다. 따라서 메모리 액세스 소요시간(memory latency)에 따른 지연이 극복된다.
본 발명의 또다른 양상에 따라, 명령어 복원부는 압축 버퍼에서 읽어낸 압축 코드들의 값에 따라 출력 값이 결정되는 타이머부와, 압축 버퍼에서 읽어낸 압축 코드들의 값 및 상기 타이머부의 출력에 따라 프로그램 메모리로부터 명령어들을 읽어낼 주소 값 및 프로그램 카운터 값을 계산하여 출력하는 액세스 제어부와, 액세스 제어부에서 출력되는 주소 값이 지정하는 주소의 명령어들을 임시로 저장하는 명령어 레지스터와, 명령어 레지스터에 저장된 압축된 명령어들을 타이머부의 출력 및 압축 버퍼에 저장된 이전의 압축 코드를 이용해 복원함으로써 명령어 번들을 생성하여 출력하는 명령어 복원부를 포함할 수 있다.
본 발명의 추가적인 양상에 따라, 이 액세스 제어부는 타이머부의 출력 값 및 압축 버퍼에서 읽어낸 압축 코드들의 값에 따라 프로그램 카운터 값을 계산하는 프로그램 카운터 계산부 및 타이머부의 출력 값 및 압축 버퍼에서 읽어낸 압축 코드들의 값에 따라 메모리 액세스를 위한 주소 값을 계산하는 메모리 주소 계산부를 포함한다.
이 같은 양상에 따라 프로그램 카운터와 메모리 주소 액세스의 제어를 분리 함으로써 동일 영역의 중복된 메모리 액세스를 회피하여 메모리 전력 소모를 줄일 수 있다.
본 발명의 이 같은 양상에 따라, 메모리 액세스 소요시간(memory latency) 만큼의 지연을 극복하는 것이 가능해지고, 저속, 저전력의 SRAM 을 사용해서 고속 VLIW 머신을 구현하는 것이 가능해진다.
또한 메모리 주소 생성을 위한 파이프라인 구조의 추가를 회피해서 성능 향상을 꾀할 수 있다.
나아가 프로그램 카운터와 메모리 주소 액세스의 제어를 분리함으로써 동일 영역의 중복된 메모리 액세스를 회피하여 메모리 전력 소모를 줄일 수 있다.
또한 압축에 따른 파이프라인 구조를 추가하지 않아도 되므로 히트 타임(hit time)은 한 싸이클로 유지되고 캐쉬의 성능 저하를 회피할 수 있다.
전술한, 그리고 추가적인 본 발명의 양상들은 후술하는 실시예들에서 보다 명백해질 것이다. 이하에서는 본 발명을 첨부된 도면을 참조하여 기술되는 바람직한 실시예들을 통해 당업자가 용이하게 이해하고 재현할 수 있도록 상세히 설명한다.
도 1은 본 발명의 바람직한 일 실시예에 따른 프로세서(10) 및 프로그램이 저장된 메모리(30)의 개략적인 구성을 도시한 블럭도이다. 도시된 바와 같이, 프로세서(10)는 프로그램 메모리(30)에서 읽어낸 압축 코드를 버퍼링하는 압축버 퍼(compression bufer)(100)와, 이 압축 버퍼(100)에 저장된 이전의 압축 코드에 따라 그 프로그램 메모리(30)에서 현재 페치(fetch)한 압축된 명령어들을 복원하여 출력하는 명령어 복원부(500)를 포함한다. 프로그램 메모리(30)는 프로세서 외부의 주기억장치일 수도 있고, 프로세서 외부의 캐쉬일 수도 있으며, 또한 프로세서 내부의 명령어 캐쉬일 수도 있음은 당업자에게 자명하다. 프로세서 내에서 압축 버퍼(100)는 명령어 버퍼와 별도로 구비될 수도 있고, 이와 통합되어 구비될 수도 있다. 그러나 본 발명에 있어서 압축 정보와 명령어는 서로 연관성이 없으므로 따라 버퍼를 두는 것이 바람직하다.
프로그램 메모리(30)에서 읽혀진 압축 코드는 압축 버퍼(100)에서 버퍼링된 후 명령어 복원부(500)로 공급된다. 명령어 복원부(500)는 프로그램 메모리(30)에서 페치(fetch)한 명령어를 복원함에 있어서, 압축 버퍼(100)에 이전 싸이클에서 저장된 압축 코드를 이용한다. 본 발명의 특징적인 양상들 중 하나에 따라 프로그램 메모리의 압축 코드는 현재 수행될 명령어에 대한 압축 정보가 아니라 미래에 수행될 명령어에 대한 압축 정보를 담고 있다.
도 2는 본 발명을 설명하기 위해 메모리에 저장된 명령어 및 압축 코드들의 일 예를 도시한다. a,b,c... 들은 명령어를 나타내고, 첨자들은 그 명령어와 대응되어 저장되는 압축 코드를 나타낸다. 명령어 중 N 은 NOP(No Operation)를 의미한다. 이 예에 있어서 한번에 병렬 수행될 명령어는 3개이고 명령어 번들이 3개의 명령어들로 구성된다. 또한 메모리로부터 명령어들은 3개씩 페치된다. 여기서 명령어에 아래 첨자로 기록된 압축 코드는 그 명령어가 아니라 그 다음 페치될 명령 어들의 압축 정보를 나타낸다. 본 실시예에 있어서, 첫번째 3개의 명령어들은 압축되지 않는다. 본 실시예에 있어서, 압축 코드가 '01'의 값을 갖는 경우 그 이후는 NOP 명령으로 채워진다. 압축 코드가 '00'의 값을 갖는 경우 그 이후 명령어도 유의미한 명령어가 된다.
예를 들어 도 2에서 첫번째 압축 코드들이 {01, 01, 01}의 값을 가지므로, 두번째로 메모리로부터 페치된 3개의 명령어들인 {b, c, d}들이 이 압축 코드들에 의해 복원된다. 명령어 b에 대응되는 압축 코드가 '01'의 값을 가지므로, 명령어 b는 마지막 명령어가 되고, 따라서 두번째 싸이클에서 복원되는 명령어 번들은 {b, NOP, NOP} 가 된다. 한편, 명령어 {b, c, d}와 함께 읽혀진 압축 코드들은 {00, 00, 01} 이다. 이들 압축 코드들은 그 이후 싸이클에서 메모리로부터 페치된 명령어들인 {e,f,g}를 위한 것이다. 명령어 e에 대응되는 압축 코드가 '00'이므로, 명령어 e는 그 다음 명령어 f와 함께 병렬로 처리된다. 명령어 f에 대한 압축 코드가 '00'이므로 명령어 f는 그 다음 명령어 g와 함께 병렬로 처리된다. 명령어 g에 대한 압축 코드가 '01'이므로 명령어 g는 마지막 명령어가 된다. 따라서 세번째 싸이클에서 병렬로 처리될 명령어 번들은 {e, f, g}가 된다.
압축 버퍼(100)는 프로그램 메모리에서 읽어낸 압축 코드를 저장하는 제 1 압축 버퍼(110)를 포함한다. 제 1 압축 버퍼(110)는 플립플롭으로 동작하여, 시스템 클럭에 동기화하여 프로그램 메모리(30)에서 읽혀지는 압축 코드 데이터를 래치(latch)한다. 래치된 압축 코드 데이터는 다음 싸이클의 클럭에 동기화되어 출력된다. 제 1 압축 버퍼(110)에서 도시된 꺽쇠 기호는 이 버퍼가 클럭에 동기화되 어 동작하는 플립플롭을 포함하고 있음을 나타낸다.
본 발명의 추가적인 양상에 따라, 압축 버퍼(110)는 조건부 분기 명령 자체에 포함된 압축 코드를 추출하여 저장하는 제 2 압축 버퍼(130)를 더 포함할 수 있다. 예를 들어 if-else 와 같은 조건부 분기 명령의 경우 다음 실행될 명령어는 2가지 경우가 있을 수 있다. 조건식이 '참'일 경우에 실행될 명령어와, 조건식이 '거짓'일 경우에 실행될 명령어가 그것이다. 따라서 본 발명에 따른 압축 코드로는 이 두 경우 중 한 가지 경우의 정보만이 포함될 수 있다. 본 발명의 특징적인 양상들 중 하나에 따라, VLIW 컴파일러는 이때 나머지 경로에 대한 압축 코드를 조건부 분기 명령의 명령 코드 자체에 있는 예비(reserved) 영역에 담는다. 프로세서(10)의 제어부는 후술할 명령어 레지스터(410)에서 정해진 영역에 저장된 이 압축 코드를 추출하여 제 2 압축 버퍼(130)로 저장한다. 이를 위해 본 실시예에 따른 프로세서는 정적 분기 예측(static branch prediction)이 지원되며 예측 오류(miss prediction)에 대한 회복(restore)이 지원되는 구조를 가진다. 또한 조건부 분기 명령은
메모리 읽기 폭 (issue width) × 압축 코드
의 크기를 가지는 비어 있는 비트 필드가 있어야 한다.
본 발명의 또다른 추가적인 양상에 따라, 압축 버퍼(100)는 함수 호출 시에, 리턴할 때 실행될 명령어에 대응하는 압축 코드를 저장하는 제 3 압축 버퍼(150)를 더 포함할 수 있다. 호출된 함수의 처리가 끝나고 호출한 루틴으로 리턴할 때 호출한 루틴에서 실행될 첫번째 명령어의 압축 정보를 함수 호출 시에 미리 제 3 압 축 버퍼(150)에 저장한다. 이에 따라 호출한 루틴으로 리턴할 때 실행할 명령어 번들을 즉각적으로 복원할 수 있다. 본 실시예에 따른 압축 정보들에 대해서는 이후에 보다 상세히 설명된다.
도시된 일 실시예에 있어서, 명령어 복원부(500)는 압축 버퍼(100)에서 읽어낸 압축 코드들의 값에 따라 출력 값이 결정되는 타이머부(200)와, 압축 버퍼(100)에서 읽어낸 압축 코드들의 값 및 타이머부(200)의 출력에 따라 프로그램 메모리(30)로부터 명령어들을 읽어낼 주소 값 및 프로그램 카운터 값을 계산하여 출력하는 액세스 제어부(300), 이 액세스 제어부(300)에서 출력되는 주소 값이 지정하는 주소의 압축된 명령어들을 타이머부(200)의 출력 및 압축 버퍼(100)에 저장된 이전의 압축 코드를 이용해 복원함으로써 명령어 번들을 생성하여 출력하는 명령어 조합부(400)를 포함한다.
일 실시예에 있어서, 타이머부(200)는 제 1 타이머(210, 230) 및 제 2 타이머(250)를 포함한다. 제 1 타이머는 압축 버퍼(100)에서 읽어낸 압축 코드들의 값을 조합하여 초기값을 설정하는 초기화부(210)와, 상기 초기화 부(210)의 입력 값에 의해 초기화되고, 내부 클럭에 의해 다운 카운트하는 타이머(230)를 포함한다.
도 3는 도 1에 도시된 실시예에 있어서 타이머부(200)의 일 예의 개략적인 구성을 도시한다. 도시된 바와 같이, 초기화부(210)는 압축 버퍼(100)의 압축 코드들이 '00' 인지 '01'인지 검출하는 OR 게이트들(211-1, 211-2, 211-3)과, 이 게이트들의 값을 조합하여 제 1 타이머(230)의 초기화 값을 생성하는 조합논리회로(213)으로 구성된다. 제 1 타이머(230)의 출력 값은 제 2 타이머(250)의 입력 값으로 래치된다. 즉, 제 2 타이머(250)는 제 1 타이머(230)의 이전 클럭에서의 값을 갖고 있다. 타이머(230)는 초기화부(210)에 의해 초기값이 셋팅된 후 시스템 클럭의 진행에 따라 '0'의 값이 될 때까지 다운카운트된다. 제 2 타이머(250)는 타이머(230)의 출력을 입력으로 하는 플립플롭이다.
도 4는 바람직한 일 실시예에 있어서, 압축 코드의 값에 따른 타이머(230)의 출력 값을 나타낸다. 타이머(230)의 값은 이와 같이 메모리에서 함께 페치된 압축 코드들의 값에 따라 결정된다. 타이머값은 명령어 복원에 가용한 압축 버퍼에 저장된 압축 코드의 수를 나타낸다. 따라서 타이머 값이 1이면 명령어 복원을 위해 압축 버퍼에서 얻을 수 있는 압축 코드는 1 개라는 뜻이다. 따라서 타이머 값은 프로그램 카운터 값이 더해질 때마다 줄어든다. 또한 타이머가 0이면 다음 싸이클에 압축 버퍼가 새로운 정보로 업데이트되어야 함을 의미한다. 이와 같이 싸이클의 진행에 따라 타이머(230)의 값은 순차적으로 다운카운트되며, 제 2 타이머(250)는 제 1 타이머(210, 230)의 값을 클럭에 동기하여 순차적으로 전달받아 저장한다.
본 발명의 또다른 양상에 따라, 액세스 제어부(300)는 타이머부(200)의 출력 값 및 압축 버퍼(100)에서 읽어낸 압축 코드들의 값에 따라 프로그램 카운터 값을 계산하는 프로그램 카운터 계산부(310), 그리고 타이머부(200)의 출력 값 및 상기 압축 버퍼(100)에서 읽어낸 압축 코드들의 값에 따라 메모리 액세스를 위한 주소 값을 계산하는 메모리 주소 계산부(330)를 포함한다.
바람직한 일 실시예에 있어서, 프로그램 카운터의 값은 타이머(230)의 값이 2인 경우 압축 코드가 모두 '01'인 경우이므로 항상 1씩 증가한다. 도 5a는 바람 직한 일 실시예에 있어서, 타이머(230)의 값이 1인 경우의 프로그램 카운터의 값을 계산하는 방법을 설명하는 흐름도이다. 도시된 바와 같이 타이머(230)의 값이 1인 경우 제 2 타이머(250)의 값, 즉 이전 싸이클에서의 타이머(230)의 값이 2인 경우에는 프로그램 카운터는 1 이 증가하고(단계 S501), 그렇지 않은 경우 압축 버퍼에 저장된 첫번째 압축코드(c0)의 값에 따라 프로그램 카운터는 1이 증가할 수도 있고 2가 증가할 수도 있다(단계 S503). c0 의 값이 '01'이라면 출력되는 명령어 번들은 {a, NOP, NOP} 와 같은 형태가 될 수 밖에 없다. 따라서 명령어 레지스터(410)에 저장된 명령어 중 단지 1개만이 번들에 포함되므로 프로그램 카운터는 1만 증가한다. 만약 c0 의 값이 '00'이라면 타이머 값이 1이므로 c1, c2는 모두 '01' 이다. 따라서 출력되는 명령어 번들은 {a,b, NOP} 와 같은 형태가 된다. 따라서 명령어 레지스터(410)에 저장된 명령어 중 2개가 번들에 포함되므로 프로그램 카운터는 2가 증가한다.
도 5b는 바람직한 일 실시예에 있어서, 타이머(230)의 값이 0인 경우의 프로그램 카운터의 값을 계산하는 방법을 설명하는 흐름도이다. 도시된 바와 같이 타이머(230)의 값이 0인 경우, 제 2 타이머(250)의 값, 즉 이전 싸이클에서의 타이머(230)의 값이 1인 경우에는(단계 S511), 프로그램 카운터는 c1, 즉 압축 버퍼(100)에 저장된 압축 코드의 값 중 가운데 값에 따라 1이 증가할 수도 있고 2가 증가할 수도 있다(단계 S513). 타이머(230)의 값이 0이고 제 2 타이머(250)의 값이 1이라는 뜻은 압축 버퍼에 원래 2개의 '01'이 있었는데 이전 싸이클에서 하나, 즉 c0는 활용되고 현재 '01'값은 1개만 가용하다는 뜻이다. 따라서 c1, c2 중 하 나는 '01'이고 나머지 하나는 '00'이다. c1 이 '01'이면 출력되는 명령어 번들은 {c, NOP, NOP}의 형태이므로 프로그램 카운터는 1만 증가한다. 만약 c1 의 값이 '00'이라면 c2가 '01'이고, 출력되는 명령어 번들은 {c,d,NOP} 와 같은 형태가 된다. 따라서 명령어 레지스터(410)에 저장된 명령어 중 2개가 번들에 포함되므로 프로그램 카운터는 2가 증가한다. 만약 제 2 타이머(250)의 값이 1이 아니라면 압축 버퍼(100)에 저장된 압축 코드들은 새로이 메모리로부터 읽어들인 값들이고, 그 중 하나만이 '01'이라는 뜻이다(단계 S511). 따라서 c0,c1,c2 중 하나만이 '01'의 값을 가진다. c0가 '01'이라면 출력되는 명령어 번들은 {c,NOP,NOP}형태이고, 프로그램 카운터는 1만 증가된다(단계 S515). c1이 '01'이라면 출력되는 명령어 번들은 {c,d,NOP}형태이고, 프로그램 카운터는 2가 증가된다. 만약 c2가 '01'이라면 출력되는 명령어 번들은 {c,d,e}형태이고, 프로그램 카운터는 3이 증가된다.
본 발명의 양상 중 하나에 따라, 프로그램 카운터에 의해 메모리를 페치하는 일반적인 기술과 달리, 일 실시예에 따르면 메모리 주소값과 프로그램 카운터의 값은 항상 일치하지 않는다. 따라서 일 실시예에 따르면 프로그램 카운터 계산부(310)와 별도로 메모리 주소 계산부(330)가 구비된다. 메모리 주소 계산부는 프로그램 메모리(30)를 읽어들이는 주소를 계산한다. 실행되는 명령어를 카운트하는 프로그램 카운트와 달리, 메모리 액세스는 3단위(3 issue) 방식인 본 실시예에 있어서 3개 주소씩 이루어진다. 이와 같이 미리 페치된 압축 정보를 이용하여 복원할 코드를 결정하고, 타이머 값에 의해 페치할 시점을 결정함으로써 중복된 메모리 액세스를 회피하여 불필요한 메모리 파워 소모를 줄일 수 있다.
도 6은 도 1에 도시된 실시예에 있어서 메모리 주소 계산부(330)의 일 예의 개략적인 구성을 도시한 블럭도이다. 선택부(333)는 주소 카운터 레지스터(333)의 출력 값 또는 프로그램 카운터 계산부(310)에서 출력된 갱신된 프로그램 카운터의 값 중 하나를 선택하여 출력한다. 선택부(333)는 타이머(230)의 출력이 1에서 0으로 전환(transition)하는 시점에 프로그램 카운터 계산부(331)에서 출력된 갱신된 프로그램 카운터의 값을 선택하며, 그 외의 경우에는 주소 카운터 레지스터(333)의 출력 값을 선택하여, 이전 주소 값을 유지한다. 메모리 주소 값이 일정하게 유지되는 동안 메모리 액세스는 회피되고 이에 따라 메모리 액세스 횟수가 감소될 수 있다.
도 7은 도 1에 도시된 실시예에 있어서 명령어 조합부(400)의 일 예의 개략적인 구성을 도시한 블럭도이다. 도시된 바와 같이 명령어 조합부(400)는 이전 싸이클에서 저장된 압축 정보를 이용해 명령어를 복원한다. 명령어 조합부(400)는 일 실시예에 있어서, 명령어 레지스터(410)와 선택 로직(430)으로 구성된다. 3 단위 (issue) 방식의 프로세서에 있어서, 명령어 레지스터(410)는 3개의 명령어를 저장하는 레지스터(411,413,415) 및 NOP 명령어를 저장하는 하나의 레지스터(417)를 포함하여 구성될 수 있다. 이때 선택 로직(430)은 3개의 4-to-1 멀티플렉서(431,433,435)를 포함하여 구성될 수 있다. 이들 각각의 멀티플렉서(431,433,435)는 각각의 명령어의 비트폭 만큼의 입력 데이터 폭(input data width)을 가진다. 3 개의 명령어 및 1개의 NOP 명령어 중 하나가 각각의 멀티플렉서(431,433,435)에 의해 선택되어 출력된다.
출력된 명령어들은 3단위(3-issue) VLIW 명령어 번들을 저장하는 출력 명령어 버퍼(437)에서 단일의 명령어 번들로 저장되어 출력된다. 이 출력된 명령어 번들은 도 1에서 프로세서의 내부 병렬 처리블록(700)에 의해 병렬적으로 처리된다. 아래 표는 선택신호에 따라 멀티플렉서(431,433,435)에 의해 선택되는 명령어들을 보여준다.
선택신호 선택된 명령어
00 I0
01 I1
10 I2
11 NOP
도 7에 있어서 멀티플렉서의 출력을 선택하는 신호(IS0, IS1, IS2, IS3)는 압축 버퍼(100)의 출력값들 및 타이머값들에 의해 정해진다. 이 선택 신호 생성회로는 조합논리회로인데 도 7에서 도시 생략되었다. 아래 표는 타이머 값 및 압축 버퍼의 출력 값(c0,c1,c2)들에 따른 선택 신호의 출력 값들(IS0, IS1, IS2)의 조합을 도시한다. 이 표로부터 조합논리회로인 선택 신호 생성회로를 구현하는 방법은 널리 알려져 있다.
타이머 제 2 타이머 c0 c1 c2 IS0 IS1 IS2
2 0 ? ? ? 00 11 11
1 2 ? ? ? 01 11 11
1 0 1 ? ? 00 11 11
1 0 0 ? ? 00 01 11
0 1 1 1 0 01 11 11
0 1 ? 1 1 10 11 11
0 1 1 0 1 01 10 11
0 0 1 0 0 00 11 11
0 0 0 1 0 00 01 11
0 0 0 0 1 00 01 10
이하에서는 도 2에 제시된 간단한 예를 통해 압축 버퍼(100), 타이머부(200), 프로그램 카운터 계산부(310), 메모리 주소 계산부(330)및 명령어 선택로직(430)의 동작을 설명한다. 표에서 메모리에 저장된 명령어의 표기는 명령어의 내용을 알파벳으로 표시하고, 그에 대응되는 압축 코드는 첨자로 표기하였다. 명령어 중 N 은 NOP(No OPeration)를 말한다.
본 실시예에 있어서, 명령어 조합부(400)는 압축정보와 명령어를 입력받아 명령어를 복원한다. 명령어는 명령어 메모리로부터 플립플롭을 거쳐서 명령어 조합부(400)로 입력된다. 압축 정보는 압축 버퍼에서 출력된 값이 다시 플립플롭을 거쳐 입력된다. 따라서 명령어는 명령어 메모리에서 한 싸이클 지연되어 입력되고, 압축 정보는 두 싸이클 지연되어 입력된다.
명령어 메모리의 0~2번지에는 {a, NOP, NOP}의 명령어가 저장되어 있다. 이들은 압축 정보로 {01,01,01}의 값을 포함하고 있다. 압축 버퍼는 {00,00,01} 의 값을 갖고 있다. 이때 명령어 조합부(400)내의 명령어 버퍼는 NOP들로 채워져 있고, 조합부(400) 내의 압축 버퍼에는 {00,01,10} 값이 채워져 있다. 이에 따라 표4에서 보듯이 출력되는 명령어들은 초기 명령어 버퍼에 채워진 NOP 값들로 채워져 있다.
싸이클이 시작되면, 명령어 메모리의 3-5번지에는 {b,c,d}의 명령어들이 채워지고, 압축 버퍼에는{01,01,01}의 값들이 채워진다. 압축 버퍼에 '01'이 3개 있으므로 타이머 값은 '2'가 된다. 명령어 조합부(400)내의 명령어 버퍼에는 이전 싸이클에서 페치된 {a,N,N}의 명령어들이 채워진다. 명령어 조합부(400)내의 압축 버퍼에는 이전 싸이클에서 페치된 {00,00,01}의 압축 코드들이 채워진다. 선택 신호들은 [표 4]에 도시된 바와 같이 조합되고, 이에 따라 출력되는 명령어는 {a,N,N}의 명령어 번들이 된다. Next PC는 4가 되며, 메모리 어드레스는 3이 된다.
표 3에서 메모리 주수 중 중간값은 명령에 해당하는 주소값이고, 오른쪽 값은 주소가 입력될 경우 다음 싸이클에서 나올 메모리 값에 해당한다. 즉, 주소가 12이면 메모리에서 출력되는 명령은 {k,l,m}에 해당한다.
NextPC 메모리주소 메모리에서출력되는명령어 압축버퍼 타이머 제2타이머
3 0 0 3 a01 N01 N01 00 00 01 0 0
4 3 3 3 b00 c00 d01 01 01 01 2 0
5 3 3 3 b00 c00 d01 01 01 01 1 2
6 6 3 6 b00 c00 d01 01 01 01 0 1
9 9 6 9 e00 f01 g01 00 00 01 0 0
11 9 9 9 h00 i01 j00 00 01 01 1 0
12 12 9 12 h00 i01 j00 00 01 01 0 1
14 14 12 14 k00 l00 m00 00 01 00 0 0
Next PC 압축 버퍼 IS0 IS1 IS2 복원 결과
3 00 00 00 00 01 10 N N N
4 01 01 01 00 01 10 a N N
5 01 01 01 00 11 11 b N N
6 01 01 01 01 11 11 c N N
9 00 00 01 10 11 11 d N N
11 00 01 01 00 01 10 e f g
12 00 01 01 00 01 11 h i N
14 00 01 00 00 00 00 j N N
14 00 01 00 00 00 00 k m N
다음 싸이클이 시작되면, 타이머 값이 0이 아니므로 명령어 메모리와 압축 버퍼는 변화가 없다. 단지 타이머 값이 1 감소하여 '1'이 된다. 명령어 조합부(400)내의 명령어 버퍼에는 이전 싸이클에서 페치된 {b,c,d}의 명령어들이 채워진다. 명령어 조합부(400)내의 압축 버퍼에는 이전 싸이클에서 페치된 {01,01,01}의 압축 코드들이 채워진다. 명령어 {b}에 대응되는 압축 코드가 '01'이므로 선택 신호들은 [표 4]에 도시된 바와 같이 조합되고, 이에 따라 출력되는 명령어는 {b,N,N}의 명령어 번들이 된다. Next PC는 5가 되며, 새로운 메모리 액세스가 없으므로 메모리 어드레스는 3이 유지된다.
다음 싸이클이 시작되면, 명령어 메모리와 압축 버퍼는 변화가 없다. 단지 타이머 값이 1 감소하여 '0'이 된다. 명령어 조합부(400)내의 명령어 버퍼와 압축 버퍼에도 변화가 없다. 명령어 {c}에 대응되는 압축 코드가 '01'이므로 선택 신호들은 [표 4]에 도시된 바와 같이 조합되고, 이에 따라 출력되는 명령어는 {c,N,N}의 명령어 번들이 된다. Next PC는 6이 되며, 새로운 메모리 액세스가 필요하므로 메모리 어드레스는 6이 된다.
다음 싸이클이 시작되면, 명령어 메모리의 6-8번지에는 {e,f,g}의 명령어들이 채워지고, 압축 버퍼에는{00,00,01}의 값들이 채워진다. 압축 버퍼에 '01'이 1개 있으므로 타이머 값은 '0'이 된다. 명령어 조합부(400)내의 명령어 버퍼에는 이전 싸이클에서 페치된 {b,c,d}의 명령어들이 유지된다. 명령어 조합부(400)내의 압축 버퍼에도 이전 싸이클에서 페치된 {01,01,01}의 압축 코드들이 유지된다. 이에 따라 선택 신호들은 [표 4]에 도시된 바와 같이 조합되고, 출력되는 명령어는 {d,N,N}의 명령어 번들이 된다. Next PC는 9이 되며, 새로운 메모리 액세스가 필요하므로 메모리 어드레스도 9가 된다.
다음 싸이클이 시작되면, 명령어 메모리의 6-8번지에는 {h,i,j}의 명령어들이 채워지고, 압축 버퍼에는{00,01,01}의 값들이 채워진다. 압축 버퍼에 '01'이 2개 있으므로 타이머 값은 '1'이 된다. 명령어 조합부(400)내의 명령어 버퍼에는 이전 싸이클에서 페치된 {e,f,g}의 명령어들이 로딩된다. 명령어 조합부(400)내의 압축 버퍼에도 이전 싸이클에서 페치된 {00,00,01}의 압축 코드들이 로딩된다. 이에 따라 선택 신호들은 [표 4]에 도시된 바와 같이 조합되고, 출력되는 명령어는 {e,f,g}의 명령어 번들이 된다. Next PC는 2가 증가하여 11이 되며, 새로운 메모리 액세스가 필요하므로 메모리 어드레스는 6이 된다. 이후 과정도 유사하게 진행된다.
이상에서 본 발명은 바람직한 실시예들을 통하여 상세히 설명되었다. 그러나 본 발명은 제시된 실시예들에 한정되는 것은 아니며, 당업자라면 누구나 용이하게 도달할 수 있는 자명한 변형예들을 포괄하도록 의도된 첨부된 특허청구범위에 의해서야만 해석되어야 한다.
도 1은 본 발명의 바람직한 일 실시예에 따른 프로세서 및 프로그램이 저장된 메모리의 개략적인 구성을 도시한 블럭도이다.
도 2는 일 실시예에 따른 메모리에 저장된 명령어 및 압축 코드들의 값의 일 예를 도시한다.
도 3는 도 1에 도시된 실시예에 있어서 타이머부(200)의 일 예의 개략적인 구성을 도시한다.
도 4는 바람직한 일 실시예에 있어서, 압축 코드의 값에 따른 타이머(230)의 출력 값을 나타낸다.
도 5a는 바람직한 일 실시예에 있어서, 타이머(230)의 값이 1인 경우의 프로그램 카운터의 값을 계산하는 방법을 설명하는 흐름도이다.
도 5b는 바람직한 일 실시예에 있어서, 타이머(230)의 값이 0인 경우의 프로그램 카운터의 값을 계산하는 방법을 설명하는 흐름도이다.
도 6은 도 1에 도시된 실시예에 있어서 메모리 주소 계산부(330)의 일 예의 개략적인 구성을 도시한 블럭도이다.
도 7은 도 1에 도시된 실시예에 있어서 명령어 조합부(400)의 일 예의 개략적인 구성을 도시한 블럭도이다.

Claims (11)

  1. 프로세서가 프로그램 메모리에서 압축된 명령어들을 페치(fetch)하여 병렬 처리될 일련의 명령어들로 구성된 명령어 번들을 생성하는 명령어 번들 생성 방법에 있어서, 현재 싸이클에서 페치한 압축된 적어도 하나의 명령어로부터 이전 싸이클에서 페치한 압축 코드를 이용해 명령어 번들로 복원하되,
    페치한 명령 중 하나가 조건부 분기 명령일 경우 제 1 조건이 만족되면 실행될 명령어 번들은 상기 조건부 분기 명령과 대응되며 함께 페치된 압축 코드를 이용하여 복원하고, 제 2 조건이 만족되면 실행될 명령어 번들은 상기 조건부 분기 명령 자체에 포함된 압축 코드를 이용하여 복원하는 프로세서의 명령어 번들 복원 방법.
  2. 제 1 항에 있어서, 복원된 명령어 번들은 현재 싸이클에서 페치(fetch)한 압축된 적어도 하나의 명령어 및 적어도 하나의 NOP 명령어를 포함하는 프로세서의 명령어 번들 복원 방법.
  3. 제 1 항에 있어서, 상기 방법은 :
    a) m 개의 명령어들 및 그 명령어 각각에 대응하는 압축 코드를 페치하는 단계;
    b) 그 m 개의 압축 코드들을 다음 싸이클의 처리를 위해 임시로 저장하는 단계;
    c) 이전 싸이클에서 임시로 저장된 압축 코드를 이용해 상기 m 개의 명령어들로부터 1개 이상의 명령어 번들을 복원하는 단계;
    를 포함하는 프로세서의 명령어 번들 복원 방법.
  4. 삭제
  5. 제 1 항에 있어서, 상기 방법은 :
    함수를 실행한 후 호출 루틴으로 리턴할 때, 함수 호출시 저장된 압축 코드를 이용하여 그 다음 수행할 명령어 번들을 복원하는 프로세서의 명령어 번들 복원 방법.
  6. 명령어 번들에 포함된 개별 명령어들을 내부 처리 블럭들에서 병렬 처리하는 프로세서에 있어서,
    프로그램 메모리에서 읽어낸 압축 코드를 버퍼링하는 압축 버퍼(compression bufer)와;
    상기 압축 버퍼에 저장된 이전의 압축 코드에 따라 그 프로그램 메모리에서 현재 페치(fetch)한 압축된 명령어들을 복원하여 출력하는 명령어 복원부;를 포함하고,
    상기 명령어 복원부가 :
    상기 압축 버퍼에서 읽어낸 압축 코드들의 값에 따라 출력 값이 결정되는 타이머부와;
    상기 압축 버퍼에서 읽어낸 압축 코드들의 값 및 상기 타이머부의 출력에 따라 프로그램 메모리로부터 명령어들을 읽어낼 주소 값 및 프로그램 카운터 값을 계산하여 출력하는 액세스 제어부;
    상기 액세스 제어부에서 출력되는 주소 값이 지정하는 주소의 압축된 명령어들을 상기 타이머부의 출력 및 상기 압축 버퍼에 저장된 이전의 압축 코드를 이용해 복원함으로써 명령어 번들을 생성하여 출력하는 명령어 복원부;를 포함하고,
    상기 타이머부는 :
    상기 압축 버퍼에서 읽어낸 압축 코드들의 값을 조합하여 초기값을 설정하는 초기화부와, 상기 초기화 회로의 입력 값에 의해 초기화되고, 내부 클럭에 의해 다운 카운트하는 타이머를 포함하는 제 1 타이머;
    상기 제 1 타이머의 값을 입력받아 클럭에 동기화하여 저장하는 제 2 타이머;를 포함하는 프로세서.
  7. 삭제
  8. 삭제
  9. 제 6 항에 있어서, 상기 액세스 제어부는 :
    상기 타이머부의 출력 값 및 상기 압축 버퍼에서 읽어낸 압축 코드들의 값에 따라 프로그램 카운터 값을 계산하는 프로그램 카운터 계산부;
    상기 타이머부의 출력 값 및 상기 압축 버퍼에서 읽어낸 압축 코드들의 값에 따라 메모리 액세스를 위한 주소 값을 계산하는 메모리 주소 계산부;를 포함하는 프로세서.
  10. 제 6 항에 있어서, 상기 압축 버퍼는 :
    프로그램 메모리에서 읽어낸 압축 코드를 저장하는 제 1 압축 버퍼와;
    조건부 분기 명령 자체에 포함된 압축 코드를 추출하여 저장하는 제 2 압축 버퍼;
    를 포함하는 프로세서.
  11. 제 6 항에 있어서, 상기 압축 버퍼는 :
    프로그램 메모리에서 읽어낸 압축 코드를 저장하는 제 1 압축 버퍼와;
    함수 호출 시에, 리턴할 때 실행될 명령어에 대응하는 압축 코드를 저장하는 제 3 압축 버퍼;
    를 포함하는 프로세서.
KR1020080098348A 2008-10-07 2008-10-07 프로세서 및 그 명령어 번들 복원 방법 KR101545701B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020080098348A KR101545701B1 (ko) 2008-10-07 2008-10-07 프로세서 및 그 명령어 번들 복원 방법
CN200910133577.9A CN101714076B (zh) 2008-10-07 2009-04-16 对指令束进行解压缩的处理器和方法
US12/467,536 US8051274B2 (en) 2008-10-07 2009-05-18 Processor and method of decompressing instruction bundle
EP09164747A EP2175363A1 (en) 2008-10-07 2009-07-07 Processor and method of decompressing instruction bundle

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080098348A KR101545701B1 (ko) 2008-10-07 2008-10-07 프로세서 및 그 명령어 번들 복원 방법

Publications (2)

Publication Number Publication Date
KR20100039121A KR20100039121A (ko) 2010-04-15
KR101545701B1 true KR101545701B1 (ko) 2015-08-19

Family

ID=41017128

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080098348A KR101545701B1 (ko) 2008-10-07 2008-10-07 프로세서 및 그 명령어 번들 복원 방법

Country Status (4)

Country Link
US (1) US8051274B2 (ko)
EP (1) EP2175363A1 (ko)
KR (1) KR101545701B1 (ko)
CN (1) CN101714076B (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101603751B1 (ko) * 2010-02-18 2016-03-16 삼성전자주식회사 명령어 병렬 처리 컴퓨터를 위한 명령어 압축 장치 및 방법
WO2012052336A2 (en) * 2010-10-22 2012-04-26 St-Ericsson Sa Methods and devices for reducing compressed page loading time on page fault
US20120254592A1 (en) * 2011-04-01 2012-10-04 Jesus Corbal San Adrian Systems, apparatuses, and methods for expanding a memory source into a destination register and compressing a source register into a destination memory location
KR101738938B1 (ko) * 2011-09-08 2017-05-23 삼성전자주식회사 명령어 압축 장치, 명령어 압축 방법 및 컴퓨터로 읽을 수 있는 저장 매체
CN103729315B (zh) * 2012-10-15 2016-12-21 华为技术有限公司 一种地址压缩、解压缩的方法、压缩器和解压缩器

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0843848B1 (en) * 1996-05-15 2004-04-07 Koninklijke Philips Electronics N.V. Vliw processor which processes compressed instruction format
US5870576A (en) * 1996-12-16 1999-02-09 Hewlett-Packard Company Method and apparatus for storing and expanding variable-length program instructions upon detection of a miss condition within an instruction cache containing pointers to compressed instructions for wide instruction word processor architectures
US5819058A (en) * 1997-02-28 1998-10-06 Vm Labs, Inc. Instruction compression and decompression system and method for a processor
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
US6317820B1 (en) 1998-06-05 2001-11-13 Texas Instruments Incorporated Dual-mode VLIW architecture providing a software-controlled varying mix of instruction-level and task-level parallelism
US6249861B1 (en) * 1998-12-03 2001-06-19 Sun Microsystems, Inc. Instruction fetch unit aligner for a non-power of two size VLIW instruction
EP1530755B1 (en) 2002-08-16 2019-11-06 Intel Corporation Apparatus, method, and compiler enabling processing of variable length isntructions in a very long instruction word processor
KR100592106B1 (ko) 2005-04-12 2006-06-21 엠텍비젼 주식회사 개별 메모리 접근 허용 방법 및 장치
JP4404373B2 (ja) 2007-07-19 2010-01-27 株式会社日立製作所 半導体集積回路

Also Published As

Publication number Publication date
US8051274B2 (en) 2011-11-01
CN101714076B (zh) 2015-05-13
KR20100039121A (ko) 2010-04-15
EP2175363A1 (en) 2010-04-14
US20100088536A1 (en) 2010-04-08
CN101714076A (zh) 2010-05-26

Similar Documents

Publication Publication Date Title
US11609862B2 (en) Method and apparatus to sort a vector for a bitonic sorting algorithm
US11429387B2 (en) Streaming engine with stream metadata saving for context switching
US6480938B2 (en) Efficient I-cache structure to support instructions crossing line boundaries
US6269439B1 (en) Signal processor having pipeline processing that supresses the deterioration of processing efficiency and method of the same
EP2519874B1 (en) Branching processing method and system
US7437537B2 (en) Methods and apparatus for predicting unaligned memory access
US6178498B1 (en) Storing predicted branch target address in different storage according to importance hint in branch prediction instruction
CN104731719B (zh) 一种缓存系统和方法
US11550575B2 (en) Method and apparatus for vector sorting
CN104657110B (zh) 具有固定数量的可变长度指令的指令高速缓存器
EP3482290A1 (en) Data processing apparatus having streaming engine with read and read/advance operand coding
KR101545701B1 (ko) 프로세서 및 그 명령어 번들 복원 방법
US6851033B2 (en) Memory access prediction in a data processing apparatus
US11567776B2 (en) Branch density detection for prefetcher
KR100431975B1 (ko) 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템
US20230004391A1 (en) Streaming engine with stream metadata saving for context switching
US8631173B2 (en) Semiconductor device
US11995447B2 (en) Quick predictor override and update by a BTAC
US6119220A (en) Method of and apparatus for supplying multiple instruction strings whose addresses are discontinued by branch instructions
US8065505B2 (en) Stall-free pipelined cache for statically scheduled and dispatched execution
EP0415351A2 (en) Data processor for processing instruction after conditional branch instruction at high speed
US12032966B2 (en) Reducing overhead in processor array searching
JP5480793B2 (ja) プログラマブルコントローラ
US7200739B2 (en) Generation of modified command sequence from original command by feeding back for subsequent modification based on decode control signal
JPWO2007094256A1 (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
FPAY Annual fee payment

Payment date: 20190730

Year of fee payment: 5