KR100248440B1 - 프로세서 - Google Patents

프로세서 Download PDF

Info

Publication number
KR100248440B1
KR100248440B1 KR1019960023753A KR19960023753A KR100248440B1 KR 100248440 B1 KR100248440 B1 KR 100248440B1 KR 1019960023753 A KR1019960023753 A KR 1019960023753A KR 19960023753 A KR19960023753 A KR 19960023753A KR 100248440 B1 KR100248440 B1 KR 100248440B1
Authority
KR
South Korea
Prior art keywords
instruction
cache memory
processor
cache
stored
Prior art date
Application number
KR1019960023753A
Other languages
English (en)
Other versions
KR970002618A (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 KR970002618A publication Critical patent/KR970002618A/ko
Application granted granted Critical
Publication of KR100248440B1 publication Critical patent/KR100248440B1/ko

Links

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
    • 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
    • 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
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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

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)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

퍼스널 컴퓨터등의 정보처리 장치에 사용되는 프로세서, 코프로세서 및 그들을 사용한 확장보드 등에 관한 것으로서, 저가격이고 고속처리 가능한 VLIW 프로세서를 제공하기 위해, 단일의 프로그램 카운터에 의해 처리의 실행순서가 제어되는 병렬로 동작가능한 여러개의 처리유닛, 여러개의 처리유닛이 실행하는 명령을 저장하기 위한 처리유닛 각각에 대응한 여러개의 캐시메모리, 여러개의 캐시메모리에 저장되고 있는 명령의 어드레스정보를 저장하는 태그메모리 및 단일의 프로그램 카운터가 나타내는 어드레스에 의해 지정되는 명령을 외부에서 리드하는 경우에는 명령을 여러개의 처리유닛중의 어느 하나에 대응한 여러개의 명령필드로 분할하고, 각각을 각 처리유닛에 대응한 캐시메모리에 저장하는 저장 제어회로를 구비하는 구성으로 하였다.
이러한 구성으로 하는 것에 의해, 불필요한 코드를 캐시메모리상에거 제거할 수 있고, 캐시의 사용효율을 향상시킬 수 있다.

Description

프로세서
제1도는 병렬성이 높은 처리부분의 1예를 도시한 도면.
제2도는 병렬성이 낮은 처리부분의 1예를 도시한 도면.
제3도는 제1도에 대응한 VLIW 명령의 1예를 도시한 도면.
제4도는 제2도에 대응한 VLIW 명령의 1예를 도시한 도면.
제5도는 본 발명에 있어서의 캐시메모리 주변의 구성예를 도시한 도면.
제6도는 본 발명에 있어서의 명령압축예를 도시한 도면.
제7도는 본 발명에 있어서의 프로그램 카운터의 1예를 도시한 도면.
제8도는 캐시메모리의 구성예를 도시한 도면.
제9도는 캐시메모리의 태그부분의 구성예를 도시한 도면.
제10도는 캐시메모리의 동작흐름(전체)을 도시한 도면.
제11도는 태그메모리 및 히트판정회로의 구성예를 도시한 도면.
제12도는 클러스터A의 캐시메모리의 구성예를 도시한 도면.
제13도는 클러스터B-D의 캐시메모리의 구성예를 도시한 도면.
제14도는 클러스터A의 셀렉터용 제어신호의 예를 도시한 표.
제15도는 클러스터B-D의 셀력터용 제어신호의 예를 도시한 표.
본 발명은 퍼스널 컴퓨터등의 정보처리 장치에 사용되는 프로세서, 코프로세서 및 그들을 사용한 확장보드 등에 관한 것이다.
프로세서의 아키텍쳐 동향으로서, 축소명령세트 컴퓨터(Reduced Instruction sets computer, 이하 RISC라 한다)가 주류로 되고 있다.
복잡한 명령을 갖지 않는다는 특징 이외에 명령길이를 일정하게 한다는 특징도 갖는다. 명령이 단순하므로 처리를 고속으로 실행할 수 있는 것과 명령길이가 일정하므로 1회의 메모리액세스로 명령을 리드할 수 있는 것등에 의해 고속처리가 가능하게 되고 있다.
RISC프로세서의 처리성능을 더욱 향상시키는 수단으로서, 현재는 수퍼 스칼라 방식이 주류로 되고 있다. 수퍼 스칼라 방식은 프로세서 내부에 있는 여러개의 연산유닛의 스케쥴링을 하드웨어에 의해 실행시에 동적으로 실행하는 것이다. 이 방법은 종래의 소프트웨어 자산을 그대로 이용할 수 있다는 장점이 있는 반면, 스케쥴링을 위한 하드웨어가 필요하고 또한 실행시에 스케쥴링을 실행하므로 스케쥴링에 사용할 수 있는 정보가 최고 적고 그다지 높은 병렬성을 유도해낼 수 없다는 단점이 있다.
한편, 수퍼 스칼라 방식보다 높은 성능을 달성하는 것을 목적으로 한 방식으로서 Very Long Instruction Word(이하, VLIW라 한다)방식이 있다. 이것은 프로세서내부에 있는 여러개의 연산유닛의 스케쥴링을 컴파일시에 소프트웨어에 의해 정적으로 실행하고, 병렬실행 가능한 명령군을 하나의 명령으로 일괄해 두고 프로세서의 프로그램 실행시에 하나로 일괄한 명령을 한번에 리드해서 실행하는 방식이다. VLIW방식에서는 스케쥴링을 위한 하드웨어가 불필요하고 또한 스케쥴링시에 많은 정보를 사용할 수 있으므로, 병렬성을 유도해내기 쉽다는 등의 장점이 있다. 그러나, VLIW방식에서는 여러개의 명령을 일괄하기 때문에 명령길이가 커진다는 문제점이 발생한다.
수퍼 스칼라방식과 VLIW방식에 대해서는 "VLIW : The wave of the Future?" MICROPROCESSOR REPORT, P18-21, February 14, 1994에 소개되어 있다.
일반적으로 프로그램에는 병렬성이 높은 부분과 병렬성이 낮은 부분이 존재한다. 각각에 대해서 간단한 예를 제1도, 제2도를 사용해서 설명한다. 이들 도면에 있어서, 각행은 하나의 처리를 나타내고 있다. 예를 들면, 제1도의 1행째의 처리(800a)는 변수XO의 내용에 1을 가산해서 그 결과를 변수YO에 대입하는 것을 나타내고 있다. 이들의 처리는 통상 위에서부터 1행씩 순차적으로 실행되는 것이다.
제1도는 병렬성이 높은 부분의 예이다. 이 부분에서는 각각의 처리가 서로 독립되어 있으므로, 각 처리를 병렬로 실행할 수 있다. 예를 들면, 2행째의 처리(800b)가 사용하는 변수X1의 값은 1행째의 처리(800a)를 실행하기 전에 결정되어 있으므로, 1행째의 처리(800a)와 2행째의 처리(800b)는 병렬로 실행할 수 있다.
한편, 제2도는 병렬성이 낮은 프로그램의 예이다. 이 부분에서는 각 처리에 필요한 값이 직전의 처리에 의해 연산되므로, 직전의 처리가 종료될 때까지 다음의 처리를 실행할 수 없다. 예를 들면, 2행째의 처리(810b)가 사용하는 변수 X1의 값은 1행째의 처리(810a)를 실행한 후가 아니면 구해지지 않으므로, 1행째의 처리(810a)가 종료하기 전에 2행째의 처리(810b)를 실행하는 것은 통상 불가능하다.
제3도, 제4도에는 제1도, 제2도의 프로그램을 4개의 처리를 동시에 실행할 수 있는 VLIW방식의 명령(이하, VLIW명령이라 한다)으로 변환한 예를 도시한다. 이들의 도면에서는 횡1열이 하나의 VLIW명령에 상당하고 있다. 이들은 시간과 함께 위에서 아래로 실행되는 것으로 한다. 제3도는 병렬성이 높은 처리(제1도)를 변환한 것이다. 이부분에서는 1명령으로 4개의 처리를 동시에 실행하는 것에 의해, 단일의 처리유닛밖에 갖고 있지 않는 종래의 프로세서에 대해서 4배의 성능을 실현할 수 있다.
한편, 제4도는 병렬성이 낮은 처리(제2도)를 변환한 것이다. 이 경우에는 동시에 1개의 처리밖에 실행할 수 없으므로 4개의 처리를 동시에 실행할 수 있는 VLIW방식을 채용한 프로세서(이하, VLIW프로세서라 한다.) 라도 단일의 처리유닛밖에 갖고 있지 않은 프로세서와 동일한 성능밖에 달성할 수 없다. 또, 실행해야할 처리가 존재하지 않는 부분에서도 명령길이를 일정하게 해야 하기 때문에 처리가 존재하지 않는 것을 나타내고 무처리명령(이하, No Operation을 줄여서 NOP라 한다)을 삽입할 필요가 있으로, 명령의 사이즈는 처리의 내용에 비해 커진다.
일반적인 프로그램을 VLIW프로세서로 실행하고자 하면, NOP의 비율은 매우 높은 것으로 된다. 그 때문에, VLIW 프로세서를 사용하는 정보치러장치(이하 VLIW시스템이라 한다)의 주기억 또는 VLIW 프로세서내부의 명령용 캐시메모리(이하, 캐시메모리라 한다)의 대부분을 NOP가 차지해서 쓸모없게 되거나 또는 캐시메모리 용량이 커지거나 하므로, VLIW프로세서의 성능이 기대만큼 향상하지 않거나 VLIW시스템의 고가격화나 VLIW프로세서의 칩비대화, 고가격화를 초래한다는 과제가 발생하고 있다.
VLIW프로세서의 이 과제에 관해서는 「실행지연에 따른 재구성 VLIW형 계산기의 기본구성」정보처리학의 연구보고, 계산기 아키텍쳐, No.89-13, pp.87-93, 1991. 7. 19, 정보처리학회에 기재되어 있다.
VLIW시스템의 주기억에 대해서는 NOP를 주기억상에 배치하지 않는 것에 의해, 유효활용이 가능하다. 주기억상에 NOP를 삭제하는 것에 의해 메모리용량을 절약하고 있는 예로서는 「A VLIW Architecture for a Trace Scheduling Compiler」 IEEE, TRANSACTION ON COMPUTERS, VOL 37, No8, pp.967~979, AUGUST 1988」에 간단한 설명이 있다.
또, VLIW 포로세서내부의 캐시메모리의 용량을 감소시키기 위해, 명령을 압축해서 기억하고 캐시에서 리드한 후에 신장하는 방식이 있다.
이것에 대해서는 「Philips Hopes to Displace DSPs with VLIW」「MICROPROCESSOR REPORT」 pp. 12~15, December 5, 1994, Micro Design Resources」에 간단한 설명이 있다.
주기억상에서 NOP를 삭제하는 방식에서는 VILW프로세서내부의 캐시메모리의 용량은 변하지 않으므로, 프로세서의 저가격화 또는 고성능화는 불가능하게 된다.
또, 프로세서내의 캐시메모리에 명령을 저장할 때에 압축하고, 리드할 때에 신장해서 실행하는 방식에서는 일반적으로 명령의 실행파이프라인 중에 신장처리의 스테이지가 삽입되고 스테이자기 깊게 되어 분기시의 손실이 크게 된다는 문제가 발생한다.
즉, 프로세서칩 내부의 배선지연의 영향등도 고려하면, 명령의 신장처리에 의해 1~2사이클 소비되어 버리므로, 명령의 실행파이프라인 스테이지가 1~2단 연장되어 버린다. 명령이 순서 바르게 실행되고 있는 경우에는 이것은 문제로 되지 않는 경우가많지만 분기명령등에 의해 명령이 실행순서가 변화한 경우에는 전혀 명령을 실행할 수 없는 기간이 발생해 버린다. 일반적으로 이 기간은 실행파이프라인의 깊은 만큼 길어진다.
또, VLIW프로세서와 같이 여러개의 명령을 병렬로 실행하는 프로세서에서는 이것은 보다 큰 문제가 된다. 가령, 전혀 명령을 실행할 수 없는 기간이 2사이클 있다고 가정하면, 단일명령밖에 실행할 수 없는 종래의 프로세서에서는 최악의 경우라도 2개의 처리를 실행할 수 없는 종래의 프로세서에서는 최악의 경우라도 2개의 처리를 실행할 수 없을 뿐이다. 그러나, 4명령을 동시에 실행할 수 있는 VLIW프로세서에서는 최악의 경우에서는 8개의 처리를 실행할 수 없게 된다. 병렬로 실행할 수 있는 처리의 수가 많아짐에 따라 이 손실은 커진다.
또, 캐시메모리가 작아지는 대신에 명령을 신장하는 하드웨어가 필요로 된다는 문제도 있다.
따라서, 본 발명의 목적은 저가격이고 고속처리 가능한 VLIW프로세서를 제공하는 것이다.
본 발명의 구체적인 목적은 캐시메모리의 사용효율을 향상시키는 것에 의해, 캐시메모리의 용량을 감소시켜서 칩사이즈를 작게 한 저가격인 VLIW프로세서를 제공하는 것이다.
또, 본 발명의 목적은 VLIW프로세서에 적합한 캐시메모리의 구성방법을 제공한 것이다.
또, 본 발명의 다른 목적은 상기 VLIW프로세서에 있어서 파이프라인을 깊게 하는 일없이 고속처리 가능한 VLIW프로세서를 제공하는 것이다.
상기 목적을 해결하기 위해, 본 발명의 프로세서는 단일의 프로그램카운터에 의해 처리의 실행순서가 제어되는 병렬로 동작가능한 여러개의 처리유닛, 상기 여러개의 처리유닛이 실행하는 명령을 저장하기 위한 상기 처리유닛 각각에 대응한 여러개의 캐시메모리, 상기 여러개의 캐시메모리에 저장되어 있는 명령의 어드레스정보를 저장하는 태크메모리 및 상기 단일의 프로그램 카운터가 나타내는 어드레스에 의해 지정되는 명령을 외부로 부터 리드하는 경우에는 상기 명령을 상기 여러개의 처리유닛중의 어느 하나에 대응한 여러개의 명령필드로 분할하고 각각을 상기 각 처리유닛에 대응한 캐시메모리에 저장하는 저장제어회로를 구비한 것이다.
본 발명에 의하면 캐시메모리의 용량을 감소시킨 경우라도 캐시메모리에서 리드한 명령은 신장처리를 실행하는 일없이 실행되므로, 명령의 실행파이프라인을 짧게 할 수 있고 분기명령 실행시에 손실을 작게 할 수 있다.
또, NOP의 발생빈도를 처리유닛마다 다르게 하고 또 NOP를 캐시메모리내에 기억시키지 않는다. 따라서, 캐시메모리의 용량을 NOP이외의 명령의 발생빈도에 따라 실정할 수 있으므로, 캐시메모리의 사용효율을 향상시킬 수 있다. 이 결과, 동일한 칩면적에서 더욱 높은 처리성능을 달성할 수 있게 된다.
이상, 기술한 바와 같이 본 발명에 의하면 컴파일러에 의해 특정의 클러스터에 NOP이외의 명령이 우선적으로 할당되고 또 그것을 이용해서 캐시메모리의 용량을 클러스터마다 변경하고 있으므로, 캐시메모리의 이용효율이 향상된다. 그 결과, 동일한 성능을 실현하기 위해 필요한 캐시메모리의 용량을 작게할 수 있게 되어 저가격화에 효과가 있다.
또, 캐시메모리에서 리드된 명령은 처리유닛에 들어갈 때까지의 통과회로수를 저감할 수 있으므로, 명령파이프라인을 짧게 할 수 있다. 따라서, 분기명령실행시에 손실을 작게 할 수 있고 고속화가 가능하게 된다.
또, 캐시메모리가 작게 되는 것에 의해 각 연산유닛 부근에 캐시메모리를 배치할 수 있으므로, 배선을 위한 영역을 작게 할 수 있다. 동작속도의 향상에도 효과가 있다.
따라서, 저가격이고 고속처리 가능한 VLIW프로세서를 실현할 수 있다.
본 발명에 의한 프로세서의 구성을 제5도~제9도를 사용해서 설명한다.
제5도는 프로세서(1)의 구성예와 그것을 사용하는 정보처리장치의 주기억(5)의 접속예를 도시한 블럭도이다. (5)는 프로세서(1)이 실행하는 명령이나 실행에 필요한 데이타를 저장하기 위한 주기억으로서, 프로세서(1)의 외부에 있다. 프로세서(1)과 주기억(5)의 접속버스는 32비트폭으로 한다. (10a)~(10d)는 프로세서(1)의 주요부분을 이루는 클러스터이고, 각각 명령을 저장하기 위한 명령 캐시메모리(이하, 캐시메모리라 한다)(100), 연산등의 처리를 실행하는 처리유닛(110), 처리유닛(110)이 실행하는 명령을 선택하기 위한 셀렉터(120)으로 구성된다. 각 클러스터에 있는 각각의 구성요소는 캐시메모리(100a)(클러스터A에 있는 캐시메모리)와 같이 a~d의 침자를 붙여서 나타낸다. 본 실시예에서는 동시에 4개의 명령을 실행할 수 있는 VLIW프로세서를 상정하고 있고 클러스터는 A~D의 4개이다.
(20)은 캐시제어회로로서, 실행하는 명령이 캐시메모리(100a)~(100d)에 저장되어 있는지 저장되어 있지 않은지를 판정하는 히트판정회로(220), 주기억(5)에서 명령을 리드하고 캐시메모리(100a)~(100d)에 저장하는 필제어회로(210), 캐시메모리(100a)~(100d)에 저장되어 있는 명령에 관련된 정보를 저장해 두는 태그메모리(200)등으로 구성되어 있다.
(40)은 프로세서(1)전체의 동작을 제어하는 글로별 컨트롤러로서 내부에는 프로그램 카운터(30)이 있다. 프로그램 카운터(30)은 다음에 실행하는 명령의 캐시메모리상에서의 바이트 어드레스를 가리키고 있는 포인터로서, 명령을 실행할 때마다 갱신된다. 캐시메모리(100)상의 명령에 대한 액세스에는 프로그램 카운터(30)의 값이 그대로 사용된다.
글로별 컨트롤러(40)과 필제어회로(210)는 내부에 시퀸서를 갖고 시퀀서의 제어에 의해 동작한다.
제6도는 VLIW명령의 구성을 도시한 도면이다.
(700)은 병렬처리의 스케쥴링이 실행된 시점의 VLIW명령으로 클러스터(10a)~(10d)에 1대1로 대응하는 4개의 명령필드(701)로 구성되어 있다. 명령필드N(N≥0)~a~d는 각각 처리유닛(10a)~(10d)으로 사용되는 명령필드이다. 본 실시예에서는 1필드의 크기는 32비트(4바이트)로 한다. (710)은 NOP에 상당하는 명령필드를 삭제해서 압축된 명령제어가 주기억(5)에 저장되어 있는 상태를 나타낸다.
(702)는 각 명령내의 명령필드가 NOP인지 아닌지를 나타내는 플래그의 집합으로서 마스크정보라 한다. 마스크정보(702)는 각 VLIW명령마다 마련되고 각각 4개의 클러스터에 대응하는 4비트구성으로 되어 있다. 이것은 실행시에 NOP를 다시 삽입할 수 있도록 하기 위한 것이다. 또한, 클러스터A에 대응하는 명령필드N-a는 NOP라도 삭제하지 않는다. 이것에 대해서는 후술한다. (702)은 상술한 VLIW명령이 프로세서(1)내의 캐시로 리드된 상태를 나타내는 것으로, 상세한 것에 대해서는 후술한다.
제7도는 프로그램 카운터(30)의 구성예를 도시한 도면으로서, 비트폭을 24비트로 하고 3개의 필드로 분할하고 있다. 이 도면에 있어서, (300a)는 캐시메모리의 히트판정시에 후술하는 태그메모리(200)중의 어드레서 태그정보(201)과 비교되는 어드레스 태그부, (300b)는 태그메모리(200)및 캐시메모리(100)의 엔트리를 선택하기 위한 앤트리선택부, (300c)는 각 엔트리내에 있어서의 명령의 오프셋을 나타내는 값으로서, 본 실시예에서는 각각 13비트, 6비트, 3비트의 폭을 갖고 있다. 또한, 본 실시예에서는 명령필드의 사이즈는 32비트로 고정되어 있고 반드시 4바이트경계에 정렬되어 있으므로, 프로그램 카운터(30)의 하위2비트는 향상 0이다.
제8도는 클러스터a~d내의 캐시메모리(100a)~(100d)의 구성, 용량을 도시한 도면이다. 클러스터A의 캐시메모리(100a)의 용량을 4k바이트, 클러스터B-D의 캐시메모리(100b)~(100d)의 용량을 각각 2k바이트로 하고 있다. 캐시메모리(100a)는 2웨어 세트 어소시에이티브방식, 캐시메모리(100b)~(100d)는 1웨어 세트 어소시에이트방식을 채용하고 있고, 각 세트의 용량은 모두 동일하게 2k바이트이다.
캐시메모리(100a)~(100d)각각의 라인사이즈는 명령필드 8개분의 크기(4바이트×8=32바이트)와 동일하다. 캐시(100a)~(100d)는 동일한 64엔트리(2k바이트/32바이트)로 이루어지고, 각 엔트리를 공통의 엔트리어드레스로 지정한다. 본 실시예서는 캐시메모리를 어드레스(512), 리드라이트 데이타폭 4바이트로서 구성한다. 이것은 리드라이트 데이타폭을 라인사이즈에 맞춘 32바이트로 한 경우에, 명령리드사에 8~1개의 셀렉터가 필요하게 되거나 소비전력이 증대하기 때문에 이것을 피하기 위함이다.
제9도는 클러스터(10a)~(10d)에서 공통으로 사용되는 태그메모리(200)의 구성예를 도시한 도면이다. 클러스터A와 대응시킨 2웨어구성으로 되어 있다. 태그메모리(200)에는 64개의 엔트리가 있고, 각 엔트리는 프로그램 카운터(30)의 어드레스 태그부(300a)와 비교하기 위한 13비트의 어드레스 태그정보(201)과 주기억(5)에 저장되어 있는 마스크정보(702)에 상당하는 마스크정보(202)를 저장하는 영역을 각각 2웨이분 갖는다. 또, 캐시내용의 갱신에는 LRU(Least Recently Used)알고리즘을 사용하고, 그 때문에 필요한 엔트리당 1피트의 LRU정보(203)도 갖는다.
마스크정보(202)는 제6도에서 설명한 마스크정보(702)가 8VLIW명령분 저장된 것이다. 제9도에 있어서, inst0~inst7은 리드한 8개의 VLIW명령중 어느 것인지를 나타내고, 각각의 msk(x)는 클러스터x에 대응한 마스크정보이다. 여기에서, x는 A~D중의 어느 하나이다. 클러스터A에 대응한 마스크정보(202a)는 msk(A)로서 그 세트전체가 유효한지 아닌지를 나타내는 정보도 겸하고 있다. 1이면 그 세트는 유효하고 0이면 유효하지 않다.
제11도는 태그메모리(200)및 히트판정회로(220)의 구성을 도시한 도면이다.
제12도는 클러스터A의 구성예를 도시한 도면이다. 셀렉터(120a)는 2웨이구성으로 되어 있는 캐시메모리(100a-0), (100a-1)이 출력하는 2개의 데이타 중에서 필요한 명령을 선택하기 위한 것이다.
제13도는 클러스터B~D의 구성예를 도시한 도면이다. 셀렉터(120b)는 1웨이구성으로 되어 있는 캐시메모리(100b)에서 리드된 데이타와 NOP에 상당하는 명령필드를 대응하는 마스크정보에 따라 선택하기 위한 것이다.
제14도는 제12도에 도시한 셀럭터(120a)가 출력을 선택할 때의 규칙을 도시한 것이다.
제15도는 제13도에 도시한 셀렉터(120b)가 출력을 선택할 때의 규칙을 도시한 것이다.
이하, 프로세서(1)의 동작설명에 앞서 컴파일러에 의한 VLIW명령의 작성에 대해서 설명한다.
일반적으로 컴파일러는 명령열을 생성할 때, 그 자체가 갖는 하드웨어 자원의 할당규칙에 따라서 각 처리유닛에 처리를 할당하고 있다. 본 실시예에서는 컴파일러가 VLIW명령을 생성할 때 프로그램 중에서 병렬도가 적은 부분에 대해서는 클러스터A의 처리유닛(110a)에 대해서 처리를 우선적으로 할당하도록 하드웨어자원의 할당규칙을 갖는다. 또, 병렬도가 높은 부분에서는 각 처리유닛(110)에 대해서 가능한 한 균등하게 처리를 할당하고 높은 처리성능을 달성할 수 있도록 스케쥴링을 실행한다.
이 결과, 제6도의 (700)에 도시한 바와 같이 클러스터A는 다른 클러스터와 비교해서 유효한 처리가 존재할 확률이 높아지고, 반대로 NOP가 존재할 확률이 낮아진다. 이와 같이 하는 것에 의해, 병렬도에 따라 명령코드사이즈, 처리성능을 적절한 값으로 할 수 있다.
다음에, 컴파일러는 제6도의 (710)에 도시한 바와 같이, NOP를 삭제해서 명령의 양을 압축한다. 동시에 압축한 명령을 신장하기 위해 필요한 마스크정보(702)를 작성한다.
마스크정보(702)의 0은 대응하는 명령필드(701)이 NOP인 것을, 1은 NOP이외인 것을 나타낸다. 단, 클러스터A에 대해서는 명령필드의 종류에 관계없이(NOP이어도)마스크정보의 클러스터A 대응부분은 항상 1로 고정한다. 상술한 바와 같이 VLIW명령은 4개의 명령필드로 이루어지므로 마스크정보(702)는 4비트로 구성된다.
또, 본 발명에서는 주기억(5)중에서는 NOP를 삭제하고 있으므로, 프로세서(1)의 프로그램 카운터(30)의 값이 나타내는 캐시메모리(100)상의 어드레스와 주기억(5)중의 명령이 저장되어 있는 어드레스와는 배열이 다르다. 그 때문에, 주기억에 대해 액세스할 때에는 어드레스의 변환을 실행한다.
이것은 일반적으로 프로세서가 가상기억을 실현할 때에 사용하는 페이지테이블과 TLB라 부르는 어드레스 변환버퍼에 의한 어드레스변환기구와 동일한 기술로 실현할 수 있다. 본 발명에서는 컴파일러는 페이지테이블에 상당하는 어드레스변환 테이블을 컴파일시에 주기억상(5)에 작성한다. 이들은 NOP를 삭제하기 전의 명령열(700)과 NOP를 삭제한 명령열(710)의 관계에 의해 작성할 수 있다.
또한, 어드레스 변환버퍼는 도시하고 있지 않지만, 후술하는 바와 같이 필제어회로(210)내에 구성하고 있다. 또, 전원 온시에는 초기화(0클리어)를 실행해 둔다.
상술한 바와 같이, 컴파일러에 의해 클러스터A에 유효한 명령필드가 존재할 확률이 높아져 있으므로, 본 실시예에서는 이들에 대응하기 위해 클러스터A(10a)의 캐시메모리(100a)의 용량을 다른 클러스터의 캐시메모리(100b)~(100d)의 용량과 비교해서 크게 하고 있다. 구체적으로는 캐시메모리(100a)의 연상도를 다른 캐시메모리(100b)~(100d)의 2배로 하고 있다.
계속해서 프로세서(1)이 명령을 실행하는 과정을 도면을 사용해서 설명한다. 제10도는 캐시메모리의 전체동작흐름의 개략을 도시한 도면이다.
프로세서(1)이 프로그램을 실행할 때에는 우선 글로벌 컨틀로러(40)이 프로그램 카운터(30)의 값을 참조해서 처리의 실행에 필요한 명령을 얻기 위해 캐시메모리(10)에 대해 액세스를 실행한다. 이 경우, 우선처음에 히트판정회로(220)이 태그메모리(200)을 액세스하고 캐시메모리(100)에 필요한 명령이 들어 있는지 있지 않은지의 판정, 즉 캐시메모리의 히트판정을 실행한다(스텝 900, 스텝901).
이 결과, 캐시메모리가 히트되어 있었다면 히트판정회로(220)은 태크메모리(200)내의 대응하는 엔트리의 LRU정보(203)을 갱신한다(스텝960). 글로벌 컨트롤러(40)은 히트한 세트에서 명령을 리드하고, 각 처리유닛으로 명령을 공급한다(스텝 970). 각 처리 유닛은 히트신호(400)에 의해 캐시메모리(100)이 히트한 것을 알고 실행을 개시한다.
여기에서, 캐시의 히트판정(900, 910)의 순서를 제11도~제15도를 이용해서 설명한다.
상술한 바와 같이 프로세서(1)이 프로그램을 실행할 때에는 우선 글로벌 컨트롤러(40)은 프로그램 카운터(30)중의 앤트리선택부(300b)의 값을 사용해서, 태그메모리(200)중의 64엔트리 중에서 1개의 엔트리를 선택하고 저장된 어드레스 태그정보(201), 마스크정보(202), LRU정보(203)을 리드한다. 태그메모리(200)은 2웨어구성이므로, 어드레스 태그정보(201), 마스크정보(202)는 2세트분의 정보가 리드된다. 동시에, 글로벌 컨트롤러(40)은 캐시메모리(100)의 동일한 엔트리에 대해서도 액세스한다.
다음에, 히트판정회로(220)은 태그메모리(200)에 리드된 어드레스 태그정보(201)과 프로그램 카운터(30)중의 어드레스 태그부(300a)를 세트마다 비교해서 일치하는지 일치하지 않는지를 조사한다. 또한, 비교하는 폭에 상당한 수(본 실시예에서는 13개)의 EX-NOR 게이트(2200)의 출력이 모두 1이었다면 일치한 것으로 된다.
동시에, 셀렉터(2210)은 프로그램 카운터(30)중의 오프셋(300c)를 사용해서 세트마다 리드된 8VLIW명령분의 마스크정보(202)(inst0~inst7)에서 해당하는 VLIW명령의 마스크정보(202)를 선택한다. 상기 비교결과의 선택한 마스크정보(202)내의 마스크정보(202a)가 모두 1이었다면 AND게이트(2201)에 의해 그 세트는 히트로 한 것으로 되고 hit(set0)(400a)또는 (400b)는 1로 된다.
2개의 세트중에서 어느 한쪽이 히트하고 있으면, OR게이트(2204)에 의해 캐시는 히트로 된다. 또한, 어느 세트가 히트하고 있는가를 정보는 hit(set0)(400a)에 의해 클러스터AFH 전달된다. 또, 캐시가 히트한 경우, 히트한 세트의 마스크정보(202b)~(202d)는 hit(set0)(400a)에 의해 유효하게 되고, (410b)~(410d)에 의해 클러스터B-D로 전달된다.
캐시메모리(100a)~(100d)에는 프로그램 카운터(30)중의 엔트리 선택부(300b)와 오프셋(300c)를 결합한 9비트의 값을 부여된다. 클러스터 A에서는 2개의 세트에서 동시에 명령필드가 리드된다. 셀렉터(120a)는 어떠한 세트가 히트했는지를 나타내는 hit(set0)(400a)에 따라 어느 하나를 선택한다. 선택규칙은 제14도에 도시한 바와 같다.
캐시메모리(100b)~(100d)는 1개의 세트에서 리드된 명령필드와 NOP에 상당하는 처리코드가 셀렉터(120b)~(120d)에 부여된다. 셀렉터(120b)~(120d)는 상기 유효로 된 마스크정보(410b)~(410d)에 따라서 동작한다. 선택규칙은 제15도에 도시한 바와 같다. NOP에 상당하는 처리코드는 미리 결정되어 있으므로 결과논리에 의해 실현할 수 있다.
지금까지 기술한 바와 같이, 캐시메모리(100b)~(100d)에서 리드된 명령은 셀렉터(120b)~(120d)를 1단 통과하는 것만으로 처리유닛에 부여된다. 따라서, 처리클럭수도 적고 파이프라인도 짧게 할 수 있다.
다음에, 캐시메모리가 미스히트한 경우의 동작을 설명한다.
캐시메모리가 미스히트하였다면, 히트판정회로(220)에서 히트신호(400c)에 의해 미스히트한 것이 필제어회로(210)으로 전달되고 필제어회로(210)이 동작을 개시한다. 이때에 캐시메모리(100a)~(100d)에는 프로그램 카운터(30)의 엔트리 선택부(300b)와 오프셋(300c)의 값이 부여되고 내용이 리드되지만, 동시에 히트신호(400c)에 의해 미스히트한 것이 전달되므로, 처리유닛(110a)~(110d)는 정지상태로 되어 문제는 발생하지 않는다.
다음에, 필제어회로(210)은 대체 VLIW명령과 대응하는 마스크정보를 주기억(5)에서 리드하고, 각각 캐시메모리(100a)~(100d)와 테그메모리(200)의 해당엔트리에 저장한다. 이하, 이 동작에 대해서 설명한다.
우선, 캐시메모리중의 해당엔트리에 새로운 명령을 저장할 수 있을 정도의 빈 공간의 있는지 없는지를 조사한다. 태그메모리(200)내의 해당엔트리에 대해서 어느 하나의 세트의 inst0 msk~inst7 msk의 마스크정보 msk(A)를 모두 조사해서 모두 0이면 해당엔트리의 해당세트는 비어 있는 것으로 된다. 빈 영역이 없으면 필제어회로(210)은 해당엔트리 중의 몇개인가의 세트를 무효로 해서 빈 영역을 만든다. 이 작업을 캐시의 무효하라 한다.
무효화를 할때에는 필제어회로(210)은 우선 어느 세트를 무효화할 것인가를 선택하고(스텝920), 그후에 그 엔트리를 무효화한다(스텝930).무효화의 방법은 후술한다.
빈 영역이 있거나 또는 무효화에 의해 빈 영역을 만들었다면, 필제어회로(210)은 결로(454)를 경유해서 태그메모리(200)에 어드레스태그(201)등을 저장하고 새로운 엔트리를 작성하고(스텝940), 그후 스텝(950)에 있어서 필제어회로(210)은 32비트폭의 버스에 맞게 8명령분의 마스크정보(702)를 동시에 리드한다. 필제어회로(210)은 리드한 마스크정보(702)를 태크메모리(200)과 필제어회로(210) 자체에 저장한다. 다음에, 8명령분의 마스크정보에 맞게 VLIW명령(701)도 8명령분을 계속해서 리드한다.
필제어회로(210)은 VLIW명령(701)을 리드할 때 순차 마스크정보(702)를 해석하고 해당하는 캐시메모리의 라이트신호를 발행한다.
주기억(5)로 부터의 명령공급경로의 폭은 명령필드의 크기와 마찬가지로 32비트이므로, 라이트할 대상으로 되는 캐시메모리의 지정은 캐시메모리(100a)~(100d)의 개별의 라이트신호를 제어하는 것만으로 실현할수 있다.
2개의 세트 모두 비어있는 경우 또는 2개의 세트를 무효화해서 비운경우에 어느 세트에 명령을 저장할지는 미리 결정해 두는 것으로 한다.
또, 상술한 바와 같이 NOP명령은 미리 프로세서내에 그 처리코드를 갖고 있어 다시 NOP명령을 저장하는 일은 하지 않는다. 따라서, 각 VLIW명령중에 NOP명령에 상당하는 명령필드가 있으면 필제어회로(210)은 마스크정보에 따라 캐시메모리의 라이트를 실행하지 않는다.
이결과, 8개의 VLIW명령은 각각의 각 명령필드마다 대응하는 클러스터내의 캐세메모리에 최대 8개 저장된다.
또, 본 발명에서는 상술한 바와 같이 주기억(5)중의 명령열(710)에서는 NOP를 삭제하고 있으므로, 프로그램 카운터(30)의 값이 나타내는 캐시메모리상의 어드레스와 주기억(5)중의 명령이 저장되어 있는 어드레스와는 배열이 다르다. 그 때문에, 필제어회로(210)중의 어드레스 변환버퍼와 주기억(5)상의 어드레스변환 테이블을 사용하여 어드레스의 변환을 실행하면서 액세스한다.
필제어회로(210)은 이들의 기구를 사용해서 프로그램 카운터(30)의 값의 어드레스변환을 실행하고, 경로(450)을 거쳐서 주기억(5)에서 변환후의 어드레스가 나타내는 명령을 리드하여 캐시메모리(100)에 저장한다. 또한, (450)에는 변환후의 어드레스 이외에 주기억의 제어신호도 포함된다. 이후의 처리는 히트시의 처리와 동일하다.
또한, 이상의 처리중 몇가지는 병행해서 실행하거나 순서를 바꿀 수 있다. 예를 들면, LRU정보의 갱신(스텝960)과 명령의 공급(스텝970)은 동시에 실행할 수 있다.
다음에, 상술한 무효화할 세트의 선택방법에 대해서 설명한다. 무효화할 세트의 선택(920)은 LRU정보(203)을 사용해서 실행한다. 이것은 어떠한 세트가 최근 사용되었는지를 나타내는 것이다. 히트판정회로(220)은 세트0이 최근 사용되었다면 「0」세트1이 최근 사용되었다면 「1」을 저장한다. 즉, 세트A의 히트신호(400a)의 값을 캐시히트시에 해당엔트리의 LRU정보(203)으로 라이트한다.
구체적인 무효화인 순서로서는 우선 필제어회로(210)은 해당엔트리의 LRU정보(203)이 나타내는 액세스 이력이 오래된 쪽의 캐시메모리의 세트에 새로운 명령을 입력할 수 있는지 입력할 수 없는지를 조사한다. 「새로운 명령의 마스크정보」와「LRU정보(203)이 나타내는 액세스이력이 오래된 쪽의 명령이 마스크정보를 반전한 것」의 각 비트마드의 논리곱이 모두 0으로 되면 새로운 명령을 입력할 수 있다. 그리고, LRU정보(203)이 나타내는 액세스이력이 오래된 쪽의 세트를 무효화한다. 무효화는 태크메모리(200)의 해당엔트리, 해당세트의 마스크정보 즉 inst0~inst7의 msk(A)(202a)를 0으로 하면 좋다.
조사한 결과, 새로운 명령을 입력할 수 없는 경우에는 LRU정보(203)이 나타내는 액세스이력이 새로운 쪽의 세트에 대해서도 동일한지를 조사한다. 입력할 수 있으면 LRU정보(203)이 나타내는 액세스이력이 새로운 쪽의 세트를 무효화 한다. 어느쪽의 세트를 무효화해도 새로운 명령을 입력할 수 없는 경우에는 양쪽의 세트를 무효화한다.
무효화는 필제어회로(210)이 태크메모리(200)중의 선택된 세트의 마스크정보중 inst0 mask~inst7 ask의 클러스터A에 대응하는 msk(A)(202a)를 모두 0으로 설정하는 것에 의해 실행된다. 만약, 어느 하나의 세트밖에 무효화 하지 않는 경우는 그후 바로 새로운 명령을 리드하여 마스크정보를 재설정하므로, 반드시 0으로 설정할 필요는 없다. 또한, 전원 온시에는 마스크정보(202)의 초기화(0클리어)를 실행하고 미리 무효화를 실행해둔다.
또, 상술한 설명에서는 처리유닛(110a)에 유효환 명령이 집중하도록 구성 제어하고 있지만, 물론 이것에 한정되는 것은 아니다.
또, 본 실시에에서는 캐시메모리(100a)의 용량을 다른 캐시메모리의 2배로 하였지만 이것에 한정되는 것은 아니고, 특정의 처리유닛으로의 명령의 집중비율에 맞추어 구성하면 좋다.

Claims (12)

  1. 단일의 프로그램 카운터에 의해 처리의 실행순서가 제어되는 병렬로 동작가능한 여러개의 처리유닛, 상기 여러개의 처리유닛이 실행하는 명령을 저장하기 위한 상기 처리유닛 각각에 대응한 여러개의 캐시메모리, 상기 여러개의 캐시메모리에 저장되어 있는 명령의 어드레스정보를 저장하는 태그메모리 및 상기 단일의 프로그램 카운터가 나타내는 어드레스에 의해 지정되는 명령을 외부에서 리드하는 경우에는 상기 명령을 상기 여러개의 처리유닛중의 어느 하나에 대응한 여러개의 명령필드로 분할하고, 각각을 상기의 각 처리유닛에 대응한 캐시메모리에 저장하는 저장제어회로를 구비해서 이루어지고, 상기 여러개의 캐시메모리 중의 1개의 캐시메모리의 용량은 다른 캐시메모리와는 다른 용량을 구비해서 이루어지는 것을 특징으로 하는 프로세서.
  2. 제1항에 있어서, 상기 여러개의 캐시메모리 중의 1개의 캐시메모리의 용량은 다른 캐시메모리의 N배(N은 2이상의 자연수)의 용량을 구비해서 이루어지는 것을 특징으로 하는 프로세서.
  3. 제2항에 있어서, 상기 N은 2인 것을 특징으로 하는 프로세서.
  4. 제1항, 제2항, 제3항 중의 어느 한항에 있어서, 상기 저장제어회로는 상기 명령을 리드할 때 해당명령이 포함하는 명령필드가 상기 여러개의 처리유닛 중의 어느 것에 대응하는지를 나타내는 저장정보를 리드하고, 해당명령에 대응하는 어드레스정보에 관련시켜 상기 저장정보를 태그메모리에 저장하고, 상기 저장정보에 따라 상기 명령이 포함하는 명령필드를 그것이 실행될 처리유닛에 대응하는 캐시메모리에 저장제어해서 이루어지는 것을 특징으로 하는 프로세서.
  5. 제1항에 있어서, 상기 캐시메모리의 각각의 용량은 그 자체에 저장할 수 있는 상기 명령필드의 저장량에 따른 것인 것을 특징으로 하는 프로세서.
  6. 제1항에 있어서, 상기 캐시메모리의 각각의 용량은 그 자체에 저장할 수 있는 상기 명령필드의 저장량에 따른 연상도를 갖는 것을 특징으로 하는 프로세서.
  7. 제1항에 있어서, 상기 저장정보는 상기 명령에 대해 캐시메모리에 저장되지 않는 명령필드가 포함되는 것을 지정하는 영역을 구비하고, 상기 저장제어회로는 상기 저장정보가 상기 캐시메모리의 저장을 지정하는 명령필드를 저장제어해서 이루어지는 것을 특징으로 하는 프로세서.
  8. 제1항에 있어서, 상기 처리유닛은 상기 캐시메모리에 저장되어 있지 않은 명령필드를 실행하는 기능을 구비하고, 상기 저장정보는 상기 캐시메모리에 저장되어 있지 않은 명령필드에 대해서는 캐시메모리에 저장되어 있지 않은 명령필드인 것을 지정하는 영역을 구비하고, 상기 저장정보가 상기 처리유닛이 실행하는 명령필드가 캐시메모리에 저장되어 있지 않은 것을 나타내는 경우에는 상기 처리유닛은 상기 케시메모리에 저장되어 있지 않은 명령필드를 생성하여 실행해서 이루어지는 것을 특징으로 하는 프로세서.
  9. 단일의 프로그램 카운터에 의해 처리의 실행순서가 제어되는 병렬로 동작가능한 여러개의 처리유닛과 상기 여러개의 처리유닛에 병렬로 명령을 공급할 수 있는 2개 이상의 캐시메모리를 구비해서 이루어지는 것을 특징으로 하는 프로세서.
  10. 제9항에 있어서, 상기 2개 이상의 캐시메모리중 1개는 다른 캐시메모리와 다른 용량을 구비해서 이루어지는 것을 특징으로 하는 프로세서.
  11. 제10항에 있어서, 상기 다른 캐시메모리와는 다른 용량을 갖는 캐시메모리는 다른 캐시메모리의 N배의 용량(N은 2이상의 자연수)를 구비해서 이루어지는 것을 특징으로 하는 프로세서.
  12. 제11항에 있어서, 상기 N은 2인 것을 특징으로 하는 프로세서.
KR1019960023753A 1995-06-28 1996-06-26 프로세서 KR100248440B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP16173895A JP3598589B2 (ja) 1995-06-28 1995-06-28 プロセッサ
JP95-161738 1995-06-28

Publications (2)

Publication Number Publication Date
KR970002618A KR970002618A (ko) 1997-01-28
KR100248440B1 true KR100248440B1 (ko) 2000-03-15

Family

ID=15740952

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019960023753A KR100248440B1 (ko) 1995-06-28 1996-06-26 프로세서

Country Status (4)

Country Link
US (1) US5893143A (ko)
JP (1) JP3598589B2 (ko)
KR (1) KR100248440B1 (ko)
TW (1) TW299421B (ko)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5835941A (en) * 1995-11-17 1998-11-10 Micron Technology Inc. Internally cached static random access memory architecture
JPH1185512A (ja) * 1997-09-03 1999-03-30 Fujitsu Ltd 命令圧縮格納および命令復元機能を有するデータ処理装置
JP2000305781A (ja) * 1999-04-21 2000-11-02 Mitsubishi Electric Corp Vliw方式プロセッサ、コード圧縮装置、コード圧縮方法およびコード圧縮プログラムを記録した媒体
GB2366643B (en) * 2000-05-25 2002-05-01 Siroyan Ltd Methods of compressing instructions for processors
US6581131B2 (en) * 2001-01-09 2003-06-17 Hewlett-Packard Development Company, L.P. Method and apparatus for efficient cache mapping of compressed VLIW instructions
US7415601B2 (en) * 2002-06-28 2008-08-19 Motorola, Inc. Method and apparatus for elimination of prolog and epilog instructions in a vector processor using data validity tags and sink counters
US7140019B2 (en) * 2002-06-28 2006-11-21 Motorola, Inc. Scheduler of program instructions for streaming vector processor having interconnected functional units
US7159099B2 (en) * 2002-06-28 2007-01-02 Motorola, Inc. Streaming vector processor with reconfigurable interconnection switch
EP1378824A1 (en) * 2002-07-02 2004-01-07 STMicroelectronics S.r.l. A method for executing programs on multiple processors and corresponding processor system
US7636837B2 (en) * 2003-05-28 2009-12-22 Fujitsu Limited Apparatus and method for controlling instructions at time of failure of branch prediction
US7111154B2 (en) * 2003-06-25 2006-09-19 Intel Corporation Method and apparatus for NOP folding
KR100703357B1 (ko) * 2003-08-16 2007-04-03 삼성전자주식회사 보조제어부를 구비하는 휴대용 단말기의 캐시메모리구현장치 및 방법
US7290122B2 (en) * 2003-08-29 2007-10-30 Motorola, Inc. Dataflow graph compression for power reduction in a vector processor
JP2005196729A (ja) * 2003-12-10 2005-07-21 Renesas Technology Corp コンパイラおよび命令コード出力装置
GB2415269B (en) * 2004-06-15 2007-07-25 Advanced Risc Mach Ltd Program instruction decompression and compression techniques
TWI320636B (en) * 2005-11-10 2010-02-11 Realtek Semiconductor Corp Method for compressing instruction code
US7484077B2 (en) 2005-11-10 2009-01-27 Realtek Semiconductor Corp. Skipping unnecessary instruction by multiplex selector using next instruction offset stride signal generated from instructions comparison results
US8069335B2 (en) * 2005-11-15 2011-11-29 Nxp B.V. Processing system and method for executing instructions
GB2433806B (en) * 2006-01-03 2008-05-14 Realtek Semiconductor Corp Apparatus and method for removing unnecessary instruction
KR100648014B1 (ko) * 2006-06-05 2006-11-23 (주)엠씨티코리아 평판형 디스플레이패널 검사용 프로브장치의 pcb 접속용지그
KR100875836B1 (ko) * 2007-03-23 2008-12-24 삼성전자주식회사 병렬 처리 vliw 컴퓨터를 위한 인스트럭션 명령어 압축장치 및 그 방법
JP4864840B2 (ja) * 2007-08-31 2012-02-01 株式会社東芝 マイクロプロセッサ
US7945768B2 (en) * 2008-06-05 2011-05-17 Motorola Mobility, Inc. Method and apparatus for nested instruction looping using implicit predicates
US9201652B2 (en) 2011-05-03 2015-12-01 Qualcomm Incorporated Methods and apparatus for storage and translation of entropy encoded software embedded within a memory hierarchy
US10120692B2 (en) 2011-07-28 2018-11-06 Qualcomm Incorporated Methods and apparatus for storage and translation of an entropy encoded instruction sequence to executable form
KR102210997B1 (ko) * 2014-03-12 2021-02-02 삼성전자주식회사 Vliw 명령어를 처리하는 방법 및 장치와 vliw 명령어를 처리하기 위한 명령어를 생성하는 방법 및 장치
US10833704B1 (en) * 2018-12-12 2020-11-10 Xilinx, Inc. Low-density parity check decoder using encoded no-operation instructions

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05158795A (ja) * 1991-12-06 1993-06-25 Nec Corp キャッシュメモリシステム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4833599A (en) * 1987-04-20 1989-05-23 Multiflow Computer, Inc. Hierarchical priority branch handling for parallel execution in a parallel processor
US5051885A (en) * 1988-10-07 1991-09-24 Hewlett-Packard Company Data processing system for concurrent dispatch of instructions to multiple functional units
US5465342A (en) * 1992-12-22 1995-11-07 International Business Machines Corporation Dynamically adaptive set associativity for cache memories
WO1994027216A1 (en) * 1993-05-14 1994-11-24 Massachusetts Institute Of Technology Multiprocessor coupling system with integrated compile and run time scheduling for parallelism
US5510934A (en) * 1993-12-15 1996-04-23 Silicon Graphics, Inc. Memory system including local and global caches for storing floating point and integer data
US5603047A (en) * 1995-10-06 1997-02-11 Lsi Logic Corporation Superscalar microprocessor architecture

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05158795A (ja) * 1991-12-06 1993-06-25 Nec Corp キャッシュメモリシステム

Also Published As

Publication number Publication date
KR970002618A (ko) 1997-01-28
JPH0916471A (ja) 1997-01-17
JP3598589B2 (ja) 2004-12-08
US5893143A (en) 1999-04-06
TW299421B (ko) 1997-03-01

Similar Documents

Publication Publication Date Title
KR100248440B1 (ko) 프로세서
EP0052194B1 (en) Paging data processing apparatus
KR100257518B1 (ko) 캐쉬 슬라이스로서 리사이즈 및 재배치가능한 메모리 스크래치패드
US5895501A (en) Virtual memory system for vector based computer systems
US7500085B2 (en) Identifying code for compilation
US5860138A (en) Processor with compiler-allocated, variable length intermediate storage
US6904511B2 (en) Method and apparatus for register file port reduction in a multithreaded processor
US7873814B1 (en) Microcode based hardware translator to support a multitude of processors
US7000094B2 (en) Storing stack operands in registers
US5187793A (en) Processor with hierarchal memory and using meta-instructions for software control of loading, unloading and execution of machine instructions stored in the cache
CN104657110B (zh) 具有固定数量的可变长度指令的指令高速缓存器
JPH08328958A (ja) 命令キャッシュ、キャッシュメモリ装置及びその方法
US5835949A (en) Method of identifying and self-modifying code
EP1235154B1 (en) Cache memory system
JPH01154261A (ja) 情報処理装置
US6560676B1 (en) Cache memory system having a replace way limitation circuit and a processor
US6892280B2 (en) Multiprocessor system having distributed shared memory and instruction scheduling method used in the same system
US6119220A (en) Method of and apparatus for supplying multiple instruction strings whose addresses are discontinued by branch instructions
Berenbaum et al. Architectural Innovations in the CRISP Microprocessor.
Gibert et al. Flexible compiler-managed L0 buffers for clustered VLIW processors
US7043607B2 (en) Information processing system and cache flash control method used for the same
Ranjan Panda et al. Memory architectures for embedded systems-on-chip
JP3424430B2 (ja) プロセッサ
JP2002024031A (ja) オブジェクトコードの再合成方法および生成方法
Mills A pipelined architecture for logic programming with a complex but single-cycle instruction set

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: 20031201

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee