KR100953986B1 - 우선순위 기반 실행을 이용한 캐시미스 대기시간 활용 방법및 장치 - Google Patents

우선순위 기반 실행을 이용한 캐시미스 대기시간 활용 방법및 장치 Download PDF

Info

Publication number
KR100953986B1
KR100953986B1 KR1020080083540A KR20080083540A KR100953986B1 KR 100953986 B1 KR100953986 B1 KR 100953986B1 KR 1020080083540 A KR1020080083540 A KR 1020080083540A KR 20080083540 A KR20080083540 A KR 20080083540A KR 100953986 B1 KR100953986 B1 KR 100953986B1
Authority
KR
South Korea
Prior art keywords
priority
instructions
instruction
cache miss
execution
Prior art date
Application number
KR1020080083540A
Other languages
English (en)
Other versions
KR20100024813A (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 KR1020080083540A priority Critical patent/KR100953986B1/ko
Priority to SG200900623-0A priority patent/SG159434A1/en
Publication of KR20100024813A publication Critical patent/KR20100024813A/ko
Application granted granted Critical
Publication of KR100953986B1 publication Critical patent/KR100953986B1/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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • G06F8/4442Reducing the number of cache misses; Data 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines

Landscapes

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

Abstract

본 발명은 우선순위 기반 실행을 이용한 캐시미스 대기시간 활용 방법 및 장치에 관한 것으로서, 그 우선순위 기반 실행을 이용한 캐시미스 대기시간 활용 방법은 프로그램을 컴파일하는 단계; 그 컴파일된 프로그램에서 우선순위가 높은 명령어와 우선순위가 낮은 명령어로 분류하는 단계; 우선순위가 높은 순서대로 명령어를 실행하는 단계; 및 캐시 미스가 발생되면, 캐시미스가 해결될 때 까지 그 우선순위가 낮은 명령어를 실행하는 단계를 포함함을 특징으로 한다.
본 발명에 의하면, 임베디드 프로세스에서 최소의 전력과 최소의 면적비용(area cost)으로 메모리 대기시간을 효율적으로 활용하여 시스템 성능을 향상시킬 수 있다.

Description

우선순위 기반 실행을 이용한 캐시미스 대기시간 활용 방법 및 장치{Method and apparatus for utilizing latency of cache miss using priority based excution}
본 발명은 캐시 메모리의 대기시간(latency) 활용에 관한 것으로서, 특히 임베디드 프로세서(embedded processor)를 위한 우선순위 기반(priority based) 실행을 이용한 캐시미스 대기시간 활용 방법 및 장치에 관한 것이다.
본 발명은 지식경제부 및 (주)자람테크놀로지의 시스템집적 반도체 기반 기술개발사업의 일환으로 수행한 연구로부터 도출된 것이다.
[고유번호] 07-90
[연구사업명] 시스템집적 반도체 기반 기술개발사업
[연구과제명] MPSoC 설계용 Hardware resource configuration tool 개발
[지원부처] 지식경제부
[주관기관] (주)자람테크놀로지
[연구기간] 2007.09.01 - 2011.08.31
임베디드(embedded) 프로세서(processor)들은 급격히 늘어나는 메모리 대기 시간(latency) 문제에 직면하고 있다. 프로세서와 메모리 간의 속도차로 인해, 주 메모리(main memory)로의 캐시 미스(cache miss)를 유발하는 연산은 실행이 완료되기까지는 수백 프로세서 사이클이 소요된다. 메모리 접근 동작은 응용 프로그램에서 대략 전체 명령의 30-40%를 차지하며, 메모리 접근시간의 평균을 줄이는 것이 시스템 구성에서 매우 중요한 요소이다. 고급(high-end) 프로세서에서는 높은 메모리 대기시간을 감수하기 위해 다중 이슈(multiple issue), 값 예측(value prediction), 추론(speculative) 메카니즘(mechanism), out-of-order 실행(execution)와 같은 정교한 기술들을 사용하는 반면, 상기 기술들은 면적, 전력(power), 칩 복잡도(chip complexity) 등으로 인한 오버헤드(overhead)가 커서 임베디드 프로세서에서는 사용되기 어렵다.
단일이슈(single issue) 프로세서는 긴 대기시간을 갖는 명령이 파이프라인을 정체시키고, 들어오는 명령이 제 때 실행되지 못하게 한다. out-of-order 및 speculation 메카니즘과 같은 하드웨어적인 방안들도 스케쥴(schedule)에서 독립적인 연산을 찾기 위해 복잡한 분석을 하여야 하므로 너무 많은 전력을 소비하고 복잡한 로직(logic)을 갖는다.
대부분의 임베디드 프로세서들은 단일 이슈(single issue)와 non-speculative 프로세서이다. 따라서 임베디드 프로세스를 위한 최소의 전력과 최소의 면적비용(area cost)으로 메모리 대기시간을 효율적으로 활용할 수 있는 방안이 필요하다.
본 발명이 해결하고자 하는 과제는 최소의 면적과 전력으로 임베디드 프로세서를 위한 캐시 미스 대기시간를 효율적으로 활용하는, 우선순위 기반(priority based) 실행을 이용한 캐시미스 대기시간 활용 방법 및 장치를 제공하는 것이다.
상기 기술적 과제를 이루기 위한 본 발명에 의한 우선순위 기반(priority based) 실행을 이용한 캐시미스 대기시간 활용 방법은, 프로그램을 컴파일하는 단계; 상기 컴파일된 프로그램에서 우선순위가 높은 명령어와 우선순위가 낮은 명령어로 분류하는 단계; 우선순위가 높은 순서대로 명령어를 실행하는 단계; 및 캐시 미스가 발생되면, 캐시미스가 해결될 때 까지 상기 우선순위가 낮은 명령어를 실행하는 단계를 포함함을 특징으로 한다.
상기 기술적 과제를 이루기 위한 본 발명에 의한 우선순위 기반(priority based) 실행을 이용한 캐시미스 대기시간 활용 장치는, 컴파일러에 의해 컴파일된 명령어들을 우선순위가 높은 명령어와 우선순위가 낮은 명령어로 분류하는 명령어분류부; 및 상기 분류된 명령어를 우선순위가 높은 순서대로 실행하되, 캐시 미스가 발생되면 상기 캐시미스가 해결될 때 까지 상기 우선순위가 낮은 명령어를 실행하는 는 명령어처리부를 포함함을 특징으로 하며, 상기 명령어 처리부는 실제 레지스터와 이름변경된 레지스터 간의 매핑정보를 저장하고 있는 이름변경 테이블; 상기 분류된 명령어를 저장하는 리오더버퍼; 상기 리오더버퍼에 저장되어 있는 명령 어의 이름을 변경하는 이름변경 관리부; 소스 레지스터와 캐시 미스된 레지스터를 비교하여 프로세서의 실행모드를 결정하는 우선순위 선택부; 상기 우선순위 선택부의 제어에 의해 상기 리오더버퍼의 명령어를 선택적으로 출력하는 멀티플렉서; 및 상기 멀티플렉서에서 출력되는 명령어를 실행하며, 캐시미스가 발생하면 상기 캐시미스된 레지스터를 출력하는 명령어 실행부를 포함하는 것을 특징으로 한다.
본 발명에 의한 우선순위 기반(priority based) 실행을 이용한 캐시미스 대기시간 활용 방법 및 장치에 의하면, 임베디드 프로세스에서 최소의 전력과 최소의 면적비용(area cost)으로 메모리 대기시간을 효율적으로 활용하여 시스템 성능을 향상시킬 수 있다.
이하, 첨부된 도면을 참조로 본 발명의 바람직한 실시예를 상세히 설명하기로 한다.
도 1은 본 발명에 의한 우선순위 기반 실행을 이용한 캐시미스 대기시간 활용 장치의 일실시예에 대한 구성을 블록도로 도시한 것으로서, 명령어 분류부(120) 및 명령어 처리부(140)을 포함하여 이루어진다.
상기 명령어분류부(120)는 컴파일러(100)에 의해 컴파일된 명령어들을 우선순위가 높은 명령어와 우선순위가 낮은 명령어로 분류한다. 로드(load) 명령어, 브랜치(branch) 명령어, 상기 우선순위가 높은 명령어로 표시된 명령어의 오퍼랜드(operand)를 정의하는 명령어를 우선순위가 높은 명령어로 우선순위가 높은 명령 어로 분류한다. 상기 우선순위 분류는 1-bit 정보를 명령어에 부가하여 표시할 수 있다. 예를 들어 상기 부가된 비트가‘0’이면 우선순위가 낮은 명령어임을 나타내고, ‘1’이면 우선순위가 높은 명령어임을 나타내게 할 수 있다.
상기 명령어처리부(140)는 상기 분류된 명령어를 우선순위가 높은 순서대로 실행하되, 캐시 미스가 발생되면 상기 캐시미스가 해결될 때 까지 상기 우선순위가 낮은 명령어를 실행한다.
도 2는 상기 명령어처리부(140)에 대한 일실시예를 도시한 것으로서, 이름변경 테이블(220), 리오더버퍼(200), 이름변경 관리부(210), 우선순위 선택부(230), 멀티플렉서(240) 및 명령어 실행부(250)를 포함하여 이루어진다.
상기 이름변경 테이블(220)는 실제 레지스터(real register)와 이름변경된 레지스터 간의 매핑정보를 저장하고 있다.
상기 리오더버퍼(200)는 상기 분류된 명령어를 저장한다. 상기 리오더버퍼에 저장되는 명령어는 높은 우선순위인지 낮은 우선순위인지를 나타내는 1-bit 정보를 구비함이 바람직하다.
상기 이름변경관리부(210)는 상기 리오더버퍼(200)에 저장되어 있는 명령어의 이름을 변경한다. 상기 이름변경관리부(210)는 디코드 단계에서부터 명령어들이 ROB에 저장될 때, 낮은 우선순위를 갖는 명령어의 소스 오퍼랜드를 정의하는 명령어들을 찾아내어 이름변경 테이블을 참조하여 상기 우선순위가 낮은 명령어의 소스오퍼랜드와 목적지 오퍼랜드의 이름을 변경한다.
상기 우선순위 선택부(230)는 소스 레지스터와 캐시 미스된 레지스터를 비교 하여 프로세서의 실행모드를 결정한다. 상기 프로세서의 실행모드에는 높은 우선순위 실행모드와 낮은 우선순위 실행모드가 있다. 상기 높은 우선순위 실행모드에서는, 높은 우선순위를 갖는 명령어들만 실행된다. 낮은 우선순위를 갖는 명령어들의 오퍼랜드들은 이름이 변경되며 상기 명령어들은 상기 리오더버퍼(ROB, 200)에 잠시 저장된다. 상기 소스 레지스터와 캐시 미스된 레지스터를 비교한 결과, 데이터 캐시 미스가 일어난 것이 검출되면, 낮은 우선순위 실행모드로 스위칭되게 하여, 낮은 우선순위의 명령어들의 실행이 시작되도록 상기 멀티플렉서(240)를 제어한다. 그리고 낮은 우선순위 명령어들이 실행되는 동안, 캐시미스가 해결되면 프 높은 우선순위 실행모드를 재개하도록 멀티플렉서(230)를 제어한다.
상기 멀티플렉서(240)는 상기 우선순위 선택부(230)의 제어에 의해 상기 리오더버퍼(200)의 명령어를 선택적으로 출력한다. 예를 들어 캐시미스가 발생되면, 우선순위가 낮은 명령어들을 출력한다.
상기 명령어실행부(250)는 상기 멀티플렉서(240)에서 출력되는 명령어를 실행하며, 캐시미스가 발생하면 상기 캐시미스된 레지스터를 출력한다.
도 3은 본 발명에 의한 우선순위 기반 실행을 이용한 캐시미스 대기시간 활용방법을 흐름도로 도시한 것이다.
먼저, 프로그램을 컴파일한다.(S300단계) 그리고 나서 상기 컴파일된 프로그램에서 우선순위가 높은 명령어와 우선순위가 낮은 명령어로 분류한다.(S310단계) 우선순위가 높은 순서대로 명령어를 실행한다.(S320단계) 이 때 우선순위가 낮은 명령어들은 상기 리오더버퍼(200)에 일시 저장된다.
캐시 미스가 발생되었는지 체크하여(S330단계), 캐시미스가 발생되었으면 상기 우선순위가 낮은 명령어를 실행한다.(S340단계) 캐시미스가 해결되면(S350단계), 바로 우선순위가 높은 명령어 실행을 재개한다.(S320단계)
그리고 우선순위에 따라 명령어를 실행한 후, 더 이상 실행할 명령어가 없으면(S360단계) 명령어 실행을 종료한다.
한편, 루프(loop) 실행이 끝날 때 펜딩(pending)되어 있는 우선순위가 낮은 명령어들을 한꺼번에 실행되게 할 수 있다.
본 발명의 실시예에 의한 우선순위 기반 실행을 이용한 캐시미스 대기시간 활용 방법 및 장치를 보다 상세히 설명하기로 한다. 도 4는 어셈블리 명령어 코드와 데이터 흐름 그래프(Data Flow Graph:DFG)를 도시한 것으로서, 상기 명령어 코드는 멀티미디어 벤치마크 중에서 압축 벤치마크의 가장 안쪽의 루프를 보여주고 있다.
우선순위가 높은 명령어들은 명령어 페치(fetch)와 데이터 전달(data transfer)의 연산을 계속 요구하는 것들이다. 우선순위가 높은 명령어들은 다음과 같다. 브랜치(branch) 명령어, 모든 로드(load) 명령어, 및 우선순위가 높은 명령어를 위한 소스 오퍼랜드(source operand)를 생성하는 명령어들은 우선순위가 높다.
브랜치 명령어들을 실행하지 않는다면, 다음에 무엇을 페치(fetch)해야 할지 알 수 없기 때문에 모든 브랜치 명령어들은 높은 우선순위를 갖는다. 마찬가지로, 모든 로드(load) 명령어들은 프로세서와 데이터 메모리 간의 버스를 busy로 유지하 기 위해 높은 우선순위를 갖는 명령어들이다. 또한, 높은 우선순위를 갖는 명령어에서 사용되는 소스 오퍼랜드(operand)를 생성하는 명령어들도 높은 우선순위로 실행되어야 할 필요가 있다. 상기 세 가지 명령어 외의 루프(loop)에 있는 다른 명령어들은 낮은 순위를 갖는다.
명령어들의 우선순위는 다음과 같은 과정으로 결정된다. 루프에 있는 모든 로드(load) 및 브랜치(branch) 명령어들을 표시(mark)한다.(단계 1) UD(User Define) 체인을 사용하여 이미 표시된 명령어들의 오프랜드들을 정의하는 명령어들을 찾아 표시한다.(단계 2) 그리고 나서 이미 표시된 명령어들과 제어-종속적(control-dependent) 관계에 있는 조건 명령어들을 찾아 표시한다.(단계3) 이러한 과정을 더 이상 표시될 수 있는 명령어가 없을 때까지 반복적으로 수행한다.(단계 4)
이렇게 하여 상기 표시된 명령어들은 우선순위가 높으며, 표시되지 않은 명령어들은 우선순위가 낮은 명령어가 된다.(단계5)
우선순위가 낮은 선택 알고리즘은 루프의 데이터 흐름 그래프(Data Flow Graph :DFG) 상에 동작한다. 상기 루프는 DFG G = (N,E), 여기서 각 n∈N 은 루프몸체(loop body)의 연산이다. 만일 어떤 루프반복의 연산 ni가 어떤 루프반복의 연산 nj에 데이터 종속적이라면, 직접 에지(directed edge) e=(ni, nj)∈ E 가 존재한다. 따라서, 비록 루프 수반 종속성(loop carried dependency)을 가지고 있다 할지라도 두 연산 간에 직접 에지가 있을 것이다. 도 4의 DCF는 압축 벤치마크의 가장 안쪽 루프의 데이터 종속성 그래프를 보여주고 있다. 각 에지의 주 석(annotation)는 종속적인 오퍼랜드이다.
먼저, 로드(load)명령어는 높은 우선순위를 갖는 명령어로 취급된다. 그러므로, 도 4에서, 명령어 1, 2, 3은 높은 우선순위를 갖는 명령어이다. 루프의 마지막에서 브랜치 명령어는 새로운 명령어들을 계속해서 페치하는 것이 중요하다. 그러므로 명령어 10은 높은 우선순위를 갖는다. 상기 우선순위를 찾는 알고리즘의 단계 2, 3을 사용하면, 더 높은 우선순위를 갖는 명령어들이 검출된다. 브랜치의 소스 오퍼랜드를 계산하는 모든 명령어들은 또한 높은 우선순위를 갖는다. 명령어 7은 레지스터 lr을 차감하고 브랜치 명령어(10)에 의해 사용되는 조건 코드(condition code)의 제로 플래그(zero flag)를 설정하여 실행 흐름을 결정한다. 게다가, 명령어 9는 레지스터 r0를 계산하고, 그것은 높은 우선순위를 갖는 명령어 1, 2, 3에 의해 사용될 것이다. 그러므로 명령어 9는 또한 높은 우선순위를 갖는 명령어이다.
결국, 나머지 명령어들 중에서, 저장(store) 명령어들의 메모리 오퍼랜드들이 체크된다. 저장 명령어가 높은 우선순위를 갖는 로드(load)를 제공한다면, 낮은 우선순위를 갖는 명령어로 표시되지 않는다. 도 4의 예에서, 명령어 4, 5, 6, 8은 낮은 우선순위를 갖는 명령어들로 표시된다.
루프에 있는 명령어들을 고려하기로 한다. 프로세서가 루프의 실행을 끝낼 때, 펜딩(pending)되어 있는 낮은 우선순위를 갖는 명령어들을 실행함으로써 명령어 창(instruction window)을 플러시(flush)한다. 캐시미스(cache miss)는 루프 몸체(loop body) 밖에서는 거의 일어나지 않기 때문에 펜딩되어 있는 낮은 우선순 위를 갖는 모든 명령어들을 다음 캐시 미스때 까지 리오더버퍼(reorder buffer : ROB)에 두기 보다는 한꺼번에 실행한다. 변환을 위해, 루프 내에 다른 브랜치 명령어들은 없어야 한다. 만일 "if-then-else"와 같은 브랜치 구조가 있다면, 조건 실행으로 변환되거나 서술 명령어들로 변환되어야 한다. 서술은 제어 종속성을 데이터 종속성으로 변환하는 메커니즘이며, 루프 안에 있는 낮은 우선순위를 갖는 더 많은 명령어 후보들을 고려하게 한다.
메모리 연산에 대해, 컴파일러는 정적으로(statically) 메모리 종속성을 명확하게 한다. 정적(static) 메모리 명확성(disambiguation) 접근이 루프에서 메모리 연산을 명확하게 할 수 없다면, 이들 연산을 낮은 우선순위를 갖는 명령어로 여기지 않는다. 우선순위에 기반한 실행 기술이 메모리 명확성에 직교(orthogonal)하다는 것을 언급할 필요가 있다. 메모리 명확성이 없을 때 조차도 메모리 지연시간을 숨길 수 있다. 그러나 메모리 종속성을 더 명확하게 할 수 있다면 더 좋게 수행될 수 있다.
플러싱(flushing) 연산과 우선순위 분류를 지원하기 위해, 명령어 세트 구조(Instruction Set Architecture : ISA) 수정이 필요하다. 모든 명령어에 1-bit 우선순위 정보를 붙여 프로세서가 우선순위 기반 실행을 수행하게 하고, flushLowPriority 명령어를 부가하여 루프 실행의 마지막에서 펜딩되어 있는 낮은 우선순위 명령어를 한꺼번에 실행하게 한다.
본 발명에 의한 우선순위 기반의 명령어 실행을 설명하기로 한다. 본 발명에 의한 우선순위 기반 실행을 이용한 캐시미스 대기시간 활용 방법에는 두 가지의 실 행 모드, 즉 높은 우선순위 실행모드와 낮은 우선순위 실행모드가 있다.
상기 높은 우선순위 실행모드에서는, 높은 우선순위를 갖는 명령어들만 실행된다. 낮은 우선순위를 갖는 명령어들의 오퍼랜드들은 이름이 변경되며 상기 명령어들은 ROB에 잠시 저장된다. 데이터 캐시 미스가 일어나면, 높은 우선순위를 갖는 명령어들은 프로세서 파이프라인으로부터 플러시(flush)된다. 그리고 나서 상기 프로세서들은 낮은 우선순위 실행모드로 스위칭되고, 낮은 우선순위의 명령어들의 실행을 시작한다. 낮은 우선순위 명령어들이 실행되는 동안, 캐시미스가 해결되면 프로세서는 높은 우선순위 실행모드를 재개한다. 캐시 미스가 서비스되기 전이라 하더라도 낮은 우선순위를 갖는 명령어들이 더 이상 없으면, 프로세서는 높은 우선순위 실행모드로 되돌아가서 캐시미스가 해결될 때까지 기다린다.
로드 명령어가 낮은 우선순위를 갖지 않기 때문에 낮은 우선순위 명령어들은캐시미스로 인한 프로세서 파이프라인을 멈추게(stall) 할 수 없다.
이러한 스킴(scheme)은 다음과 같은 두 가지 이유에서 성능개선을 가져온다. 첫번째 이유는, 루프 반복동안 낮은 우선순위를 갖는 명령어를 건너뛰기 때문에 루프에서 유효한 명령어 개수는 감소되고 따라서 루프가 더 빨리 실행된다. 두 번째 이유는, 낮은 우선순위를 갖는 명령어들은 캐시미스가 일어날 때 실행되기 때문에 상기 캐시미스로 시간지연은 유용한 작업을 위해 이용된다.
프로세서 마이크로 아키텍쳐는 명령어간의 종속성을 깨뜨리지 않기 위해 전체 레지스터 이름변경을 위한 지원을 제공해야 한다.
도 5는 본 발명에 의한 우선순위 기반 실행을 이용한 캐시미스 활용장치의 명령어 처리부에 대한 구현 예를 도시한 것으로서, ROB(reorder buffer), 이름변경 관리부(renmae manager), 이름변경 테이블(rename table), 우선순위 선택부(priority selector), 멀티플렉서(mux), 메모리부(memory unit), 및 FU로 이루어진다. 상기 메모리부 및 FU는 도 2에 도시된 명령어 실행부에 해당한다.
상기 ROB는 디코드된 명령어들과 부가의 1-bit 지시자 P를 포함하며, 상기 지시자가 ‘0’이면 낮은 우선순위를 나타내고 ‘1’이면 높은 우선순위를 나타낸다.
상기 이름변경 테이블(rename table)은 실제 레지스터(real register)와 이름변경된 레지스터(renamed register)의 매핑정보를 가지고 있다. 상기 ROB에 있는 명령어들은 이름변경 관리부(rename manager)에 의해 이름변경 테이블(rename table)에 있는 정보를 이용하여 동적으로 이름변경이 이루어진다.
상기 우선순위 선택부(priority selector)는 3개의 비교기로 구성되며, 소스 레지스터들과 캐시를 미스한 레지스터를 비교하고, 프로세서의 실행모드를 결정한다.
디코드 단계에서부터 명령어들이 ROB에 저장될 때, 이름변경 관리부는 낮은 우선순위를 갖는 명령어의 소스 오퍼랜드를 정의하는 명령어들을 먼저 찾아낸다. 그리고 나서 이름변경 테이블을 참조하여 상기 우선순위가 낮은 명령어의 소스오퍼랜드와 목적지 오퍼랜드의 이름을 변경한다.
이름변경관리부(rename manaager)가 직면할 수 있는 경우는 두 가지가 있다. 하나는, 소스 오프랜드를 정의하는 parent 명령어가 ROB에 존재하는 경우이고, 다 른 하나는 상기 parent 명령어가 연산(operation) 버스에는 이슈되어 있지만 ROB에는 존재하지 않는 경우이다. 그러나 상기 두 번째 경우에서 낮은 우선순위 명령어의 실행을 일시 정지하기 위해서는 이미 이슈된 명령어에 의해 변경되기 전에 소스 레지스터들의 값을 보존하여야 한다. 이것을 하기 위해, 이름이 변경되기 전의 최초 레지스터로부터 이름이 변경된 레지스터로 값을 이동시키는 이동(mov) 명령어가 ROB에 삽입된다. 그리고 나서 낮은 우선순위를 갖는 명령어의 소스 오퍼랜드는 이름이 변경된다.
이러한 방법으로, 높은 우선순위를 갖는 명령어가 실행되는 동안 낮은 우선순위를 갖는 명령어들은 ROB에 축적된다. 우선순위 선택부가 ‘0’을 생성하여 멀티플렉서(mux)에 그 값을 전달하거나, ROB가 낮은 우선순위를 갖는 명령어들로 가득차면(비록 캐시미스가 발생되지 않다 하더라도), 낮은 우선순위를 갖는 명령어들은 실행을 시작한다. 높은 우선순위를 갖는 명령어들이 실행되는 동안에는, 우선순위 선택부는 캐시 미스가 발생될 때 까지‘1’을 생성한다. 프로세서가 명령어를 이슈할 수 없을 때 우선순위 선택부는 반전된 P를 멀티플렉서(mux)에게 주고, 낮은우선순위를 갖는 명령어들은 실행을 시작한다. 낮은 우선순위을 갖는 명령어들의 실행은 미스된 값이 캐시에서 이용가능할 때 까지 계속된다. 우선순위 선택부는 캐시 미스가 지금 서비스는 것을 검출할 때, 높은 우선순위 신호를 멀티플렉서(mux)에게 생성하고, 프로세서는 높은 우선순위를 갖는 명령어 실행을 재개한다.
본 발명은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터(정보 처리 기능을 갖는 장치를 모두 포함한다)가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨 터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록 장치의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광데이터 저장장치 등이 있다.
본 발명은 도면에 도시된 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
도 1은 본 발명에 의한 우선순위 기반 실행을 이용한 캐시미스 대기시간 활용 장치의 일실시예에 대한 구성을 블록도로 도시한 것이다.
도 2는 도 1의 명령어처리부에 대한 일실시예를 도시한 것이다.
도 3은 본 발명에 의한 우선순위 기반 실행을 이용한 캐시미스 대기시간 활용방법을 흐름도로 도시한 것이다.
도 4는 어셈블리 명령어 코드와 데이터 흐름 그래프(Data Flow Graph:DFG)를 도시한 것이다.
도 5는 본 발명에 의한 우선순위 기반 실행을 이용한 캐시미스 활용장치의 명령어 처리부에 대한 구현 예를 도시한 것이다.

Claims (8)

  1. (a) 프로그램을 컴파일하는 단계;
    (b) 상기 컴파일된 프로그램에서 우선순위가 높은 명령어와 우선순위가 낮은 명령어로 분류하는 단계;
    (c) 우선순위가 높은 순서대로 명령어를 실행하는 단계; 및
    (d) 캐시 미스가 발생되면, 캐시미스가 해결될 때 까지 상기 우선순위가 낮은 명령어를 실행하는 단계를 포함함을 특징으로 하는 우선순위 기반(priority based) 실행을 이용한 캐시미스 대기시간 활용 방법.
  2. 제1항에 있어서, 상기 (b)단계는
    로드(load) 및 브랜치(branch) 명령어를 우선순위가 높은 명령어로 표시하는 단계; 및
    상기 우선순위가 높은 명령어로 표시된 명령어의 오퍼랜드(operand)를 정의하는 명령어를 찾아 우선순위가 높은 명령어로 표시하는 단계를 포함함을 특징으로 하는 우선순위 기반(priority based) 실행을 이용한 캐시미스 대기시간 활용 방법.
  3. 제1항에 있어서, 상기 명령어의 우선순위는
    명령어에 1 비트의 정보를 부가하여 표시함을 특징으로 하는 우선순위 기반(priority based) 실행을 이용한 캐시미스 대기시간 활용 방법.
  4. 제1항에 있어서,
    상기 우선순위가 높은 명령어가 실행될 때, 상기 우선순위가 낮은 명령어는 버퍼에 저장됨을 특징으로 하는 우선순위 기반(priority based) 실행을 이용한 캐시미스 대기시간 활용 방법.
  5. 제1항에 있어서, 상기 (c)단계는
    루프(loop) 실행이 끝날 때 펜딩(pending)되어 있는 우선순위가 낮은 명령어들을 한꺼번에 실행함을 특징으로 하는 우선순위 기반(priority based) 실행을 이용한 캐시미스 대기시간 활용 방법.
  6. 컴파일러에 의해 컴파일된 명령어들을 우선순위가 높은 명령어와 우선순위가 낮은 명령어로 분류하는 명령어분류부; 및
    상기 분류된 명령어를 우선순위가 높은 순서대로 실행하되, 캐시 미스가 발생되면 상기 캐시미스가 해결될 때 까지 상기 우선순위가 낮은 명령어를 실행하는 는 명령어처리부를 포함함을 특징으로 하는 우선순위 기반(priority based) 실행을 이용한 캐시미스 대기시간 활용 장치.
  7. 제6항에 있어서, 상기 명령어 처리부는
    실제 레지스터와 이름변경된 레지스터 간의 매핑정보를 저장하고 있는 이름변경 테이블;
    상기 분류된 명령어를 저장하는 리오더버퍼;
    상기 리오더버퍼에 저장되어 있는 명령어의 이름을 변경하는 이름변경 관리부;
    소스 레지스터와 캐시 미스된 레지스터를 비교하여 프로세서의 실행모드를 결정하는 우선순위 선택부;
    상기 우선순위 선택부의 제어에 의해 상기 리오더버퍼의 명령어를 선택적으로 출력하는 멀티플렉서; 및
    상기 멀티플렉서에서 출력되는 명령어를 실행하며, 캐시미스가 발생하면 상기 캐시미스된 레지스터를 출력하는 명령어 실행부를 포함하는 것을 특징으로 하는 우선순위 기반(priority based) 실행을 이용한 캐시미스 대기시간 활용 장치.
  8. 제7항에 있어서, 상기 리오더버퍼에 저장되는 명령어는
    높은 우선순위인지 낮은 우선순위인지를 나타내는 1-bit 정보를 구비하는 것을 특징으로 하는 우선순위 기반(priority based) 실행을 이용한 캐시미스 대기시간 활용 장치.
KR1020080083540A 2008-08-26 2008-08-26 우선순위 기반 실행을 이용한 캐시미스 대기시간 활용 방법및 장치 KR100953986B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020080083540A KR100953986B1 (ko) 2008-08-26 2008-08-26 우선순위 기반 실행을 이용한 캐시미스 대기시간 활용 방법및 장치
SG200900623-0A SG159434A1 (en) 2008-08-26 2009-01-29 Method and apparatus for utilizing cache miss latency using priority based execution

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080083540A KR100953986B1 (ko) 2008-08-26 2008-08-26 우선순위 기반 실행을 이용한 캐시미스 대기시간 활용 방법및 장치

Publications (2)

Publication Number Publication Date
KR20100024813A KR20100024813A (ko) 2010-03-08
KR100953986B1 true KR100953986B1 (ko) 2010-04-21

Family

ID=42046590

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080083540A KR100953986B1 (ko) 2008-08-26 2008-08-26 우선순위 기반 실행을 이용한 캐시미스 대기시간 활용 방법및 장치

Country Status (2)

Country Link
KR (1) KR100953986B1 (ko)
SG (1) SG159434A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101276308B1 (ko) * 2011-02-22 2013-06-18 서울대학교산학협력단 다중 출력 명령어를 지원하는 그래프 기반의 코드 생성 장치 및 그 코드 생성 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6138208A (en) 1998-04-13 2000-10-24 International Business Machines Corporation Multiple level cache memory with overlapped L1 and L2 memory access
JP2001290704A (ja) 2000-04-06 2001-10-19 Nec Microsystems Ltd マルチプロセス制御装置及びマルチプロセス制御方法
JP2003015957A (ja) 2001-06-29 2003-01-17 Nec Corp キャッシュメモリ制御システム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6138208A (en) 1998-04-13 2000-10-24 International Business Machines Corporation Multiple level cache memory with overlapped L1 and L2 memory access
JP2001290704A (ja) 2000-04-06 2001-10-19 Nec Microsystems Ltd マルチプロセス制御装置及びマルチプロセス制御方法
JP2003015957A (ja) 2001-06-29 2003-01-17 Nec Corp キャッシュメモリ制御システム

Also Published As

Publication number Publication date
SG159434A1 (en) 2010-03-30
KR20100024813A (ko) 2010-03-08

Similar Documents

Publication Publication Date Title
US9286072B2 (en) Using register last use infomation to perform decode-time computer instruction optimization
JP5894120B2 (ja) ゼロサイクルロード
US7032101B2 (en) Method and apparatus for prioritized instruction issue queue in a processor
US10296346B2 (en) Parallelized execution of instruction sequences based on pre-monitoring
US9037837B2 (en) Hardware assist thread for increasing code parallelism
US7500240B2 (en) Apparatus and method for scheduling threads in multi-threading processors
JP3927546B2 (ja) 同時マルチスレッド化プロセッサ
US20140095848A1 (en) Tracking Operand Liveliness Information in a Computer System and Performing Function Based on the Liveliness Information
US8683185B2 (en) Ceasing parallel processing of first set of loops upon selectable number of monitored terminations and processing second set
US20140108768A1 (en) Computer instructions for Activating and Deactivating Operands
US7194603B2 (en) SMT flush arbitration
JP5403973B2 (ja) アウト・オブ・オーダ・プロセッサにおける述語型実行のための方法および装置
US6735687B1 (en) Multithreaded microprocessor with asymmetrical central processing units
KR100953986B1 (ko) 우선순위 기반 실행을 이용한 캐시미스 대기시간 활용 방법및 장치
EP3278212A1 (en) Parallelized execution of instruction sequences based on premonitoring
US10296350B2 (en) Parallelized execution of instruction sequences
US11829767B2 (en) Register scoreboard for a microprocessor with a time counter for statically dispatching instructions
US20220374237A1 (en) Apparatus and method for identifying and prioritizing certain instructions in a microprocessor instruction pipeline
US20230385065A1 (en) Apparatus and Method for Simultaneous Multithreaded Instruction Scheduling in a Microprocessor
WO2017199106A1 (en) Single-thread speculative multi-threading
Shah et al. SPSIM: SuperScalar Processor SIMulater CS305 Project Report
Park et al. Hiding cache miss penalty using priority-based execution for embedded processors
van der Linden Instruction-level Parallelism
Zhanglin et al. Queue usage and memory-level parallelism sensitive scheduling
Tsai et al. Enhancing multiple-path speculative execution with predicate window shifting

Legal Events

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

Payment date: 20130415

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140402

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150226

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee