KR101319287B1 - 파이프라인 구조를 갖는 프로세서 - Google Patents

파이프라인 구조를 갖는 프로세서 Download PDF

Info

Publication number
KR101319287B1
KR101319287B1 KR1020130024970A KR20130024970A KR101319287B1 KR 101319287 B1 KR101319287 B1 KR 101319287B1 KR 1020130024970 A KR1020130024970 A KR 1020130024970A KR 20130024970 A KR20130024970 A KR 20130024970A KR 101319287 B1 KR101319287 B1 KR 101319287B1
Authority
KR
South Korea
Prior art keywords
instruction
processor
data
instruction buffer
integer core
Prior art date
Application number
KR1020130024970A
Other languages
English (en)
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 KR1020130024970A priority Critical patent/KR101319287B1/ko
Priority to US13/895,937 priority patent/US9454376B2/en
Application granted granted Critical
Publication of KR101319287B1 publication Critical patent/KR101319287B1/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, 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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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
    • 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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding

Abstract

본 발명은 멀티 파이프 라인 패치(Multi pipeline fetch) 구조 또는 멀티 사이클 캐시(Multi cycle cache) 구조를 갖는 프로세서에서, 하위 블록으로부터 전달된 명령어를 읽고 처리하며, 하위 블록에 명령어 주소(Instruction address)를 전달하는 정수 코어(Integer Core), 상기 정수 코어가 상기 명령어 주소로 요청하는 명령어 데이터를 보관하고 있으며, 상기 정수 코어의 요청에 응답하여 명령어 데이터를 전달하기 위한 명령어 버퍼(Instruction Buffer) 및 프로그램 메모리의 일부 데이터를 보관하고 있으며, 상기 명령어 버퍼의 요청에 따라 데이터를 상기 명령어 버퍼에 전달하기 위한 명령어 캐시(Instruction Cache)를 포함한다.
본 발명의 다른 실시예에서 상기 명령어 캐시를 포함하지 않은 프로세서를 구현할 수 있다.
본 발명에 의하면 멀티 파이프 라인 패치(Multi pipeline fetch) 구조 또는 멀티 사이클 캐시(Multi cycle cache) 구조를 갖는 프로세서에서 정수 코어와 명령어 캐시 사이에 명령어 버퍼를 추가함으로써, 프로세서의 성능을 향상시킬 수 있는 효과가 있다.

Description

파이프라인 구조를 갖는 프로세서 {Processor with pipeline}
본 발명은 파이프라인 방식의 프로세서에 관한 것으로서, 보다 상세하게는 멀티 파이프라인 패치(Multi pipeline fetch) 구조 또는 멀티 사이클 캐시(Multi cycle cache) 구조를 갖는 프로세서에 관한 것이다.
파이프라인 방식(pipelined architecture)이란 컴퓨터에서 병렬처리를 위한 시스템 설계 방식으로서, 하나의 프로세서를 서로 다른 기능을 가진 여러 개의 서브프로세서로 나누어 각각의 서브프로세서가 동시에 다른 데이터를 처리하도록 설계하는 방식이다. 컴퓨터 명령어는 일반적으로 인출과 분석·내용인출·수행·저장의 5단계를 거치는데, 이 방식을 적용하지 않으면 컴퓨터 프로세서가 명령어들을 입력된 순서대로 하나씩 단계에 따라 처리할 수밖에 없다. 그러나 이 방식에서는 명령어를 병렬처리 할 수 있으므로 처리속도를 높일 수 있다.
파이프라인 방식에서 하나의 명령어가 5단계를 거쳐 완료되는 데에 소요되는 시간을 명령어 사이클이라고 하며, 각각의 단계에 소요되는 시간을 파이프라인 사이클이라고 한다. 파이프라인 사이클을 일정하게 하면 각 단계들을 동기적으로 동작시킬 수가 있으므로 제어하기가 간편하다. 파이프라인 사이클을 같도록 설계하려면 시간이 가장 많이 소요되는 단계를 기준으로 삼는다. 파이프라인 사이클이 일정하지 않을 수도 있는데, 이때는 각 단계 사이에 버퍼를 두어 비동기식으로 동작이 계속 이루어지게 한다.
파이프라인 방식을 명령어 파이프라인과 연산 파이프라인 두 종류로 나누기도 하는데, 명령어 파이프라인은 명령어가 프로세서를 통해 움직이는 단계를 의미한다. 여기에는 인출과 버퍼 저장·실행을 포함한다. 이에 비해 연산 파이프라인은 나뉘어지고 중복해서 수행될 수 있는 산술 연산의 일부를 의미한다. 한편, 파이프라인은 메모리 단계에 따라 여러 장소로 데이터를 옮기는 메모리 제어기에도 적용된다.
본 발명은 파이프라인 구조의 프로세서에서 멀티 사이클 캐시(Multi cycle cache)의 효율을 높이기 위한 명령어 버퍼(Instruction Buffer)를 포함하는 프로세서를 제공하는데 그 목적이 있다.
또한, 본 발명은 멀티 사이클 캐시의 효율을 높이기 위한 명령어 버퍼의 제어 방법을 제공하는데 그 다른 목적이 있다.
본 발명의 목적은 이상에서 언급한 목적으로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
이와 같은 목적을 달성하기 위한 본 발명은 멀티 파이프 라인 패치(Multi pipeline fetch) 구조 또는 멀티 사이클 캐시(Multi cycle cache) 구조를 갖는 프로세서에서, 하위 블록으로부터 전달된 명령어를 읽고 처리하며, 하위 블록에 명령어 주소(Instruction address)를 전달하는 정수 코어(Integer Core), 상기 정수 코어가 상기 명령어 주소로 요청하는 명령어 데이터를 보관하고 있으며, 상기 정수 코어의 요청에 응답하여 명령어 데이터를 전달하기 위한 명령어 버퍼(Instruction Buffer) 및 프로그램 메모리의 일부 데이터를 보관하고 있으며, 상기 명령어 버퍼의 요청에 따라 데이터를 상기 명령어 버퍼에 전달하기 위한 명령어 캐시(Instruction Cache)를 포함한다.
상기 프로그램 메모리에 직접 접근하기 위하여 내부 인터페이스를 버스(BUS) 인터페이스로 변경하기 위한 명령어 인터페이스 장치(Instruction Bus Interface Unit)를 더 포함할 수 있다.
상기 프로세서는 상기 정수 코어가 요청하기 전에 미리 상기 명령어 버퍼에 데이터를 채워두는 기법인 프리패치(Prefetch) 기법이 적용될 수 있다.
상기 프로세서는 상기 명령어 버퍼에서 비워져 있는 영역을 체크하고, 비워져 있는 영역을 채우기 위하여 프리패치 기법을 적용할 수 있다.
상기 명령어 버퍼에서 현재 접근하고 있는 영역을 기준으로 순차적으로 접근 가능한 영역을 슬라이딩 윈도우(sliding window)라고 할 때, 상기 프로세서는 상기 슬라이딩 윈도우를 지정하여 체크하는 방식으로 프리패치 기법을 적용할 수 있다.
본 발명에 의하면 멀티 파이프 라인 패치(Multi pipeline fetch) 구조 또는 멀티 사이클 캐시(Multi cycle cache) 구조를 갖는 프로세서에서 정수 코어와 명령어 캐시 사이에 명령어 버퍼를 추가함으로써, 프로세서의 성능을 향상시킬 수 있는 효과가 있다.
도 1은 프로세서의 파이프라인 구조를 보여주는 도면이다.
도 2는 멀티 파이프라인 방식의 파이프 라인 구조를 보여주는 도면이다.
도 3은 멀티 사이클 방식의 파이프 라인 구조를 보여주는 도면이다.
도 4는 파이프라인 프로세서에서의 명령어 처리 방식을 보여주는 도면이다.
도 5는 멀티 파이프라인 방식의 프로세서에서 명령어 처리 방식을 보여주는 도면이다.
도 6은 멀티 사이클 방식의 프로세서에서 명령어 처리 방식을 보여주는 도면이다.
도 7은 본 발명의 일 실시예에 따른 프로세서의 구조를 보여주는 블록도이다.
도 8은 본 발명의 다른 실시예에 따른 프로세서의 구조를 보여주는 블록도이다.
도 9는 본 발명의 일 실시예에 따른 명령어 버퍼의 프리패치(prefetch)를 설명하기 위한 도면이다.
도 10은 본 발명의 일 실시예에 따른 명령어 버퍼의 제어 방법을 보여주는 흐름도이다.
이하, 첨부된 도면을 참조해서 본 발명의 실시예를 상세히 설명하면 다음과 같다. 우선 각 도면의 구성 요소들에 참조 부호를 부가함에 있어서, 동일한 구성 요소들에 한해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 그리고, 본 발명을 설명함에 있어서, 관련된 공지 기능 혹은 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 명세서 전반에 걸쳐서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라, 다른 구성요소를 더 포함할 수 있다는 것을 의미한다.
일반적으로 프로세서(Processor)의 속도를 높이기 위하여 프로세서를 파이프라인(Pipeline) 구조로 구현한다.
도 1은 프로세서의 파이프라인 구조를 보여주는 도면이다. 도 1은 일반적인 5단 파이프라인 구조를 도시한 도면이다.
도 1을 참조하면, 파이프라인 프로세서는 패치(Fetch) 단(110), 디코드(Decode) 단(120), 엑시큐트(Execute) 단(130), 메모리(Memory) 단(140), 라이트 백(Write Back) 단(150)을 포함한다.
패치(Fetch) 단(110)은 Instruction Fetch(IF)로서, 명령어 메모리에 접근하여 명령어를 가지고 온다. 패치 단(110)은 명령어 메모리로부터 직접 명령어를 인출하는 방법이 가장 기본적인 구성이다.
명령어 메모리의 동작 속도가 프로세서의 동작속도보다 느릴 경우에는 명령어 캐시가 정수 코어(Integer Core) 외부에 추가적으로 구성되는 것이 일반적이기 때문에, 패치 단(110)에서는 명령어 캐시를 먼저 검사하여 명령어를 인출하고, 명령어 캐시에 해당 명령어가 존재하지 않는다면 명령어 메모리로 접근하여 명령어를 인출한다.
디코드 단(120)은 Instruction Decode(ID)로서, 패치 단(110)에서 인출해 온 명령어에 대한 해석을 수행하며, 명령어 해석에 따라 파이프라인의 각 데이터 패스 요소에 필요한 제어 신호를 생성하고, 필요한 operand를 인출한다.
디코드 단(120)에서 대부분의 제어가 수행되며, 제어 상태 머신으로 전환하는 것이나, 분기를 수행하는 등의 동작을 수행한다.
디코드 단(120)에서 Operand 처리의 경우에는 데이터 간의 의존성 및 하드웨어 의존성 등을 점검하여 피할 수 없는 의존성의 경우 bubble stage를 발생시키며, 피할 수 있는 경우에는 포워딩(forwarding)함으로써 의존성 문제를 해결하는 동작을 수행한다.
엑시큐트 단(130)에서는 프로세서에서 수행하는 대부분의 연산을 처리하며(ALU), 데이터 접근을 위한 주소를 생성하는 작업을 수행한다.
메모리 단(140)에서는 프로세서가 데이터 메모리에 접근하여 데이터를 리드 및 라이트(READ/WRITE)하는 동작을 수행한다.
데이터 메모리가 느릴 경우 정수 코어(Integer Core) 외부에 데이터 캐시가 추가로 구성되는 것이 일반적이기 때문에, 메모리 단(140)에서는 데이터 캐시를 먼저 검사하여 데이터를 리드 및 라이트(READ/WRITE)하고, 데이터 캐시에 해당 데이터가 존재하지 않는다면 데이터 메모리에 접근하여 데이터를 리드 및 라이트(READ/WRITE)하는 동작을 수행한다.
라이트 백(150) 단은 연산의 결과 혹은 메모리 접근을 통하여 취득한 새로운 데이터를 프로세서 내부의 레지스터에 반영하는 단이다.
도 4는 파이프라인 프로세서에서의 명령어 처리 방식을 보여주는 도면이다.
도 4를 참조하면, 410 영역에서 파이프라인의 효과로서 1-사이클(cycle)에 1개의 명령어가 처리되는 것으로 보인다.
도 1을 참조하면, 프로세서의 속도를 높이기 위해서 프로세서를 파이프라인 시킨 개념도이며, 5단 파이프라인 프로세서를 예시한 도면이다.
이때 해당 프로세스가 동작하는 속도는 파이프라인 중 가장 느린 속도로 동작하는 파이프라인에 의존하게 된다.
도 1에서 Time1 -> … -> Time4 의 흐름은 프로세서 제조공정이 낮아짐을 표시한 것이고, 프로세서 제조공정이 낮아짐에 따라 각 파이프라인의 속도 변화를 화살표 크기로 표시하고 있다.
여기서 프로세서 제조공정이 낮아진다는 것은 프로세서를 실제 실리콘 칩으로 제작하는 공정의 기준 선폭이 작아진다는 것을 의미한다. 예를 들어, 제작 공정의 선폭은 1um -> 0.8um -> 0.6um -> 0.35um -> 0.18um -> 90um -> 65nm -> 45nm -> 40nm -> 35nm -> 20nm 로 계속 줄어들게 되며, 이를 프로세서 제조공정이 낮아진다고 표현한다.
제조 공정이 낮아지면 동일하게 설계된 프로세서를 실리콘으로 제작할 때 다음과 같은 기본 효과가 발생한다.
첫째, 선폭이 줄어들면 전자가 이동하는 거리가 줄어들기 때문에 동작 속도가 증가한다.
둘째, 선폭이 줄어들기 때문에 프로세서의 면적이 축소된다.
셋째, 면적이 줄어들면 실리콘으로 제작된 프로세서의 가격이 낮아진다.
일반적으로 제조공정이 낮아지면 로직의 속도는 이에 비례하여 속도가 증가하지만, 메모리는 로직보다는 느리게 속도가 증가하게 된다. 그 결과, 메모리를 사용하여 구현되는 명령어 캐시(Instruction Cache)와 데이터 캐시(Data Cache)에 영향을 받는 부분인 패치 단(110)과 메모리 단(140)의 속도가 상대적으로 느리게 된다. 이러한 프로세서에서의 메모리 속도 지연을 해결하기 위하여 멀티 파이프라인 방식의 프로세서를 구현한다.
도 2는 멀티 파이프라인 방식의 파이프 라인 구조를 보여주는 도면이다.
도 2를 참조하면, 실제 프로세스에서 메모리 속도의 의한 지연을 향상시키는 방법이 파이프라인으로 표시되어 있다.
즉, 멀티 파이프라인 방식에서는 패치(Fetch) 단(210)을 1-사이클에서 2-사이클 또는 3-사이클로 더 나누는 방식이다.
또한, 멀티 파이프라인 방식에서 메모리(Memory) 단(240)은 ALU 파이프라인,
MAC 파이프라인, 로드/스토어(Ld/St) 파이프라인(pipeline) 등으로 세분화될 수 있다.
멀티 파이프라인 방식과 유사한 개념으로서, 패치 단과 메모리 단을 멀티 사이클로 구성하는 방식이 있다.
도 3은 멀티 사이클 방식의 파이프 라인 구조를 보여주는 도면이다.
도 3을 참조하면, 1-사이클을 가졌던 패치 단(310)과 메모리 단(340)이 2-사이클로 변화하는 모습을 보여주고 있다.
도 5는 멀티 파이프라인 방식의 프로세서에서 명령어 처리 방식을 보여주는 도면이다.
도 5를 참조하면, 패치 단에 대한 멀티 파이프라인을 구현한 실시예가 도시되어 있다. 즉, 510 영역에서 패치 단을 F1/F2 처럼 2단으로 구현하는 것이 Fetch단에 대한 멀티 파이프라인이다. 이렇게 구성하면 F1/F2가 동시에 처리가능하기 때문에 성능 효율이 크다는 장점이 있지만, 제어 및 병렬 처리를 위한 하드웨어 로직이 늘어나는 단점이 있다.
도 6은 멀티 사이클 방식의 프로세서에서 명령어 처리 방식을 보여주는 도면이다.
패치 단을 n-사이클로 단으로 구현하는 것이 패치(Fetch) 단에 대한 멀티 사이클이다.
도 6을 참조하면, 패치 단에 대한 멀티 사이클을 구현한 실시예가 도시되어 있다. 즉, 610 영역에서 패치 단을 2-사이클로 구현한 것을 확인할 수 있다.
멀티 사이클 방식의 프로세서 구성은 하드웨어 로직의 거의 늘어나지 않는다는 장점이 있으나, 성능이 n배 느려진다는 단점이 있다. 그래서 성능을 보완할 다른 수단이 필요하게 된다.
도 7은 본 발명의 일 실시예에 따른 프로세서의 구조를 보여주는 블록도이다.
도 7을 참조하면, 본 발명의 프로세서는 정수 코어(Integer Core)(710), 명령어 버퍼(Instruction Buffer)(720), 명령어 캐시(Instruction Cache)(730), 명령어 인터페이스 장치(Instruction Bus Interface Unit)(740)를 포함하여 이루어진다.
정수 코어(710)는 명령어를 읽고 처리하는 블록이다. 본 발명에서 정수 코어(710)는 명령어를 읽기 위해 iaddr(Instruction Address)를 하위 블록에 전달하고, iaddr에 대한 데이터를 전달받아 동작한다.
명령어 버퍼(720)는 정수 코어(710)가 iaddr로 요청하는 명령어 데이터를 보관하고 있으며, 정수 코어(710)의 요청에 응답하여 명령어 데이터를 전달한다.
명령어 버퍼(720)는 자체적인 프리패치(Prefetch) 기법을 통해 내부의 명령어 데이터를 유지한다. 실제로 명령어 버퍼(720)의 크기에 물리적인 제약이 있으므로 정수 코어(710)가 요청하는 iaddr의 데이터를 유지하기에는 한계가 존재한다. 따라서, 명령어 버퍼(720)는 현재 정수 코어(710)의 iaddr을 기준으로 이후 요청할 명령어 데이터를 채워두는 프리패칭(Prefetching)을 지속적으로 수행한다. 예를 들어, 명령어 버퍼(720)에서는 프리패칭(Prefetching)시에 128 비트(bit) × 4 만큼의 데이터를 채우게 된다.
명령어 캐시(730)는 프로그램 메모리의 일부 데이터를 보관하고 있다.
본 발명에서 명령어 캐시(730)는 명령어 버퍼(720)의 프리패칭(Prefetching)시에 해당하는 데이터를 명령어 버퍼(720)에 전달한다.
명령어 캐시(730)도 물리적인 크기의 제한이 존재하기 때문에 메모리의 일부 명령어 데이터만을 보관하고 있다. 명령어 캐시(730) 내에 존재하지 않는 영역의 명령어 데이터를 요청하는 경우에는 메모리에 접근하여 명령어 데이터를 읽어와 채우게 된다. 예를 들어, 명령어 캐시(730)에서는 메모리로부터 명령어 데이터를 채울 때 128 비트(bit) × 4 만큼의 데이터를 채우게 된다.
명령어 인터페이스 장치(740)는 메모리에 직접 접근을 하기 위해 내부 인터페이스를 버스 인터페이스(750)로 바꾸어 처리하는 블록이다.
본 발명에서 명령어 버퍼(720)와 명령어 캐시(730)는 크기와 응답 사이클에서 차이점이 있다. 즉, 명령어 버퍼(720)는 명령어 캐시(730) 보다 작은 양의 명령어 데이터를 보관하고 있으며, 정수 코어(710)의 명령어 데이터를 지연없이 전달할 수 있다. 반면, 명령어 캐시(730)는 명령어 버퍼(720)보다 많은 양의 명령어 데이터를 보관하며, 명령어 캐시(730)의 내부 데이터를 출력하기 위해서는 N 사이클이 필요하다.
멀티 파이프라인 패치(Multi Pipeline Fetch) 구조를 갖는 프로세서와 멀티 사이클 캐시(Multi Cycle Cache) 구조를 갖는 프로세서는 메모리로부터 데이터를 가져오는 부분이 멀티 사이클(multi-cycle)로 구현된다. 따라서 프로세서의 성능은 멀티 사이클(multi-cycle)에 반비례하게 된다.
이러한 경우 명령어를 가져올 때의 성능을 향상시키기 위하여, 본 발명에서는 정수 코어(710)와 명령어 캐시(730)사이에 명령어 버퍼(720)를 추가하는 개념이다.
도 8은 본 발명의 다른 실시예에 따른 프로세서의 구조를 보여주는 블록도이다. 도 8은 도 7에서 명령어 캐시(730)가 포함되지 않은 프로세서의 구조에 대한 실시예이다.
도 8을 참조하면, 본 발명의 다른 실시예에 따른 프로세서는 정수 코어(Integer Core)(710), 명령어 버퍼(Instruction Buffer)(720), 명령어 인터페이스 장치(Instruction Bus Interface Unit)(740)를 포함하여 이루어진다.
정수 코어(710)는 명령어를 읽고 처리하는 블록이다. 본 발명에서 정수 코어(710)는 명령어를 읽기 위해 iaddr(Instruction Address)를 하위 블록에 전달하고, iaddr에 대한 데이터를 전달받아 동작한다.
명령어 버퍼(720)는 정수 코어(710)가 iaddr로 요청하는 명령어 데이터를 보관하고 있으며, 정수 코어(710)의 요청에 응답하여 명령어 데이터를 전달한다.
명령어 버퍼(720)는 자체적인 프리패치(Prefetch) 기법을 통해 내부의 명령어 데이터를 유지한다. 실제로 명령어 버퍼(720)의 크기에 물리적인 제약이 있으므로 정수 코어(710)가 요청하는 iaddr의 데이터를 유지하기에는 한계가 존재한다. 따라서, 명령어 버퍼(720)는 현재 정수 코어(710)의 iaddr을 기준으로 이후 요청할 명령어 데이터를 채워두는 프리패칭(Prefetching)을 지속적으로 수행한다. 예를 들어, 명령어 버퍼(720)에서는 프리패칭(Prefetching)시에 128 비트(bit) × 4 만큼의 데이터를 채우게 된다.
명령어 인터페이스 장치(740)는 메모리에 직접 접근을 하기 위해 내부 인터페이스를 버스 인터페이스(750)로 바꾸어 처리하는 블록이다.
도 9는 본 발명의 일 실시예에 따른 명령어 버퍼의 프리패치(prefetch)를 설명하기 위한 도면이다.
도 9를 참조하면, 슬라이딩 윈도우(sliding window)는 명령어 버퍼(720)의 프리패치를 위해 존재한다. 프리패치(Prefetch)는 정수 코어(710)가 요청하기 전에 명령어 버퍼(720)의 데이터를 미리 채워두는 기법이다.
본 발명에서 비워져 있는 명령어 버퍼(720)의 영역을 체크하고 이를 채우기 위해 프리패치(Prefetch)를 하게 되는데, 모든 영역을 동시에 체크하는 로직을 하드웨어로 구현하게 되면 매우 큰 로직이 필요하게 된다. 따라서, 본 발명에서는 현재 접근하고 있는 영역을 기준으로 순차적으로 접근 가능한 영역의 크기를 지정하여 이 영역만을 체크하게 되며, 이 영역을 슬라이딩 윈도우라고 한다.
본 발명에서 명령어 버퍼(720)에서는 이 슬라이딩 윈도우 내에 비워져 있는 데이터를 체크하고 프리패치(Prefetch)를 통해 데이터를 채워두게 된다. 만약 현재 접근하고 있는 영역이 변경되면 슬라이딩 윈도우의 시작점과 끝점도 변경된다.
본 발명에서 명령어 버퍼(720)는 크기가 제한적인 하드웨어이므로, 정수 코어(710)가 요청하는 모든 명령어 메모리를 표현하기 위해서는 해쉬기법을 이용해야 한다. 본 발명의 일 실시예에서는 iaddr의 상위 20 비트(bit) 정도를 태그로 사용할 수 있으며, iaddr의 하위 비트(bit)는 인덱스(index)로 이용하여 명령어 버퍼(720) 내의 데이터를 찾아내게 된다. 본 발명의 일 실시예에서 4 워드(word)를 하나의 태그로 관리하도록 구성할 수 있다.
도 10은 본 발명의 일 실시예에 따른 명령어 버퍼의 제어 방법을 보여주는 흐름도이다.
도 10을 참조하면, 프로세서는 명령어 접근이 존재하는지 여부를 확인한다(S901).
명령어 접근이 존재하면, 명령어 버퍼(720) 내부에 해당 데이터가 존재하는지 여부를 확인한다(S903).
명령어 버퍼(720) 내부에 해당 데이터가 존재하면, 해당 데이터를 전달한다(S905). S903 단계에서 명령어 버퍼(720) 내부에 해당 데이터가 존재하지 않으면, 명령어 접근 주소를 생성한다(S921). 그리고, 하위 모듈에 명령어 데이터를 요청한다(S923).
S901 단계에서 명령어 접근이 존재하지 않으면, 슬라이딩 윈도우가 모두 유효한지 여부를 확인한다(S907). 슬라이딩 윈도우가 모두 유효한 경우, 아무 동작도 수행하지 않는다(S909).
슬라이딩 윈도우가 모두 유효한 경우가 아니면, 슬라이딩 윈도우의 다음 주소(NextAddress)를 생성한다(S911).
그리고, 다음 주소가 분기 예측기에 존재하는지 여부를 확인한다(S913). 다음 주소가 분기 예측기에 존재하면, 다음 주소를 분기 목적주소로 변경한다(S915). 그리고, 하위 모듈에 데이터를 요청한다(S915).
S913 단계에서 다음 주소가 분기 예측기에 존재하지 않으면, 하위 모듈에 데이터를 요청한다(S919).
이상 본 발명을 몇 가지 바람직한 실시예를 사용하여 설명하였으나, 이들 실시예는 예시적인 것이며 한정적인 것이 아니다. 본 발명이 속하는 기술분야에서 통상의 지식을 지닌 자라면 본 발명의 사상과 첨부된 특허청구범위에 제시된 권리범위에서 벗어나지 않으면서 다양한 변화와 수정을 가할 수 있음을 이해할 것이다.
110, 210, 310 패치 단
120 디코드 단
130 엑시큐트 단
140, 240, 340 메모리 단
150 라이트 백 단
710 정수 코어
720 명령어 버퍼
730 명령어 캐시
740 명령어 인터페이스 장치
750 버스 인터페이스

Claims (5)

  1. 정수 코어 블록, 명령어 버퍼 블록 및 명령어 캐시 블록을 포함하는 멀티 파이프라인(Multi pipeline) 구조를 갖는 프로세서에서,
    다른 블록으로부터 전달된 명령어를 읽고 처리하며, 다른 블록에 명령어 주소(Instruction address)를 전달하는 정수 코어(Integer Core);
    상기 정수 코어가 상기 명령어 주소로 요청하는 데이터를 보관하고 있으며, 상기 정수 코어의 요청에 응답하여 상기 데이터를 전달하기 위한 명령어 버퍼(Instruction Buffer); 및
    프로그램 메모리의 일부 데이터를 보관하고 있으며, 상기 명령어 버퍼의 요청에 따라 데이터를 상기 명령어 버퍼에 전달하기 위한 명령어 캐시(Instruction Cache)를 포함하고,
    상기 프로세서는 상기 정수 코어가 요청하기 전에 미리 상기 명령어 버퍼에 데이터를 채워두는 기법인 프리패치(Prefetch) 기법이 적용되며,
    상기 프로세서는 상기 명령어 버퍼에서 비워져 있는 영역을 체크하고, 비워져 있는 영역을 채우기 위하여 프리패치 기법이 적용되는 것을 특징으로 하는 프로세서.
  2. 정수 코어 블록 및 명령어 버퍼 블록을 포함하는 멀티 파이프라인(Multi pipeline) 구조를 갖는 프로세서에서,
    상기 명령어 버퍼 블록으로부터 전달된 명령어를 읽고 처리하며, 상기 명령어 버퍼 블록에 명령어 주소(Instruction address)를 전달하는 정수 코어(Integer Core); 및
    상기 정수 코어가 상기 명령어 주소로 요청하는 데이터를 보관하고 있으며, 상기 정수 코어의 요청에 응답하여 상기 데이터를 전달하기 위한 명령어 버퍼(Instruction Buffer)를 포함하고,
    상기 프로세서는 상기 정수 코어가 요청하기 전에 미리 상기 명령어 버퍼에 데이터를 채워두는 기법인 프리패치(Prefetch) 기법이 적용되며,
    상기 프로세서는 상기 명령어 버퍼에서 비워져 있는 영역을 체크하고, 비워져 있는 영역을 채우기 위하여 프리패치 기법이 적용되는 것을 특징으로 하는 프로세서.
  3. 삭제
  4. 삭제
  5. 제1항 또는 제2항에 있어서,
    상기 명령어 버퍼에서 현재 접근하고 있는 영역을 기준으로 순차적으로 접근 가능한 영역을 슬라이딩 윈도우(sliding window)라고 할 때, 상기 프로세서는 상기 슬라이딩 윈도우를 지정하여 체크하는 방식으로 프리패치 기법이 적용되는 것을 특징으로 하는 프로세서.
KR1020130024970A 2013-03-08 2013-03-08 파이프라인 구조를 갖는 프로세서 KR101319287B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020130024970A KR101319287B1 (ko) 2013-03-08 2013-03-08 파이프라인 구조를 갖는 프로세서
US13/895,937 US9454376B2 (en) 2013-03-08 2013-05-16 Pipelined processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130024970A KR101319287B1 (ko) 2013-03-08 2013-03-08 파이프라인 구조를 갖는 프로세서

Publications (1)

Publication Number Publication Date
KR101319287B1 true KR101319287B1 (ko) 2013-10-17

Family

ID=49638705

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130024970A KR101319287B1 (ko) 2013-03-08 2013-03-08 파이프라인 구조를 갖는 프로세서

Country Status (2)

Country Link
US (1) US9454376B2 (ko)
KR (1) KR101319287B1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6412063B1 (en) 1999-04-02 2002-06-25 Via-Cyrix, Inc. Multiple-operand instruction in a two operand pipeline and processor employing the same
JP2002268876A (ja) 2001-03-14 2002-09-20 Denso Corp パイプライン処理方法、及び情報処理装置
US20070130447A1 (en) 2005-12-02 2007-06-07 Nvidia Corporation System and method for processing thread groups in a SIMD architecture
US20110320771A1 (en) 2010-06-28 2011-12-29 International Business Machines Corporation Instruction unit with instruction buffer pipeline bypass

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6341348B1 (en) * 1998-12-03 2002-01-22 Sun Microsystems, Inc. Software branch prediction filtering for a microprocessor
US20070022277A1 (en) * 2005-07-20 2007-01-25 Kenji Iwamura Method and system for an enhanced microprocessor
US7930578B2 (en) * 2007-09-27 2011-04-19 International Business Machines Corporation Method and system of peak power enforcement via autonomous token-based control and management

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6412063B1 (en) 1999-04-02 2002-06-25 Via-Cyrix, Inc. Multiple-operand instruction in a two operand pipeline and processor employing the same
JP2002268876A (ja) 2001-03-14 2002-09-20 Denso Corp パイプライン処理方法、及び情報処理装置
US20070130447A1 (en) 2005-12-02 2007-06-07 Nvidia Corporation System and method for processing thread groups in a SIMD architecture
US20110320771A1 (en) 2010-06-28 2011-12-29 International Business Machines Corporation Instruction unit with instruction buffer pipeline bypass

Also Published As

Publication number Publication date
US20140258682A1 (en) 2014-09-11
US9454376B2 (en) 2016-09-27

Similar Documents

Publication Publication Date Title
US10248570B2 (en) Methods, systems and apparatus for predicting the way of a set associative cache
JP7159223B2 (ja) キャッシュの競合を管理するための方法およびシステム
US10970214B2 (en) Selective downstream cache processing for data access
CN109219805B (zh) 一种多核系统内存访问方法、相关装置、系统及存储介质
US20130262840A1 (en) Instruction merging optimization
US9513916B2 (en) Instruction merging optimization
US9201798B2 (en) Processor instruction based data prefetching
US9251048B2 (en) Memory page management
JP2018506776A (ja) 選択的ページミス変換プリフェッチによってプログラムメモリコントローラにおけるページ変換ミスレイテンシを隠すこと
TW201351145A (zh) 指令快取的減少耗能
US9870042B2 (en) Apparatus and method managing power based on data
US20200301709A1 (en) Processor with variable pre-fetch threshold
US8495307B2 (en) Target memory hierarchy specification in a multi-core computer processing system
US20180196675A1 (en) Processor and instruction code generation device
JP2009009571A (ja) レベル2キャッシュ/ネスト・アドレスを変換する方法および装置
US9405545B2 (en) Method and apparatus for cutting senior store latency using store prefetching
KR101319287B1 (ko) 파이프라인 구조를 갖는 프로세서
US9417882B2 (en) Load synchronization with streaming thread cohorts
US11900117B2 (en) Mechanism to queue multiple streams to run on streaming engine
US20220137974A1 (en) Branch density detection for prefetcher
CN114661359A (zh) 用于处理器核心内的细粒度低时延解压缩的应用编程接口
US20240143507A1 (en) Method, Computer Program, and Computer System for Prefetching Data During Execution of an Application Program
US11334355B2 (en) Main processor prefetching operands for coprocessor operations
JP2005071351A (ja) プロセッサおよびプロセッサの動作方法
US20120151150A1 (en) Cache Line Fetching and Fetch Ahead Control Using Post Modification Information

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated 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: 20161010

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20171012

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20181005

Year of fee payment: 6