KR101306622B1 - 명령어 큐 제어장치 - Google Patents
명령어 큐 제어장치 Download PDFInfo
- Publication number
- KR101306622B1 KR101306622B1 KR1020110060564A KR20110060564A KR101306622B1 KR 101306622 B1 KR101306622 B1 KR 101306622B1 KR 1020110060564 A KR1020110060564 A KR 1020110060564A KR 20110060564 A KR20110060564 A KR 20110060564A KR 101306622 B1 KR101306622 B1 KR 101306622B1
- Authority
- KR
- South Korea
- Prior art keywords
- instruction
- branch
- storage unit
- input terminal
- command
- Prior art date
Links
- 238000003860 storage Methods 0.000 claims abstract description 170
- 238000000034 method Methods 0.000 claims abstract description 10
- 230000007704 transition Effects 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 11
- 101000955959 Homo sapiens Vacuolar protein sorting-associated protein 52 homolog Proteins 0.000 description 6
- 102100038937 Vacuolar protein sorting-associated protein 52 homolog Human genes 0.000 description 6
- 239000013256 coordination polymer Substances 0.000 description 6
- 239000000872 buffer Substances 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
Images
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
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/325—Power saving in peripheral device
- G06F1/3275—Power saving in memory, e.g. RAM, cache
-
- 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/22—Microcontrol or microprogram arrangements
- G06F9/26—Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
본 발명의 명령어 큐 제어장치는 메모리로부터 저장된 명령어들을 명령어 큐 저장부로 명령어 페치될 때, 페치되는 명령어들 중 분기명령어가 있는 경우, 분기명령어가 발생하면 루프명령어들을 순차적으로 명령어 큐 저장부에 저장하고, 계속적으로 동일한 분기명령어가 실행되면 명령어 큐 저장부에 저장된 루프명령어들을 순차적으로 판독하여 분기명령어를 처리하도록 하여 분기명령어 처리시 메모리 접근을 할 필요가 없으므로, 메모리 접근에 따른 전력소모를 감소시킬 수 있다.
Description
본 발명은 명령어 큐 제어장치에 관한 것으로, 특히 메모리로부터 저장된 명령어들을 명령어 큐 저장부로 명령어 페치될 때, 페치되는 명령어들 중 분기명령어가 있는 경우, 분기명령어를 처리하기 위한 반복되는 루프 내의 루프명령어들의 수가 명령어 큐 저장부의 저장영역의 수보다 작고, 분기명령어가 발생하면 루프명령어들을 순차적으로 명령어 큐 저장부에 저장하고, 계속적으로 동일한 분기명령어가 실행되면 명령어 큐 저장부에 저장된 루프명령어들을 순차적으로 판독하여 분기명령어를 처리하도록 하여 분기명령어 처리시 메모리 접근을 할 필요가 없으므로, 메모리 접근에 따른 전력소모를 감소시킬 수 있는 명령어 큐 제어장치에 관한 것이다.
일반적으로 중앙처리장치(Micro-Processor)는 메모리에 저장된 다수의 명령어들의 집합으로 이루어진 프로그램을 읽어 들여 이를 디코더(Decoder)에 의해 해석하고, 실행기에 의해 각 명령어에 해당하는 동작을 실행한다.
중앙처리장치의 실행성능을 개선하기 위하여, 파이프라인(pipeline) 구조를 채택하여 다중 명령어를 겹치는 방식으로 파이프 스테이지를 통하여 이동되도록 하여 다중 명령어를 동시에 처리하도록 한다.
일반적으로 파이프라인은 4개의 스테이지인 명령어 인출, 명령어 해독, 명령어 실행 및 실행된 결과값 저장들의 기능 유니트들로 나누어질 수 있으며, 각각의 파이프라인의 기능 유니트들은 자기만의 속도로 독립적으로 진행할 수 있도록 설계되며, 이를 위해 각각의 파이프라인의 기능 유니트들은 그 전의 기능 유니트로부터 온 데이터를 미리 저장하기 위한 임시저장소인 버퍼들을 구비한다.
그러나, 각각의 기능 유니트들을 자기만의 속도로 독립적으로 진행할 수 있게 함으로써, 다양한 파이프라인 해저드(hazard), 특히 프로그램 계수기를 변경시키는 분기명령 등이 발생하면 실행중인 명령어와 그 다음의 명령어들은 정지되어야만 한다.
도 1은 종래의 명령어 큐 제어장치에 대한 구성도이고, 도 2는 분기명령을 갖는 프로그램의 일부 명령어들이 저장된 메모리의 구성도이고, 도 3a 내지 도 3c는 도 2에 따른 프로그램을 수행하기 위한 종래의 명령어 큐 저장부에 저장되는 과정을 도시한 도면이다.
도 1에 도시된 바와 같이, 이러한 분기명령에 의한 해저드 발생을 방지하기 위해, 종래의 경우 임시저장소로 명령어 큐 저정부(1)를 사용하고, 디코더(2)에 의해 분기명령이 발생하면 분기명령어의 주소인 분기명령어주소(TAG)와 분기명령어에 의해 분기되는 분기목적주소(TAD)를 각각 분기명령어주소저장부(3)와 분기목적주소저장부(4)에 저장하고, 메모리접근주소(ADR)와 분기명령어 주소(TAG)를 비교부(6)에 의해 비교하여 분기명령이 발생하면 분기예측신호(BP)가 활성화되어, 분기목적주소(TAD)에 위치한 메모리로부터 분기명령에 의해 실행되기 위한 루프 내의 루프명령어들을 순차적으로 명령어 큐 저장부(1)에 저장하도록 한다.
특정 프로그램을 수행하기 위해 도 2에 도시된 바와 같이 메모리에 저장된 제1일반명령어(Ins A), 제2일반명령어(Ins B), 제3일반명령어(Ins C), 분기명령어(Branch), 제4일반명령어(Ins D)에 대해 명령어 페치에 대해 살펴보면 다음과 같다.
종래의 명령어 큐 제어장치는 명령어페치 요구신호(IFR)가 활성화되면 기록포인트제어부(8)로부터 출력되는 기록포인트신호(WP)에 따라 명령어접근주소(ADR)가 증가함에 따라 명령어 큐 저장부(1)에는 도 3a에 도시된 바와 같이 세번째 엔트리(E3)부터 다섯번째 엔트리(E5)까지 순차적으로 메모리(100)로부터 페치된 제1일반명령어(Ins A), 제2일반명령어(Ins B), 제3일반명령어(Ins C), 분기명령어(Branch)가 저장된다. 파이프제어기로부터 출력되는 디코드요구신호(DRQ)가 활성화되면, 판독록포인트(RD)에 의해 명령어 큐 저장부(1)에 저장된 제1일반명령어(Ins A), 제2일반명령어(Ins B), 제3일반명령어(Ins C), 분기명령어(Branch)는 순차적으로 디코더(2)에 의해 명령어들이 해석되며, 분기명령어(Branch)에 의한 분기조건이 일치할 경우 분기가 발생하고, 처음 발생한 분기명령어에 대해서는 해저드가 발생한다.
그러나 도 3b에 도시된 바와 같이, 처음 발생한 분기명령어(Branch)에 의해 분기명령어주소(TAG)와 분기명령어에 의해 분기되는 분기목적주소(TAD)가 각각 분기명령어주소저장부(3)와 분기목적주소저장부(4)에 저장되어, 다음 동일한 분기명령어(Branch)가 발생하면, 비교부(6)에서 출력되는 분기예측신호(BP)가 활성화되어 메모리접근주소(ADR)는 데이터선택부(7)에 의해 분기목적주소(TAD)가 되어 제2일반명령어(Ins B)와, 제3일반명령어(Ins C), 분기명령어(Branch)들이 순차적으로 명령어 큐 저장부(1)에 저장되며, 제2일반명령어(Ins B)와, 제3일반명령어(Ins C), 분기명령어(Branch)들은 분기명령어에 의해 발생하는 루프명령어들로, 두번째 이후에서 발생하는 동일한 분기명령어인 경우 해저드가 발생하지 않는다.
도 3c에 도시된 바와 같이 동일 분기명령어가 발생하여 계속적으로 동일한 루프가 발생하면, 메모리접근주소(ADR)에 따라 메모리(100)로 계속 접근해서 메모리(100)에 저장된 루프 명령어들을 명령어 큐 저장부(1)로 저장하게 된다.
따라서, 종래의 명령어 큐 제어장치는 첫번째 분기명령어에 대해서는 해저드가 발생하나, 반복되는 동일 분기명령어에 대해서는 해저드가 발생하지 않는 장점은 있으나, 반복되는 동일 분기명령어가 발생될 때 마다 분기명령어를 처리하기 위해 계속해서 메모리에 접근하여 메모리에 저장된 루프명령어들을 명령어 큐 저장부에 기록하여야 하므로, 분기명령 실행시 전력소모가 커지는 문제점을 가지고 있다.
본 발명의 목적은 메모리로부터 저장된 명령어들을 명령어 큐 저장부로 명령어 페치될 때, 페치되는 명령어들 중 분기명령어가 있는 경우, 분기명령어를 처리하기 위한 반복되는 루프 내의 루프명령어들의 수가 명령어 큐 저장부의 저장영역의 수보다 작을 경우, 분기명령어가 발생하면 루프명령어들을 순차적으로 명령어 큐 저장부에 저장하고, 계속적으로 동일한 분기명령어가 실행되면 명령어 큐 저장부에 저장된 루프명령어들을 순차적으로 판독하여 분기명령어를 처리하도록 하여 분기명령어 처리시 메모리 접근을 할 필요가 없으므로, 메모리 접근에 따른 전력소모를 감소시킬 수 있는 명령어 큐 제어장치를 제공하는 데 있다.
상기의 목적을 달성하기 위하여 본 발명의 명령어 큐 제어장치는 다수의 일반명령어 및 분기명령어들로 구성된 명령어들이 저장된 메모리와, 다수개의 명령어들이 각각 저장되는 다수개의 엔트리들로 구성되어 메모리접근주소에 따라 상기 메모리에 저장된 상기 명령어들중 일부 명령어들을 상기 메모리로부터 미리 페치하여 각각의 엔트리들에 저장하는 명령어 큐 저장부와, 상기 명령어 큐 저장부의 각각의 엔트리들에 저장된 명령어들을 판독하여 명령어들을 해석하는 디코더를 구비하여 상기 명령어 큐 저장부에 저장된 분기명령어에 의한 조건이 일치되면 분기목적주소로 분기되고, 분기목적주소에 위치한 메모리로부터 상기 분기명령어에 의해 실행되는 루프 내의 다수의 명령어들인 루프명령어들을 상기 명령어 큐 저장부로 저장하는 명령어 큐 제어장치에 있어서, 상기 명령어 큐 저장부에 저장된 명령어들을 상기 디코더로 판독하여, 상기 디코더에 의해 판독된 명령어가 분기명령어이면 분기명령어가 저장되어 있는 메모리의 주소인 분기명령어주소를 저장하는 분기명령어주소저장부; 상기 디코더에 의해 판독된 명령어가 분기명령어이면, 상기 분기명령어에 의해 분기되는 분기목적주소를 저장하는 분기목적주소저장부; 상기 분기명령어는 처음 발생한 분기명령어이고, 해당 분기명령어에 의한 조건이 일치되어 분기가 발생하고, 상기 분기명령어에 의해 실행되는 루프명령어들의 수가 상기 명령어 큐 저장부의 엔트리들의 수보다 작으면, 상기 메모리에 저장된 루프명령어들만이 순차적으로 상기 명령어 큐 저장부에 저장되는 필상태와, 상기 필상태에서 명령어 큐 저장부에 저장된 마지막 분기명령어에 따라 명령어 큐 저장부에 저장된 루프명령어들만을 상기 디코더로 판독하는 활성상태와, 상기 메모리에 저장된 일반명령어 또는 분기명령어들이 페치되어 상기 명령어 큐 저장부로 저장되는 정상상태를 갖는 상태제어신호를 출력하며, 상기 상태제어신호가 필상태일 때 상기 명령어 큐 저장부에 저장된 루프명령어들에 의해 상기 분기명령어와 다른 분기주소를 갖는 분기명령어이면 상기 필상태에서 정상상태로 천이되고, 상기 상태제어신호가 활성상태일 때에 상기 루프명령어들에 의해 상기 분기명령어와 다른 분기주소를 갖는 분기명령어이면 상기 활성상태에서 정상상태로 천이하는 상태제어부; 상기 분기명령어주소저장부에 저장된 분기명령어주소와 메모리접근주소를 수신하여 상기 분기명령어주소와 메모리접근주소를 비교하여 동일하면 활성화된 분기예측신호를 출력하는 제1비교부; 상기 분기예측신호가 비활성화되면 1씩 증가하고, 상기 분기예측신호가 활성화되면 상기 분기목적주소저장부에 저장된 분기목적주소를 갖는 메모리접근주소와, 상기 상태제어부의 상태제어신호가 정상상태이거나 필상태이면 상기 메모리접근주소에 따라 메모리에 저장된 명령어들을 상기 명령어 큐 저장부로 페치하고, 상기 상태제어신호가 활성상태이면 상기 메모리에 저장된 명령어들이 상기 명령어 큐 저장부로 페치되지 않도록 상기 메모리를 제어하는 명령어 접근 인에이블신호를 출력하는 메모리 접근 제어부; 명령어 페치 요구신호가 활성화되고, 상기 상태제어부의 상태제어신호가 정상상태이면, 1씩 증가하는 기록포인트를 출력하여 상기 기록포인트가 위치한 상기 명령어 큐 저장부의 특정 엔트리에 상기 메모리로부터 페치된 명령어가 저장되고, 명령어 페치 요구신호가 활성화되고, 상기 상태제어신호가 필상태이면 상기 기록포인트는 상기 명령어 큐 저장부의 첫번째 엔트리의 주소를 가진 후, 1씩 증가하여 상기 루프명령어들을 상기 명령어 큐 저장부의 첫번째 엔트리부터 순차적으로 저장하고, 상기 명령어 페치 요구신호가 활성화되고, 상기 상태제어신호가 활성상태이면 기록포인트는 현재의 기록포인트를 가지며, 상기 명령어 페치 요구신호가 비활성화되면 상기 메모리로부터 페치된 명령어들이 상기 명령어 큐 저장부로 기록되지 못하는 기록포인트 제어부; 및 디코더 요구신호가 활성화되면, 1씩 증가하는 판독포인트를 출력하여 상기 판독포인트에 따라 명령어 큐 저장부의 특정 엔트리에 저장된 명령어를 디코더로 판독되고, 상기 디코더 요구신호가 활성화되고 상기 상태제어부의 상태제어신호가 활성상태이고 판독포인트가 현재의 기록포인트에서 1을 감산한 값과 동일하면 상기 판독포인트는 상기 명령어 큐 저장부의 첫번째 엔트리에 저장된 명령어를 상기 디코더로 판독하고, 디코더 요구신호가 비활성화되면 상기 명령어 큐 저장부에 저장된 명령어들은 상기 디코더로 판독되지 못하는 판독포인트 제어부를 구비한 것을 특징으로 한다.
본 발명의 명령어 큐 제어장치는 메모리로부터 저장된 명령어들을 명령어 큐 저장부로 명령어 페치될 때, 페치되는 명령어들 중 분기명령어가 있는 경우, 분기명령어가 발생하면 루프명령어들을 순차적으로 명령어 큐 저장부에 저장하고, 계속적으로 동일한 분기명령어가 실행되면 명령어 큐 저장부에 저장된 루프명령어들을 순차적으로 판독하여 분기명령어를 처리하도록 하여 분기명령어 처리시 메모리 접근을 할 필요가 없으므로, 메모리 접근에 따른 전력소모를 감소시킬 수 있다.
도 1은 종래의 명령어 큐 제어장치에 대한 구성도,
도 2는 분기명령을 갖는 프로그램의 일부 명령어들이 저장된 메모리의 구성도,
도 3a 내지 도 3c는 도 2에 따른 프로그램을 수행하기 위한 종래의 명령어 큐 저장부에 명령어들이 저장되는 과정을 도시한 도면,
도 4는 본 발명의 명령어 큐 제어장치의 구성도,
도 5는 본 발명에 따른 상태제어부의 상태도,
도 6은 도 5에 따른 상태제어부의 구성도,
도 7은 본 발명에 따른 명령어 큐 저장부의 개략도,
도 8a 내지 도 8h는 도 2의 프로그램을 수행하기 위한 본 발명의 명령어 큐 저장부에 명령어들이 저장되는 과정을 도시한 도면이다.
도 2는 분기명령을 갖는 프로그램의 일부 명령어들이 저장된 메모리의 구성도,
도 3a 내지 도 3c는 도 2에 따른 프로그램을 수행하기 위한 종래의 명령어 큐 저장부에 명령어들이 저장되는 과정을 도시한 도면,
도 4는 본 발명의 명령어 큐 제어장치의 구성도,
도 5는 본 발명에 따른 상태제어부의 상태도,
도 6은 도 5에 따른 상태제어부의 구성도,
도 7은 본 발명에 따른 명령어 큐 저장부의 개략도,
도 8a 내지 도 8h는 도 2의 프로그램을 수행하기 위한 본 발명의 명령어 큐 저장부에 명령어들이 저장되는 과정을 도시한 도면이다.
이하, 첨부된 도면을 참조하여 본 발명의 명령어 큐 제어장치를 상세히 설명하고자 한다.
도 4 및 도 5에 도시된 바와 같이, 본 발명의 명령어 큐 제어장치는 다수의 일반명령어(Ins A, Ins B, Inc C, Ins D) 및 분기명령어(Branch)들로 구성된 명령어들이 저장된 메모리(100)와, 다수개의 명령어들이 각각 저장되는 다수개의 엔트리들(E1∼E8)로 구성되어 메모리접근주소(ADR)에 따라 메모리(100)에 저장된 명령어들 중 일부 명령어들을 메모리(100)로부터 미리 페치하여 각각의 엔트리들에 저장하는 명령어 큐 저장부(10)와, 명령어 큐 저장부(10)의 각각의 엔트리들에 저장된 명령어들을 판독하여 명령어들을 해석하는 디코더(20)와, 명령어 큐 저장부(10)에 저장된 명령어들을 디코더(20)로 판독하여, 디코더(20)에 의해 판독된 명령어가 분기명령어(Branch)이면 분기명령어가 저장되어 있는 메모리(100)의 주소인 분기명령어주소(TAG)를 저장하는 분기명령어주소저장부(30)와, 디코더(20)에 의해 판독된 명령어가 분기명령어이면, 분기명령어에 의해 분기되는 분기목적주소(TAD)를 저장하는 분기목적주소저장부(40)와, 정상상태(NST), 필상태(FST) 및 활성상태(AST)를 갖는 상태제어신호(ST)를 출력하는 상태제어부(50)와, 분기명령어주소저장부(30)에 저장된 분기명령어주소(TAG)와 메모리접근주소(ADR)를 수신하여 분기명령어주소(TAG)와 메모리접근주소(ADR)를 비교하여 동일하면 활성화된 분기예측신호(BP)를 출력하는 제1비교부(60)와, 메모리 접근 제어부(70)와, 기록포인트 제어부(80)와, 판독포인트 제어부(90)로 구성된다.
상태제어부(50)는, 분기명령어(Branch)가 처음 발생한 분기명령어이고, 해당 분기명령어에 의한 조건이 일치되어 분기가 발생하고, 분기명령어(Branch)에 의해 실행되는 루프명령어들의 수가 명령어 큐 저장부(10)의 엔트리들의 수보다 작으면, 메모리(100)에 저장된 루프명령어들만이 순차적으로 상기 명령어 큐 저장부(10)에 저장되는 필상태(FST)와, 필상태(FST)에서 명령어 큐 저장부(10)에 저장된 마지막 분기명령어에 따라 명령어 큐 저장부(10)에 저장된 루프명령어들만을 디코더(20)로 판독하는 활성상태(AST)와, 메모리(100)에 저장된 일반명령어 또는 분기명령어들이 페치되어 명령어 큐 저장부(10)로 저장되는 정상상태(NST)를 갖는 상태제어신호(ST)를 출력한다. 또한, 상태제어부(50)는 상태제어신호(ST)가 필상태(FST)일 때 명령어 큐 저장부(10)에 저장된 루프명령어들에 의해 분기명령어와 다른 분기주소를 갖는 분기명령어이면 필상태(FST)에서 정상상태(NST)로 천이되고, 상태제어신호(ST)가 활성상태(AST)일 때에 루프명령어들에 의해 분기명령어와 다른 분기주소를 갖는 분기명령어이면 활성상태(AST)에서 정상상태(NST)로 천이한다.
메모리 접근 제어부(70)는 분기예측신호(BP)가 비활성화되면 1씩 증가하고, 분기예측신호(BP)가 활성화되면 분기목적주소저장부(40)에 저장된 분기목적주소(TAD)를 갖는 메모리접근주소(ADR)를 출력한다. 또한, 메모리 접근 제어부(70)는 상태제어부(50)의 상태제어신호(ST)가 정상상태(NST)이거나 필상태(FST)이면 활성화되는 명령어 접근 인에이블신호(IAE)를 출력하여 메모리접근주소(ADR)에 따라 메모리(100)에 저장된 명령어들을 명령어 큐 저장부(10)로 페치하고, 상태제어신호(ST)가 활성상태(AST)이면 명령어 접근 인에이블신호(IAE)는 비활성화되어 메모리(100)에 저장된 명령어들이 명령어 큐 저장부(10)로 페치되지 않는다.
기록포인트 제어부(80)는 명령어 페치 요구신호(IFR)가 활성화되고, 상태제어부(50)의 상태제어신호(ST)가 정상상태(NST)이면, 1씩 증가하는 기록포인트(WP)를 출력하여 기록포인트(WP)가 위치한 명령어 큐 저장부(10)의 특정 엔트리에 메모리(100)로부터 페치된 명령어가 저장되고, 명령어 페치 요구신호(IFR)가 활성화되고, 상태제어신호(ST)가 필상태(FST)이면 기록포인트(WP)는 명령어 큐 저장부(10)의 첫번째 엔트리의 주소(ARE1)를 가진 후, 1씩 증가하여 루프명령어들을 명령어 큐 저장부(10)의 첫번째 엔트리(E1)부터 순차적으로 저장하고, 명령어 페치 요구신호(IFR)가 활성화되고, 상태제어신호(ST)가 활성상태(AST)이면 기록포인트(WP)는 현재의 기록포인트를 가지며, 명령어 페치 요구신호(IFR)가 비활성화되면 메모리(100)로부터 페치된 명령어들이 상기 명령어 큐 저장부(10)로 기록되지 못하도록 구성된다.
판독포인트 제어부(90)는 디코더 요구신호(DRQ)가 활성화되면, 1씩 증가하는 판독포인트(RP)를 출력하여 판독포인트(RP)에 따라 명령어 큐 저장부(10)의 특정 엔트리에 저장된 명령어를 디코더(20)로 판독되고, 디코더 요구신호(DRQ)가 활성화되고 상태제어부(50)의 상태제어신호(ST)가 활성상태(AST)이고 판독포인트(RP)가 현재의 기록포인트(WP)에서 1을 감산한 값과 동일하면 판독포인트(RP)는 명령어 큐 저장부(10)의 첫번째 엔트리(E1)에 저장된 명령어를 디코더(20)로 판독하고, 디코더 요구신호(DRQ)가 비활성화되면 명령어 큐 저장부(10)에 저장된 명령어들은 디코더(20)로 판독되지 못하도록 구성된다.
메모리 접근 제어부(70)는 메모리접근주소(ADR)를 수신하여, 메모리접근주소(ADR)를 1씩 증가시키는 메모리접근주소 카운터(71)와, 제1데이터선택부(MUX1)와, 제2데이터선택부(MUX2)로 구성된다.
제1데이터선택부(MUX1)는 제1입력단(I0), 제2입력단(I1), 선택입력단(S) 및 출력단(O)을 가지며, 선택입력단(S)은 분기예측신호(BP)에 연결되고, 제1입력단(I0)은 메모리접근주소 카운터(71)의 출력과 연결되며, 제2입력단(I1)은 분기목적주소(TAD)에 연결되고, 출력단(O)으로 메모리접근주소(ADR)를 출력하고, 분기예측신호(BP)가 비활성화되면 메모리접근주소(ADR)는 제1입력단(I0)으로 입력되는 메모리접근주소 카운터(71)의 출력을 선택하고, 분기예측신호(BP)가 활성화되면 메모리접근주소(ADR)는 제2입력단(I1)으로 입력되는 분기목적주소(TAD)를 선택한다.
제2데이터선택부(MUX2)는 제1입력단(I0), 제2입력단(I1), 선택입력단(S) 및 출력단(O)을 가지며, 선택입력단(S)은 상태제어신호(ST)에 연결되고, 제1입력단(I0)은 하이논리값을 갖고, 제2입력단(I1)은 로우논리값을 가지고, 출력단(O)으로 명령어접근 인에이블신호(IAE)를 출력하여, 상태제어신호(ST)가 정상상태(NST)이거나 필상태(FST)이면 명령어접근 인에이블신호(IAE)는 제1입력단(I0)으로 입력되는 하이논리값을 갖게되어 메모리접근주소(ADR)에 따라 메모리(100)에 저장된 명령어들을 명령어 큐 저장부(10)로 페치하고, 상태제어신호(ST)가 활성상태(AST)이면 명령어접근 인에이블신호(IAE)는 제2입력단(I1)으로 입력되는 로우논리값을 갖게되어 메모리(100)에 저장된 명령어들이 명령어 큐 저장부(10)로 페치되지 못하도록 구성된다.
기록포인트 제어부(80)는 기록포인트(WP)를 수신하여, 기록포인트(WP)를 1씩 증가시키는 기록포인트 카운터(81)와, 제3데이터선택부(MUX3)로 구성된다.
제3데이터선택부(MUX3)는 제1입력단(I0), 제2입력단(I1), 선택입력단(S), 출력단(O) 및 인에이블단(EN)을 가지며, 인에이블단(EN)은 명령어 페치 요구신호(IFR)와 연결되고, 선택입력단(S)은 상태제어신호(ST)에 연결되고, 제1입력단(I0)은 기록포인트 카운터(81)의 출력과 연결되며, 제2입력단(I1)과 출력단(O)은 기록포인트(WP)와 연결되어, 명령어 페치 요구신호(IFR)가 비활성화되면 메모리(100)로부터 페치된 명령어들이 상기 명령어 큐 저장부(10)로 기록되지 못하고, 명령어 페치 요구신호(IFR)가 활성화되고, 상태제어신호(ST)가 정상상태(NST)이면, 출력단(O)으로 출력되는 기록포인트(WP)는 제1입력단(I0)으로 입력되는 기록포인트 카운터(81)의 출력을 선택하고, 명령어 페치 요구신호(IFR)가 활성화되고, 상태제어신호(ST)가 필상태(FST)이면 기록포인트(WP)는 명령어 큐 저장부(10)의 첫번째 엔트리의 주소(ARE1)로 변경된 후 기록포인트 카운터(81)의 출력을 선택하고, 명령어 페치 요구신호(IFR)가 활성화되고, 상태제어신호(ST)가 활성상태(AST)이면 출력단(O)으로 출력되는 기록포인트(WP)는 제2입력단(I1)으로 입력되는 기록포인트(WP)를 선택한다.
판독포인트 제어부(90)는 판독포인트(RP)를 수신하여, 판독포인트(RP)를 1씩 증가시키는 판독포인트 카운터(91)와, 기록포인트(WP)와 판독포인트(RP)를 수신하여, 판독포인트(RP)가 기록포인트(WP)에 1을 감산한 감산값과 동일하면 활성화되고, 판독포인트(RP)가 기록포인트(WP)에 1을 감산한 감산값과 동일하지 않으면 비활성화되는 비교신호(CP)를 출력하는 제2비교부(93)와, 제4데이터선택부(MUX4)와, 제5데이터선택부(MUX5)로 구성된다.
제4데이터선택부(MUX4)는 제1입력단(I0), 제2입력단(I1), 선택입력단(S), 출력단(O)을 가지며, 선택입력단(S)은 비교신호(CP)에 연결되고, 제1입력단(I0)은 판독포인트 카운터(91)의 출력과 연결되며, 제2입력단(I1)은 명령어 큐 저장부(10)의 첫번째 엔트리의 주소(ARE1)와 연결되어, 비교신호(CP)가 비활성화되면 출력단(O)은 제1입력단(I0)으로 입력되는 판독포인트 카운터(91)의 출력을 선택하고, 비교신호(CP)가 활성화되면 출력단(O)은 제2입력단(I2)으로 입력되는 명령어 큐 저장부(10)의 첫번째 엔트리의 주소(ARE1)를 선택한다.
제5데이터선택부(MUX5)는 제1입력단(I0), 제2입력단(I1), 선택입력단(S), 출력단(O) 및 인에이블단(EN)을 가지며, 인에이블단(EN)은 디코더 요구신호(DRQ)와 연결되고, 선택입력단(S)은 상태제어부(50)의 출력인 상태제어신호(ST)에 연결되고, 제1입력단(I0)은 판독포인트 카운터(91)의 출력과 연결되며, 제2입력단(I1)은 제4데이터선택부(MUX4)의 출력단(O)과 연결되어, 디코더 요구신호(DRQ)가 비활성화되면 명령어 큐 저장부(10)에 저장된 명령어들은 디코더(20)로 판독되지 못하고, 디코더 요구신호(DRQ)가 활성화되고, 상태제어신호(ST)가 정상상태(NST) 또는 필상태(FST)이면 출력단(O)은 제1입력단(I0)으로 입력되는 판독포인트 카운터(91)의 출력을 선택하고, 디코더 요구신호(DRQ)가 활성화되고, 상태제어신호(ST)가 활성상태(AST)이면 출력단(O)은 제2입력단(I1)으로 입력되는 제4데이터선택부(MUX4)의 출력을 선택한다.
명령어 큐 저장부(10)는 각각의 엔트리들에 대응되는 유효필드(V)를 구비하여, 기록포인트(WP)에 의해 메모리(100)로부터 페치되는 명령어가 명령어 큐 저장부(10)의 특정 엔트리에 기록되면 해당 엔트리의 유효필드(V)는 활성화되고, 상태제어신호(ST)가 정상상태(NST)이고 판독포인트(RP)에 의해 명령어 큐 저장부(10)의 특정 엔트리에 저장된 명령어가 판독될 때 해당 엔트리의 유효필드(V)는 비활성화되고, 상태제어신호(ST)가 필상태(FST)나 활성상태(AST)이고 판독포인트(RP)에 의해 명령어 큐 저장부(10)의 특정 엔트리의 명령어가 판독될 때 해당 엔트리의 유효필드(V)는 계속 활성화된다.
상기의 구성에 따른 본 발명인 명령어 큐 제어장치의 동작은 다음과 같다.
도 5 및 도 6에 도시된 바와 같이 본 발명에 따른 상태제어부(40)는 정상상태(NST)와 필상태(FST)와 활성상태(AST)의 세가지 상태를 갖는 상태제어신호(ST)를 출력한다.
상태제어신호(ST)가 정상상태(NST)일 때에는 도 8a 내지 도 8c에 도시된 바와 같이, 메모리접근주소(ADR)에 의해 메모리(100)로부터 명령어들이 페치되어 페치된 명령어들이 기록포인트 제어부(80)의 출력인 기록포인트(WP)에 의해 명령어 큐 저장부(10)의 다수의 엔트리들(E1∼E8)로 저장되고, 명령어 큐 저장부(10)의 특정 엔트리에 명령어가 저장될 때에는 해당 엔트리에 대응되는 유효필드(V)는 활성화상태인 하이논리값을 갖게 되며, 판독포인트(RD)에 의해 명령어 큐 저장부(10)의 특정 엔트리에 저장된 명령어가 디코더(20)로 판독될 때에는 판독된 특정 엔트리의 유효필드(V)는 비활성화상태인 로우논리값을 갖게 된다. 유효필드(V)가 로우논리값을 가지면, 해당 엔트리에는 기록포인트(WP)에 의해 메모리(100)로부터 페치된 명령어를 저장할 수 있다. 즉, 유효필드(V)가 하이논리값을 가진 엔트리에 저장된 명령어는 유효한 명령어로, 해당 엔트리에는 새로운 명령어가 저장되지 못한다.
상태제어신호(ST)가 필상태(NST)일 때에는 도 8d 내지 도 8f에 도시된 바와 같이 분기명령어(Branch)에 의한 조건이 일치되어 분기가 발생하여 분기명령어(Branch)에 의해 실행되는 루프 내의 루프명령어들인 제2일반명령어(Ins B), 제3일반명령어(Ins C), 분기명령어(Branch)의 명령어들이 메모리(100)로부터 페치되어 명령어 큐 저장부(10)의 첫번째 엔트리(E1)부터 순차적으로 명령어 큐 저장부(10)의 각각의 엔트리들에 저장되며, 필상태(FST)일 때에는 판독포인트(RD)에 의해 명령어 큐 저장부(10)에 저장된 명령어들이 디코더(20)로 판독될 때에는 유효필드(V)는 계속해서 하이논리값을 갖는다.
상태제어신호(ST)가 활성상태(AST)일 때에는 도 8g 및 도 8h에 도시된 바와 같이 필상태(FST)일 때의 명령어 큐 저장부(10)의 마지막 엔트리에 저장된 분기명령어(Branch)와 동일한 분기명령어가 발생하여 필상태(FST)일때 명령어 큐 저장부(10)에 저장된 루프명령어들인 제2일반명령어(Ins B), 제3일반명령어(Ins C), 분기명령어(Branch)의 명령어들을 디코더로 판독한다. 따라서, 상태제어신호(ST)가 활성상태(AST)일 때에는 분기명령어를 실행하기 위해 메모리(100)로부터 루프명령어를 페치하지 않고, 필상태(FST)일 때 명령어 큐 저장부(10)에 저장된 루프명령어들을 사용하도록 하여 메모리 접근을 하지 않는다.
도 2에 도시된 메모리(100)에 저장된 분기명령어를 갖는 특정 프로그램을 수행하는 경우 본 발명의 명령어 큐 제어장치의 동작은 다음과 같다.
도 2에 도시된 바와 같이 이전에 분기명령어가 발생하지 않았다고 가정하고, 명령어접근주소(ADR)에 위치한 메모리(100)에는 제1일반명령어(Ins A)가 저장되어 있고, 순차적으로 메모리(100)에는 제2일반명령어(Ins B), 제3일반명령어(Ins C) 및 분기명령어(Branch)가 저장되어 있다고 가정한다.
제1비교부(60)의 출력인 분기예측신호(BP)는 이전에 분기명령어가 발생하지 않았으므로 비활성화되어 로우논리값을 가지므로 제1데이터선택부(MUX1)의 출력인 메모리접근주소(ADR)는 메모리접근주소 카운터(71)에 의해 1씩 증가되고, 상태제어신호(ST)는 현재 정상상태(NST)이므로 제2데이터선택부(MUX2)의 출력인 명령어접근 인에이블신호(IAE)는 활성화되어 하이논리값을 갖는다.
도 8a에 도시된 바와 같이, 명령어페치 요구신호(IFR)가 활성화되고, 현재의 기록포인트(WP)가 명령어 큐 저장부(10)의 세번째 엔트리(E3)에 위치했다면, 현재의 메모리접근주소(ADR)에 의해 메모리(100)에 저장된 제1일반명령어(Ins A)가 페치되어 명령어 큐 저장부(10)의 세번째 엔트리(E3)에 메모리(100)로 부터 페치된 제1일반명령어(Ins A)가 저장되며, 세번째 엔트리(E3)의 유효필드(V)는 활성화되어 하이논리값을 갖게된다. 메모리접근주소(ADR)는 메모리접근주소 카운터(71)에 의해 1씩 증가하고, 기록포인트(WP)도 기록포인트 카운터(81)에 의해 1씩 증가되어, 메모리(100)에 저장된 제2일반명령어(Ins B), 제3일반명령어(Ins C), 분기명령어(Branch), 제4일반명령어(Ins D)들이 순차적으로 명령어 큐 저장부(10)의 네번째 엔트리(E4)와, 다섯번째 엔트리(E5)와 여섯번째 엔트리(E6)와 일곱번째 엔트리(E7)에 각각 저장되며, 해당 엔트리들의 유효필드(V)는 모두 하이논리값을 갖는다.
디코더요구신호(DRQ)가 활성화되면 판독포인트 제어부(90)의 출력인 판독포인트(RP)에 의해 명령어 큐 저장부(10)의 각 엔트리에 저장된 명령어들이 디코더(20)로 판독되게 되며, 도 8b에 도시된 바와 같이 현재의 판독포인트(RP)가 세번째 엔트리(E3)에 위치하면, 명령어 큐 저장부(10)의 세번째 엔트리(E3)에 저장된 제1일반명령어(Ins A)는 디코더(20)로 판독되며, 이때 유효필드(V)는 비활성화되어 로우논리값을 갖는다.
즉, 상태제어신호(ST)가 정상상태(NST)일 때에는 판독포인트(RP)에 의해 명령어 큐 저장부(10)의 특정 엔트리에 저장된 명령어가 디코더(20)로 판독되면 해당 엔트리의 유효필드(V)는 비활성화시켜, 해당 엔트리에는 메모리(100)로부터 페치되는 명령어들을 저장할 수 있도록 해준다. 이와 같이 명령어 큐 저장부(10)는 유효필드(V)를 구비하여 첫번째 엔트리(E1)부터 마지막 엔트리(E8)까지 계속 순환시켜 명령어들을 저장할 수 있으며, 명령어 큐 저장부(10)의 기록포인트(WP)와 판독포인트(RP)는 파이프라인 처리를 위해 각각 독립적으로 동작한다.
도 8c에 도시된 바와 같이 판독포인트 카운터(91)에 의해 판독포인트(RP)가 1씩 증가함에 따라 명령어 큐 저장부(10)의 네번째 엔트리(E4)에 저장된 제2일반명령어(Ins B)와, 다섯번째 엔트리(E5)에 저장된 제3일반명령어(Ins C)와, 여섯번째 엔트리(E6)에 저장된 분기명령어(Branch)가 순차적으로 디코더(20)로 판독되고, 판독된 엔트리들의 유효필드(V)는 로우논리값을 갖는다.
도 8a 내지 도 8c에서와 같이 명령어 큐 저장부(10)의 각 엔트리들로 메모리(100)로부터 페치된 명령어들이 저장되고, 판독포인트(RP)에 의해 명령어 큐 저장부(10)에 저장된 명령어들 중 처음 발생한 분기명령어(Branch)가 디코더(20)로 판독될 때까지는 도 5 및 도 6에 도시된 바와 같이 제6데이터선택부(MUX6)와 제10데이터선택부(MUX10)에 의해 상태제어부(50)의 출력인 상태제어신호(ST)는 정상상태(NST)를 출력하게 된다.
제10데이터선택부(MUX10)의 선택입력단(S)은 이전의 상태제어신호(PST)가 입력되어, 이전의 상태제어신호(PST)가 정상상태(NST)일 때에는 제1입력단(I0)으로 입력되는 신호를 선택하여 출력단(O)으로 출력하고, 이전의 상태제어신호(PST)가 필상태(FST)이면 출력단(O)은 제2입력단(I1)으로 입력되는 신호를 선택하여 출력하고, 이전의 상태제어신호(PST)가 활성상태(AST)이면 출력단(O)은 제3입력단(I2)으로 입력되는 신호를 선택하여 출력한다.
따라서, 현재 상태제어신호(ST)는 정상상태(NST)이므로 제10데이터선택부(MUX10)의 선택입력단(S)으로 입력되는 이전 상태제어신호(PST)는 계속 정상상태(NST)이므로 제10데이터선택부(MUX10)는 제1입력단(I1)으로 입력되는 제6데이터선택부(MUX6)의 출력을 선택하고, 제6데이터선택부(MUX6)의 선택입력단(S)으로 입력된 디코더(20)에서 출력되는 필제어신호(FCN)는 비활성화되어 있으므로, 제6데이터선택부(MUX6)의 출력은 정상상태(NST)를 선택하게 되어, 도 8a 내지 도 8c는 상태제어신호(ST)는 정상상태(NST)인 경우이다.
판독포인트(RP)에 의해 명령어 큐 저장부(10)의 여섯번째 엔트리(E6)에 저장된 분기명령어(Branch)가 디코더(20)로 판독되면, 디코더(20)는 분기명령어인 것을 판단하고, 분기명령어이면 분기명령어주소저장부(30)에는 분기명령어가 저장된 메모리(100)의 주소인 분기명령어주소(TAG)를 저장하고, 분기목적주소저장부(40)에는 분기명령어에 의해 분기되어야 하는 메모리(100)의 주소인 분기목적주소(TAD)를 저장한다.
디코더(20)는 여섯번째 엔트리(E6)에 저장된 명령어가 처음 발생한 분기명령어이고, 해당 분기명령어의 분기크기, 즉 분기명령어에 의해 실행되는 루프명령어들의 수가 명령어 큐 저장부(10)의 엔트리들의 수보다 큰지 작은지를 판단하여 루프명령어들의 수가 명령어 큐 저장부(10)의 엔트리들의 수보다 작으면 활성화된 필제어신호(FCN)를 출력한다.
명령어 큐 저장부(10)의 엔트리들의 수가 8개이고, 분기명령어에 의해 실행되는 루프명령어들은 제2일반명령어(Ins B), 제3일반명령어(Ins C), 분기명령어(Branch)로 세개이므로, 필제어신호(FCN)는 하이논리값을 갖는 활성화상태가 된다.
도 5 및 도 6에 도시된 바와 같이, 하이논리값을 갖는 필제어신호(FCN)에 의해 제6데이터선택부(MUX6)와 제10데이터선택부(MUX10)에 의해 상태제어신호(ST)는 필상태(FST)가 된다.
상태제어신호(ST)가 필상태(FST)이면, 명령어 큐 저장부(10)에 저장된 모든 명령어들은 지워지고, 유효필드(V)는 비활성화되어 명령어 큐 저장부(10)는 초기상태로 가게 되고, 기록포인터(WP)와 판독포인트(RP)는 각각 명령어 큐 저장부(10)의 첫번째 엔트리(E1)의 주소(ARE1)를 갖게 된다.
제1비교부(60)는 분기명령어주소저장부(30)로부터 출력되는 분기명령어주소(TAG)와 현재의 메모리접근주소(ADR)와 비교하여 동일하면 활성화된 분기예측신호(BP)를 출력하게 되며, 명령어 큐 저장부(10)의 여섯번째 엔트리(E6)에 분기명령어(Branch)가 페치될 때에는 메모리접근주소(ADR)는 분기명령어주소(TAG)와 동일하므로, 상태제어신호(ST)가 필상태(FST)의 초기시에는 분기예측신호(BP)는 활성화되어 메모리접근주소(ADR)는 제1데이터선택부(MUX1)에 의해 분기목적주소(TAD)가 되고, 제2데이터선택부(MUX2)의 출력인 명령어접근 인에이블신호(IAE)는 계속해서 활성화되어 있으므로, 도 8d에 도시된 바와 같이 분기목적주소(TAD)에 위치한 메모리(100)에 저장된 명령어인 제2일반명령어(Ins B)를 페치하여 명령어 큐 저장부(10)의 첫번째 엔트리(E1)에 페치된 제2일반명령어(Ins B)를 저장한다. 현재의 메모리접근주소(ADR)는 분기목적주소(TAD)이므로, 제1비교부(60)의 출력인 분기예측신호(BP)는 비활성화되어 메모리접근주소(ADR)는 분기목적주소(TAD)로부터 1씩 증가하게 되어, 도 8e에 도시된 바와 같이 분기명령어에 의해 실행되는 루프명령어들을 1씩 증가하는 기록포인트(WP)에 의해 순차적으로 명령어 큐 저장부(10)의 두번째 엔트리(E2)와 세번째 엔트리(E3)에 각각 제3일반명령어(Ins C)와 분기명령어(Branch)를 각각 저장한다.
상태제어부(50)에서 출력되는 상태제어신호(ST)가 필상태(FST)일 때에는 명령어 큐 저장부(10)의 각 엔트리들에 저장된 명령어는 판독포인트(RP)에 디코더(20)로 판독되더라도 지워지지 않아야 하므로, 판독포인트(RP)에 의해 각 엔트리의 명령어들이 판독될 때에도 유효필드(V)는 계속 하이논리값을 갖도록 한다.
따라서, 도 8e 및 도 8f에 도시된 바와 같이 판독포인트(RP)가 1씩 증가하여 명령어 큐 저장부(10)의 첫번째 엔트리(E1)에 저장된 제2일반명령어(Ins B)가 판독되더라도 첫번째 엔트리(E1)의 유효필드(V)는 하이논리값을 계속 가진다.
상기와 동일하게 명령어 큐 저장부(10)의 두번째 엔트리(E2)에 저장된 제3일반명령어(Ins C)와 세번째 엔트리(E3)에 저장된 분기명령어(Branch)가 순차적으로 디코더(20)로 판독되며, 두번째 엔트리(E2)와 세번째 엔트리(E3)의 유효필드(V)는 계속해서 하이논리값을 유지한다.
도 8f에 도시된 바와 같이 필상태(FST)에서 명령어 큐 저장부(10)의 세번째 엔트리(E3)에 저장된 분기명령어(Branch)가 판독포인트(RP)에 의해 디코더(20)로 판독되면, 분기명령어주소저장부(30)로 분기명령어주소(TAG)가 저장되고, 저장된 분기명령어주소(TAG)와 현재 메모리접근주소(ADR)는 동일하므로 제1비교부(60)의 출력인 분기예측신호(BP)는 활성화상태인 하이논리값을 갖게 된다.
하이논리값을 갖는 분기예측신호(BP)에 의해 도 5 및 도 6에 도시된 바와 같이 제8데이터선택부(MUX8)와 제10데이터선택부(MUX10)에 의해 상태제어부(50)는 활성상태(AST)를 갖는 상태제어신호(ST)를 출력한다.
상태제어신호(ST)가 활성상태(AST)일 때에는 제2데이터선택부(MUX2)의 출력인 명령어접근 인에이블신호(IAE)는 로우논리값을 갖는 비활성상태가 되어 메모리(100)에 저장된 명령어들이 명령어 큐 저장부(10)로 페치되지 않도록 하고, 제3데이터선택부(MUX3)에 의해 기록포인트(WP)는 그 전의 기록포인트를 갖도록 하여 기록포인트(WP)는 도 8g에 도시된 바와 같이 계속해서 명령어 큐 저장부(10)의 네번째 엔트리(E4)의 위치에 있게 된다.
또한, 활성상태(AST)의 초기에는 판독포인트(RP)는 명령어 큐 저장부(10)의 첫번째 엔트리(E1)에 위치하므로 제2비교부(93)의 출력인 비교신호(CP)는 비활성화되어, 리드포인트 카운터(93)와, 제4데이터선택부(MUX4)와 제5데이터선택부(MUX5)에 의해 리드포인트(RP)는 1씩 증가한다. 도 8h에 도시된 바와 같이 1씩 증가하는 리드포인트(RP)에 의해 명령어 큐 저장부(10)의 첫번째 엔트리(E1)에 저장된 제2일반명령어(Ins B), 두번째 엔트리(E2)에 저장된 제3일반명령어(Ins C), 세번째 엔트리(E3)에 저장된 분기명령어(Branch)가 순차적으로 디코더(20)로 판독된다.
명령어 큐 저장부(10)의 세번째 엔트리(E3)에 저장된 분기명령어(Branch)가 판독된 후, 현재의 리드포인트(RP)=현재의 기록포인트(WP)-1인 값을 가지므로, 제2비교부(93)의 출력인 비교신호(CP)는 하이논리값을 갖는 활성화상태가 되므로, 리드포인트(RP)는 제4데이터선택부(MUX4)와 제5데이터선택부(MUX5)에 의해 명령어 큐 저장부(10)의 첫번째 엔트리(E1)의 주소(ARE1)가 되어, 상태제어신호(ST)가 활성상태(AST)일 때에는 계속해서 루프명령어들인 제2일반명령어(Ins B), 제3일반명령어(Ins C), 분기명령어(Branch)들의 명령어들이 순차적으로 디코더(20)로 판독되며, 계속해서 분기명령어에 의한 동일한 루프명령어들이 판독처리되기 위해 루프명령어들이 저장된 각 엔트리의 유효필드(V)는 하이논리값을 갖는다.
만약 필상태(FST)에서 이전에 발생한 분기명령어와 다른 분기명령어가 발생하면, 디코더(20)는 다른 분기명령어임을 나타내는 다른분기명령발생신호(OB)를 활성화시키고, 하이논리값을 다른분기명령발생신호(OB)에 의해 도 6의 제7데이터선택부(MUX7)와, 제8데이터선택부(MUX8)과 제10데이터선택부(MUX10)에 의해 상태제어부(50)의 출력인 상태제어신호(ST)는 정상상태(NST)로 천이된다.
또한, 상태제어신호(ST)가 활성상태(AST)에서 이전에 발생한 분기명령어와 다른 분기명령어가 발생하면, 디코더(20)의 출력인 다른분기명령발생신호(OB)가 활성화되어, 도 6의 제9데이터선택부(MUX9)와, 제10데이터선택부(MUX10)에 의해 상태제어부(50)의 출력인 상태제어신호(ST)는 정상상태(NST)로 천이된다.
이와 같이 본 발명의 명령어 큐 제어장치는 상태제어신호(ST)가 정상상태(NST)일 때에는 종래와 동일하게 메모리(100)로부터 명령어들이 페치되어 명령어 큐 저장부(10)에 저장되고, 상태제어신호(ST)가 필상태(FST)일 때에는 메모리(100)로부터 분기명령어에 의해 분기되어 처리되어야 할 루프명령어들만을 명령어 큐 저장부(10)에 저장하고, 상태제어신호(ST)가 활성상태(AST)일 때에는 명령어 큐 저장부(10)에 저장된 루프명령어들을 디코더(20)로 판독하여 분기명령어를 처리하도록 하여, 종래와는 달리 분기명령어 처리를 위해 메모리(100)로부터 분기명령어 처리를 위한 루프명령어들을 페치할 필요가 없다.
Claims (5)
- 다수의 일반명령어 및 분기명령어들로 구성된 명령어들이 저장된 메모리(100)와, 다수개의 명령어들이 각각 저장되는 다수개의 엔트리들(E1∼E8)로 구성되어 메모리접근주소(ADR)에 따라 상기 메모리(100)에 저장된 상기 명령어들 중 일부 명령어들을 상기 메모리(100)로부터 미리 페치하여 각각의 엔트리들에 저장하는 명령어 큐 저장부(10)와, 상기 명령어 큐 저장부(10)의 각각의 엔트리들에 저장된 명령어들을 판독하여 명령어들을 해석하는 디코더(20)를 구비하여 상기 명령어 큐 저장부(10)에 저장된 분기명령어에 의한 조건이 일치되면 분기목적주소로 분기되고, 분기목적주소에 위치한 메모리로부터 상기 분기명령어에 의해 실행되는 루프 내의 다수의 명령어들인 루프명령어들을 상기 명령어 큐 저장부로 저장하는 명령어 큐 제어장치에 있어서,
상기 명령어 큐 저장부(10)에 저장된 명령어들을 상기 디코더(20)로 판독하여, 상기 디코더(20)에 의해 판독된 명령어가 분기명령어(Branch)이면 분기명령어가 저장되어 있는 메모리(100)의 주소인 분기명령어주소(TAG)를 저장하는 분기명령어주소저장부(30);
상기 디코더(20)에 의해 판독된 명령어가 분기명령어이면, 상기 분기명령어에 의해 분기되는 분기목적주소(TAD)를 저장하는 분기목적주소저장부(40);
상기 분기명령어는 처음 발생한 분기명령어이고, 해당 분기명령어에 의한 조건이 일치되어 분기가 발생하고, 상기 분기명령어에 의해 실행되는 루프명령어들의 수가 상기 명령어 큐 저장부(10)의 엔트리들의 수보다 작으면, 상기 메모리(100)에 저장된 루프명령어들만이 순차적으로 상기 명령어 큐 저장부(10)에 저장되는 필상태(FST)와, 상기 필상태(FST)에서 명령어 큐 저장부(10)에 저장된 마지막 분기명령어에 따라 명령어 큐 저장부(10)에 저장된 루프명령어들만을 상기 디코더(20)로 판독하는 활성상태(AST)와, 상기 메모리(100)에 저장된 일반명령어 또는 분기명령어들이 페치되어 상기 명령어 큐 저장부(10)로 저장되는 정상상태(NST)를 갖는 상태제어신호(ST)를 출력하며, 상기 상태제어신호(ST)가 필상태(FST)일 때 상기 명령어 큐 저장부(10)에 저장된 루프명령어들에 의해 상기 분기명령어와 다른 분기주소를 갖는 분기명령어이면 상기 필상태(FST)에서 정상상태(NST)로 천이되고, 상기 상태제어신호(ST)가 활성상태(AST)일 때에 상기 루프명령어들에 의해 상기 분기명령어와 다른 분기주소를 갖는 분기명령어이면 상기 활성상태(AST)에서 정상상태(NST)로 천이하는 상태제어부(50);
상기 분기명령어주소저장부(30)에 저장된 분기명령어주소(TAG)와 메모리접근주소(ADR)를 수신하여 상기 분기명령어주소(TAG)와 메모리접근주소(ADR)를 비교하여 동일하면 활성화된 분기예측신호(BP)를 출력하는 제1비교부(60);
상기 분기예측신호(BP)가 활성화되면 상기 분기목적주소저장부(40)에 저장된 분기목적주소(TAD)를 가지며, 상기 분기예측신호(BP)가 비활성화되면 1씩 증가하는 메모리접근주소(ADR)와, 상기 상태제어부(50)의 상태제어신호(ST)가 정상상태(NST)이거나 필상태(FST)이면 상기 메모리접근주소(ADR)에 따라 메모리(100)에 저장된 명령어들을 상기 명령어 큐 저장부(10)로 페치하고, 상기 상태제어신호(ST)가 활성상태(AST)이면 상기 메모리(100)에 저장된 명령어들이 상기 명령어 큐 저장부(10)로 페치되지 않도록 상기 메모리(100)를 제어하는 명령어 접근 인에이블신호(IAE)를 출력하는 메모리 접근 제어부(70);
명령어 페치 요구신호(IFR)가 활성화되고, 상기 상태제어부(50)의 상태제어신호(ST)가 정상상태(NST)이면, 1씩 증가하는 기록포인트(WP)를 출력하여 상기 기록포인트(WP)가 위치한 상기 명령어 큐 저장부(10)의 특정 엔트리에 상기 메모리(100)로부터 페치된 명령어가 저장되고, 명령어 페치 요구신호(IFR)가 활성화되고, 상기 상태제어신호(ST)가 필상태(FST)이면 상기 기록포인트(WP)는 상기 명령어 큐 저장부(10)의 첫번째 엔트리의 주소(ARE1)를 가진 후, 1씩 증가하여 상기 루프명령어들을 상기 명령어 큐 저장부(10)의 첫번째 엔트리(E1)부터 순차적으로 저장하고, 상기 명령어 페치 요구신호(IFR)가 활성화되고, 상기 상태제어신호(ST)가 활성상태(AST)이면 기록포인트(WP)는 현재의 기록포인트를 가지며, 상기 명령어 페치 요구신호(IFR)가 비활성화되면 상기 메모리(100)로부터 페치된 명령어들이 상기 명령어 큐 저장부(10)로 기록되지 못하는 기록포인트 제어부(80); 및
디코더 요구신호(DRQ)가 활성화되면, 1씩 증가하는 판독포인트(RP)를 출력하여 상기 판독포인트(RP)에 따라 명령어 큐 저장부(10)의 특정 엔트리에 저장된 명령어를 디코더(20)로 판독되고, 상기 디코더 요구신호(DRQ)가 활성화되고 상기 상태제어부(50)의 상태제어신호(ST)가 활성상태(AST)이고 판독포인트(RP)가 현재의 기록포인트(WP)에서 1을 감산한 값과 동일하면 상기 판독포인트(RP)는 상기 명령어 큐 저장부(10)의 첫번째 엔트리(E1)에 저장된 명령어를 상기 디코더(20)로 판독하고, 디코더 요구신호(DRQ)가 비활성화되면 상기 명령어 큐 저장부(10)에 저장된 명령어들은 상기 디코더(20)로 판독되지 못하는 판독포인트 제어부(90)를 구비한 것을 특징으로 하는 명령어 큐 제어장치.
- 제 1 항에 있어서, 상기 메모리 접근 제어부(70)는
메모리접근주소(ADR)를 수신하여, 상기 메모리접근주소(ADR)를 1씩 증가시키는 메모리접근주소 카운터(71);
제1입력단(I0), 제2입력단(I1), 선택입력단(S) 및 출력단(O)을 가지며, 선택입력단(S)은 상기 분기예측신호(BP)에 연결되고, 제1입력단(I0)은 상기 메모리접근주소 카운터(71)의 출력과 연결되며, 제2입력단(I1)은 분기목적주소(TAD)에 연결되고, 출력단(O)으로 메모리접근주소(ADR)를 출력하고, 상기 분기예측신호(BP)가 비활성화되면 상기 메모리접근주소(ADR)는 상기 제1입력단(I0)으로 입력되는 메모리접근주소 카운터(71)의 출력을 선택하고, 상기 분기예측신호(BP)가 활성화되면 상기 메모리접근주소(ADR)는 상기 제2입력단(I1)으로 입력되는 분기목적주소(TAD)를 선택하는 제1데이터선택부(MUX1); 및
제1입력단(I0), 제2입력단(I1), 선택입력단(S) 및 출력단(O)을 가지며, 선택입력단(S)은 상기 상태제어신호(ST)에 연결되고, 제1입력단(I0)은 하이논리값을 갖고, 제2입력단(I1)은 로우논리값을 가지고, 출력단(O)으로 명령어접근 인에이블신호(IAE)를 출력하여, 상기 상태제어신호(ST)가 정상상태(NST)이거나 필상태(FST)이면 상기 명령어접근 인에이블신호(IAE)는 상기 제1입력단(I0)으로 입력되는 하이논리값을 갖게되어 메모리접근주소(ADR)에 따라 상기 메모리(100)에 저장된 명령어들을 상기 명령어 큐 저장부(10)로 페치하고, 상기 상태제어신호(ST)가 활성상태(AST)이면 상기 명령어접근 인에이블신호(IAE)는 상기 제2입력단(I1)으로 입력되는 로우논리값을 갖게되어 상기 메모리(100)에 저장된 명령어들이 상기 명령어 큐 저장부(10)로 페치되지 못하는 제2데이터선택부(MUX2)를 구비한 것을 특징으로 하는 명령어 큐 제어장치.
- 제 1 항에 있어서, 상기 기록포인트 제어부(80)는
기록포인트(WP)를 수신하여, 상기 기록포인트(WP)를 1씩 증가시키는 기록포인트 카운터(81); 및
제1입력단(I0), 제2입력단(I1), 선택입력단(S), 출력단(O) 및 인에이블단(EN)을 가지며, 인에이블단(EN)은 명령어 페치 요구신호(IFR)와 연결되고, 선택입력단(S)은 상기 상태제어신호(ST)에 연결되고, 제1입력단(I0)은 상기 기록포인트 카운터(81)의 출력과 연결되며, 제2입력단(I1)과 출력단(O)은 기록포인트(WP)와 연결되어, 상기 명령어 페치 요구신호(IFR)가 비활성화되면 상기 메모리(100)로부터 페치된 명령어들이 상기 명령어 큐 저장부(10)로 기록되지 못하고, 상기 명령어 페치 요구신호(IFR)가 활성화되고, 상기 상태제어신호(ST)가 정상상태(NST)이면, 상기 출력단(O)으로 출력되는 기록포인트(WP)는 상기 제1입력단(I0)으로 입력되는 상기 기록포인트 카운터(81)의 출력을 선택하고, 상기 명령어 페치 요구신호(IFR)가 활성화되고, 상기 상태제어신호(ST)가 필상태(FST)이면 상기 기록포인트(WP)는 상기 명령어 큐 저장부(10)의 첫번째 엔트리의 주소(ARE1)로 변경된 후 상기 기록포인트 카운터(81)의 출력을 선택하고, 상기 명령어 페치 요구신호(IFR)가 활성화되고, 상기 상태제어신호(ST)가 활성상태(AST)이면 출력단(O)으로 출력되는 기록포인트(WP)는 제2입력단(I1)으로 입력되는 기록포인트(WP)를 선택하는 제3데이터선택부(MUX3)를 구비한 것을 특징으로 하는 명령어 큐 제어장치.
- 제 1 항에 있어서, 상기 판독포인트 제어부(90)는
판독포인트(RP)를 수신하여, 상기 판독포인트(RP)를 1씩 증가시키는 판독포인트 카운터(91);
상기 기록포인트(WP)와 판독포인트(RP)를 수신하여, 판독포인트(RP)가 기록포인트(WP)에 1을 감산한 감산값과 동일하면 활성화되고, 판독포인트(RP)가 기록포인트(WP)에 1을 감산한 감산값과 동일하지 않으면 비활성화되는 비교신호(CP)를 출력하는 제2비교부(93);
제1입력단(I0), 제2입력단(I1), 선택입력단(S), 출력단(O)을 가지며, 선택입력단(S)은 상기 비교신호(CP)에 연결되고, 제1입력단(I0)은 상기 판독포인트 카운터(91)의 출력과 연결되며, 제2입력단(I1)은 상기 명령어 큐 저장부(10)의 첫번째 엔트리의 주소(ARE1)와 연결되어, 상기 비교신호(CP)가 비활성화되면 상기 출력단(O)은 제1입력단(I0)으로 입력되는 상기 판독포인트 카운터(91)의 출력을 선택하고, 상기 비교신호(CP)가 활성화되면 상기 출력단(O)은 제2입력단(I2)으로 입력되는 상기 명령어 큐 저장부(10)의 첫번째 엔트리의 주소(ARE1)를 선택하는 제4데이터선택부(MUX4); 및
제1입력단(I0), 제2입력단(I1), 선택입력단(S), 출력단(O) 및 인에이블단(EN)을 가지며, 인에이블단(EN)은 디코더 요구신호(DRQ)와 연결되고, 선택입력단(S)은 상기 상태제어부(50)의 출력인 상태제어신호(ST)에 연결되고, 제1입력단(I0)은 상기 판독포인트 카운터(91)의 출력과 연결되며, 제2입력단(I1)은 상기 제4데이터선택부(MUX4)의 출력단(O)과 연결되어, 상기 디코더 요구신호(DRQ)가 비활성화되면 상기 명령어 큐 저장부(10)에 저장된 명령어들은 상기 디코더(20)로 판독되지 못하고, 상기디코더 요구신호(DRQ)가 활성화되고, 상기 상태제어신호(ST)가 정상상태(NST) 또는 필상태(FST)이면 상기 출력단(O)은 상기 제1입력단(I0)으로 입력되는 판독포인트 카운터(91)의 출력을 선택하고, 상기디코더 요구신호(DRQ)가 활성화되고, 상기 상태제어신호(ST)가 활성상태(AST)이면 상기 출력단(O)은 상기 제2입력단(I1)으로 입력되는 상기 제4데이터선택부(MUX4)의 출력을 선택하는 제5데이터선택부(MUX5)를 구비한 것을 특징으로 하는 명령어 큐 제어장치.
- 제 1 항에 있어서, 상기 명령어 큐 저장부(10)는 각각의 엔트리들에 대응되는 유효필드를 구비하여, 상기 기록포인트(WP)에 의해 상기 메모리로부터 페치되는 명령어가 상기 명령어 큐 저장부(10)의 특정 엔트리에 기록되면 해당 엔트리의 유효필드는 활성화되고, 상기 상태제어신호(ST)가 정상상태(NST)이고 상기 판독포인트(RP)에 의해 상기 명령어 큐 저장부(10)의 특정 엔트리에 저장된 명령어가 판독될 때 해당 엔트리의 유효필드는 비활성화되고, 상기 상태제어신호(ST)가 필상태(FST)나 활성상태(AST)이고 상기 판독포인트(RP)에 의해 상기 명령어 큐 저장부(10)의 특정 엔트리의 명령어가 판독될 때 해당 엔트리의 유효필드는 계속 활성화되는 것을 특징으로 하는 명령어 큐 제어장치.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020110060564A KR101306622B1 (ko) | 2011-06-22 | 2011-06-22 | 명령어 큐 제어장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020110060564A KR101306622B1 (ko) | 2011-06-22 | 2011-06-22 | 명령어 큐 제어장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20130000083A KR20130000083A (ko) | 2013-01-02 |
KR101306622B1 true KR101306622B1 (ko) | 2013-09-11 |
Family
ID=47833734
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020110060564A KR101306622B1 (ko) | 2011-06-22 | 2011-06-22 | 명령어 큐 제어장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101306622B1 (ko) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9779057B2 (en) | 2009-09-11 | 2017-10-03 | Micron Technology, Inc. | Autonomous memory architecture |
KR20140134421A (ko) * | 2013-05-14 | 2014-11-24 | 한국전자통신연구원 | 이중 명령어 페치 장치 및 방법 |
US9779138B2 (en) | 2013-08-13 | 2017-10-03 | Micron Technology, Inc. | Methods and systems for autonomous memory searching |
US10003675B2 (en) | 2013-12-02 | 2018-06-19 | Micron Technology, Inc. | Packet processor receiving packets containing instructions, data, and starting location and generating packets containing instructions and data |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20060034998A (ko) * | 2004-10-20 | 2006-04-26 | 삼성전자주식회사 | 분기 예측부 접근을 제어하기 위한 장치 및 방법 |
KR20070071140A (ko) * | 2005-12-29 | 2007-07-04 | 매그나칩 반도체 유한회사 | 분기 타겟 버퍼 및 이를 이용한 분기 명령어 처리 방법 |
KR20100113269A (ko) * | 2009-04-13 | 2010-10-21 | 한양대학교 산학협력단 | 코드 제어 흐름 모호화 장치 및 방법 |
-
2011
- 2011-06-22 KR KR1020110060564A patent/KR101306622B1/ko active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20060034998A (ko) * | 2004-10-20 | 2006-04-26 | 삼성전자주식회사 | 분기 예측부 접근을 제어하기 위한 장치 및 방법 |
KR20070071140A (ko) * | 2005-12-29 | 2007-07-04 | 매그나칩 반도체 유한회사 | 분기 타겟 버퍼 및 이를 이용한 분기 명령어 처리 방법 |
KR20100113269A (ko) * | 2009-04-13 | 2010-10-21 | 한양대학교 산학협력단 | 코드 제어 흐름 모호화 장치 및 방법 |
Also Published As
Publication number | Publication date |
---|---|
KR20130000083A (ko) | 2013-01-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9772851B2 (en) | Retrieving instructions of a single branch, backwards short loop from a local loop buffer or virtual loop buffer | |
US20150052533A1 (en) | Multiple threads execution processor and operating method thereof | |
KR101306622B1 (ko) | 명령어 큐 제어장치 | |
EP3757771A1 (en) | Methods, apparatuses, and media for processing loop instruction set | |
TW201411486A (zh) | 迴圈緩衝器封裝 | |
US20130036426A1 (en) | Information processing device and task switching method | |
US11231933B2 (en) | Processor with variable pre-fetch threshold | |
CN104346132B (zh) | 应用于智能卡虚拟机运行的控制装置及智能卡虚拟机 | |
TWI511077B (zh) | 下一指令類型欄位 | |
JP2009059246A (ja) | マイクロプロセッサ | |
JP5159258B2 (ja) | 演算処理装置 | |
US7346737B2 (en) | Cache system having branch target address cache | |
US20050102659A1 (en) | Methods and apparatus for setting up hardware loops in a deeply pipelined processor | |
JPH03233630A (ja) | 情報処理装置 | |
US8484445B2 (en) | Memory control circuit and integrated circuit including branch instruction and detection and operation mode control of a memory | |
CN112148366A (zh) | 一种芯片降低功耗提升性能的flash加速方法 | |
JP5630281B2 (ja) | ベクトル命令制御回路及びリストベクトルの追い越し制御方法 | |
US7836277B2 (en) | Pre-tracing instructions for CGA coupled processor in inactive mode for execution upon switch to active mode and continuing pre-fetching cache miss instructions | |
US9507600B2 (en) | Processor loop buffer | |
US9135011B2 (en) | Next branch table for use with a branch predictor | |
JP5902208B2 (ja) | データ処理装置 | |
JP2020095345A (ja) | 演算処理装置、メモリ装置、及び演算処理装置の制御方法 | |
US10366049B2 (en) | Processor and method of controlling the same | |
US8478970B2 (en) | Accessing value for local variable from function call stack upon offset matching with instruction extracted stack pointer offset or from cache | |
TW200931443A (en) | Apparatus for predicting memory access and method thereof |
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: 20160905 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20190903 Year of fee payment: 7 |