KR100792320B1 - 주프로세서용 명령의 프리페치에 보조프로세서를 이용하는방법 및 장치 - Google Patents

주프로세서용 명령의 프리페치에 보조프로세서를 이용하는방법 및 장치 Download PDF

Info

Publication number
KR100792320B1
KR100792320B1 KR1020037003363A KR20037003363A KR100792320B1 KR 100792320 B1 KR100792320 B1 KR 100792320B1 KR 1020037003363 A KR1020037003363 A KR 1020037003363A KR 20037003363 A KR20037003363 A KR 20037003363A KR 100792320 B1 KR100792320 B1 KR 100792320B1
Authority
KR
South Korea
Prior art keywords
executable code
main processor
coprocessor
instructions
prefetch
Prior art date
Application number
KR1020037003363A
Other languages
English (en)
Other versions
KR20030034172A (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 KR20030034172A publication Critical patent/KR20030034172A/ko
Application granted granted Critical
Publication of KR100792320B1 publication Critical patent/KR100792320B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • 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/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)
  • Devices For Executing Special Programs (AREA)
  • Hardware Redundancy (AREA)

Abstract

본 발명의 한 실시예는 주프로세서에 앞서 프리페치 동작을 실행하는데 보조프로세서를 이용함으로서 명령들을 프리페치하는 시스템을 제공한다. 이 시스템은 주프로세서 상에서 실행코드를 실행시킴으로서, 그리고 이와 동시에, 보조프로세서 상에서 실행코드 축소버전을 실행함으로서 동작한다. 이 실행코드 축소버전은 실행코드보다 빨리 실행되며, 주프로세서가 명령을 필요로할 때보다 앞서 주프로세서에 대한 프리페치 명령을 실행한다. 이 시스템은 프리페치된 명령을 주프로세서가 접근할 수 있는 캐시에 저장함으로서, 프리페치된 명령을 주기억장치로부터 불러올 필요없이 주프로세서가 프리페치된 명령에 접근할 수 있다. 발명의 한 실시예에서, 실행코드를 실행하기 전에, 시스템은 소스 코드를 주프로세서에 대한 실행코드로 컴파일한다. 그다음으로, 시스템은 실행코드의 자주 참조되는 부분에 대한 명령 트레이스를 생성하기 위해 실행코드를 프로파일링한다. 시스템은 그후, 명령 트레이스 부분의 인출을 위한 인출 명령을 주프로세서가 접근할 수 있는 캐시에 생성함으로서 보조프로세서에 대한 실행코드 축소버전을 생성한다. 이 시스템은 주프로세서로부터 보조프로세서까지 진행 정보 전달을 위해 주프로세서에 대한 실행코드와 보조프로세서에 대한 실행코드 축소버전에 통신 명령들을 또한 삽입한다. 이 진행 정보는 프리페치 동작을 실행하도록 보조프로세서를 트리거링한다.

Description

주프로세서용 명령의 프리페치에 보조프로세서를 이용하는 방법 및 장치{METHOD AND APPARATUS FOR USING AN ASSIST PROCESOR TO PREFETCH INSTRUCTIONS FOR A PRIMARY PROCESSOR}
본 발명은 컴퓨터 시스템 성능을 개선시키기 위한 기술에 관한 것으로서, 특히, 주프로세서에 앞서 프리페치 동작(prefetch operations)을 실행하는 데 보조프로세서를 이용함으로서 메모리로부터 명령을 프리페치(prefetch)하는 방법 및 장치에 관한 것이다.
반도체 집적 밀도가 점점 증가하여 한개의 마이크로프로세서 칩 안에 더많은 트랜지스터가 집적됨에 따라, 컴퓨터 설계자들은 이 트랜지스터들을 이용하여 컴퓨터 시스템 성능을 개선시키는 여러 다른 방법을 개발하고 있다. 이를 위해, 컴퓨터 설계자들은 여러개의 중앙 처리 장치(CPU)를 단일 반도체 칩 내에 통합시키기 시작하고 있다. 이로 인해, 동시에 실행될 수 있도록 여러 조각들로 병렬화(분할)될 수 있는 연산 작업의 경우 성능에 이득이 생긴다.
불행하게도, 병렬처리로 인한 성능 이득은 원천적으로 직렬 코드 부분을 가지고 있는 여러 대상의 경우 제한될 수 있다. 이렇게 원척적인 직렬 코드 부분의 경우, 메모리 대기시간(memory latency) 문제에 의해 성능이 또한 제한된다.
프로세서 클럭 속도가 기하급수적으로 증가함에 따라 메모리 대기시간 문제점이 계속해서 악화되고 있다. 현재의 프로세서 클럭 속도에서, 주기억장치로부터 한개의 캐시 라인을 당기는 데는 200 프로세서 클럭 사이클이 소요될 수 있다.
컴퓨터 설계자들은 메모리 대기시간 지연을 감소시키기 위해 수많은 기술들을 현재 이용하고 있다. 1) 메모리 대기시간이 가능한 감추어지도록 부하를 시간에 따라 편성(스케쥴링)하고 저장하기 위해 규칙외 실행(out-of-order execution)이 사용될 수 있다. 불행하게도, 규칙외 실행은 수 클럭 사이클의 메모리 대기시간만을 감추는 것으로 제한되는 것이 일반적이다. 2) 어드레스가 유효하지 않을 때 고장을 일으키지 않으면서 데이터값을 로딩하기 위해 비-고장 로드 명령이 사용될 수 있다. 3) L1 캐시가 비사용 데이터 값으로 오염되지 않도록 한개의 데이터 값을 L1 캐시가 아닌 L2 캐시로 로딩시키는 데 조향성 로드 명령이 사용될 수 있다. 불행하게도, 비고장 로드와 조향성 로드는 불필요한 로드를 발생시킬 수 있다. 이는 명령 캐시 공간을 소모시키고 레지스터에 정체를 일으킨다. 4) 일부 연구자들은 하드웨어 프리페치 엔진을 이용하여 연구하였으나 통상적으로 이들 하드웨어 프리페치 엔진은 불규칙한 메모리 접근 패턴에 대해 효과가 없다.
메모리 대기시간 지연은 명령 페치 동작 과정 중의 문제일 수도 있다. 명령 캐시 미스는 데이터 캐시 미스만큼 큰 지연을 유발할 수 있다. 또한, 현대의 프로그래밍 언어로 쓰여진 프로그램 코드에 산재되어 있는 수많은 브랜치와 함수 호출(function call) 때문에, 어느 명령이 다음에 실행될 지를 예측하기가 매우 어렵다.
결국 필요한 것은 명령 페치 동작 중 메모리 대기시간 지연을 감소시키는 방법 및 장치이다.
본 발명의 한가지 실시예는 주프로세서에 앞서 프리페치 동작 실행에 보조프로세서를 이용함으로서 명령을 프리페치(prefetch: 사전인출, 또는 사전추출)하는 시스템을 제공한다. 이 시스템은 주프로세서에서 실행코드를 실행하면서 이와 동시에 보조프로세서에서 축소버전의 실행코드를 실행함으로서 동작한다. 이 축소버전의 실행코드는 실제 실행코드보다 훨씬 신속하게 실행되며, 주프로세서가 명령을 필요로하는 시기에 앞서 주프로세서에 대한 프리페치 동작을 실행한다. 이 시스템은 프리페치된 명령을 주기억장치로부터 불러올 필요없이 주프로세서가 프리페치된 명령에 접근할 수 있도록 주프로세서에 의해 접근가능한 캐시에 프리페치된 명령을 저장한다.
발명의 한가지 실시예에서, 실행코드를 실행하기 전에, 시스템은 소스 코드를 주프로세서에 대한 실행코드로 컴파일한다. 그다음에, 시스템은 실행코드의 자주 참조되는 부분에 대한 명령 트레이스를 생성하도록 실행코드를 프로파일링(profiling)한다. 이후 시스템은 주프로세서에 의해 접근가능한 캐시에 명령 트레이스 부분을 프리페치하는 프리페치 명령을 생성함으로서 보조프로세서에 대한 축소버전의 실행코드를 생성한다. 시스템은 주프로세서에 대한 실행코드에, 그리고 보조프로세서에 대한 축소버전 실행코드에 통신 명령을 삽입하여, 주프로세서로부터 보조프로세서까지 진행 정보를 전달하게 한다. 이 진행 정보는 보조프로 세서를 트리거링하여 프리페치 동작을 실행시킨다.
발명의 한 실시예에서, 소스 코드를 컴파일링하는 과정과 축소버전 실행코드를 생성하는 과정은 컴파일러에 의해 실행된다.
발명의 한 실시예에서, 보조프로세서가 잘못된 경로를 따라 프리페치된 명령을 가지고 있다고 진행 정보가 보조프로세서에 알려줄 경우, 축소버전의 실행코드가 보조프로세서로 하여금 프리페치를 중단시키게 한다.
발명의 한 실시예에서, 브랜치 히스토리 정보와 호출 히스토리 정보를 레코딩하는 전용 하드웨어로부터 제어 흐름 히스토리 정보를 판독하도록 축소버전의 실행코드가 설정된다. 그후, 축소버전의 실행코드는 제어 흐름 히스토리 정보를 바탕으로 실행코드를 따라 예측된 경로를 구축하며, 주프로세서에 대한 명령을 프리페치하기 위해 예측된 경로로 프리페치 동작을 실행한다.
발명의 한 실시예에서, 축소버전의 실행코드를 생성함으로서, 실행코드에 대한 제어 흐름 그래프가 구축된다. 이렇게 함으로서, 시스템은 제어 흐름 그래프로부터 루프를 제거하고, 제어 흐름 그래프에 관련되지 않은 실행코드 명령들을 제거한다. 시스템은 또한 주프로세서에 대한 실행코드로부터 명령을 프리페치하기 위해 축소버전의 실행코드에 프리페치 명령을 삽입한다.
발명의 한 실시예에서, 프리페치 동작을 실행하는 것은 주프로세서에 대한 여러 명령을 내장한 캐시 블록을 프리페치하는 과정을 포함한다.
발명의 한 실시예에서, 시스템은 주프로세서로부터 보조프로세서까지 일방향 통신 채널을 통해 진행 정보를 주기적으로 전송한다.
발명의 한 실시예에서, 주프로세서와 보조프로세서는 동일한 반도체 칩 상에 위치한다.
발명의 한 실시예에서, 주프로세서와 보조프로세서는 서로 다른 반도체 칩에 위치한다.
발명의 한 실시예에서, 보조프로세서는 단순화된 버전의 주프로세서이다.
도 1은 발명의 한 실시예에 따르는 컴퓨터 시스템의 도면.
도 2는 본 발명의 한 실시예에 따르는 컴파일 과정의 도면.
도 3은 발명의 한 실시예에 따르는 축소버전의 실행코드를 발생시키는 과정의 순서도.
도 4는 발명의 한 실시예에 따르는 축소버전의 실행코드에 대한 구조의 예 도면.
도 5는 발명의 한 실시예에 따르는 축소버전의 실행코드를 구축하는 방법의 세부사항을 보여주는 순서도.
도 6은 발명의 한 실시예에 따르는, 잘못된 경로를 따라 진행되었음을 결정할 때 축소버전의 실행코드가 어떻게 벗어나는 지를 보여주는 순서도.
도 7은 발명의 한 실시예에 따르는 전용 하드웨어로부터 제어 흐름 히스토리 정보를 판독함으로서 축소버전의 실행코드가 어떻게 동작하는 지를 보여주는 순서도.
도 8은 본 발명의 한 실시예에 따르는 제어 흐름 히스토리 정보용 전용 하드 웨어 도면.
도 9는 발명의 한 실시예에 따르는 축소버전 실행코드의 샘플 부분 도면.
하기에 설명되는 데이터 구조 및 코드는 컴퓨터가 판독가능한 저장 매체에 통상적으로 저장되며, 이 저장 매체로는 컴퓨터 시스템에 의한 이용을 위해 코드나 데이터를 저장할 수 있는 어떤 소자나 매체도 가능하다. 컴퓨터가 판독가능한 저장 매체에는 디스크 드라이브, 자기식 테이프, CD, DVD 등등이 있다. 이와 같은 데이터 구조 및 코드가 전송 매체(가령, 인터넷같은 통신망)에 구현된 컴퓨터 명령 신호들로 나타날 수도 있다(그러나 이와 같은 전송 매체는 한국법에서 컴퓨터가 판독가능한 저장 매체로 인정되지 않는다).
컴퓨터 시스템
도 1은 발명의 한 실시예에 따르는 컴퓨터 시스템(101)을 도시한다. 컴퓨터 시스템(101)은 주프로세서(102)와 보조프로세서(104)를 포함한다. 이 구조들 전부는 실리콘 다이(100) 상에 위치한다(그러나 본 발명의 또다른 실시예에서는 프로세서(102, 104)들이 여러 실리콘 다이에 위치할 수 있다).
프로세서(102, 104)는 프로세서(102, 104)에 의해 실행될 명령들을 각각 내장하는 명령 캐시(112, 120)를 포함한다.
프로세서(102, 104)는 데이터 캐시(107, 106)와의 통신사항을 버퍼링하기 위해 각각 로드 버퍼(114, 122)와 저장 버퍼(116, 124)를 추가적으로 포함한다. 특히, 주프로세서(102)는 데이터 캐시(107)로부터 수신한 로드사항을 버퍼링하기 위해 로드 버퍼(114)를 포함하고, 데이터 캐시(107)로의 저장사항을 버퍼링하기 위한 저장 버퍼(116)를 포함한다. 마찬가지로, 보조프로세서(104)는 데이터 캐시(106)로 부터 수신한 로드사항을 버퍼링하기 위해 로드 버퍼(122)를 포함하고, 데이터 캐시(106)로의 저장사항을 버퍼링하기 위해 저장 버퍼(124)를 포함한다.
프로세서(102, 104)는 추가적으로, 일방향 통신 채널(128, 129)에 의해 함께 연결된다. 이는 주프로세서(102)와 보조프로세서(104)간 신속한 통신을 촉진시킨다. 통신 채널(128)에서는 주프로세서(102)가 보조프로세서(104) 내의 레지스터(126)에 기록을 실시하고, 통신 채널(129)에서는 보조프로세서(104)가 주프로세서(102)내의 레지스터(127)에 기록을 실시한다.
공유 메모리 토신 메커니즘을 이용하는 것과는 달리, 레지스터(126, 또는 127)에 기록하는 것은 캐시 미스(cashe miss)나 코히어런스 트래픽(coherence traffic)을 일으키지 않을 것이다. 더욱이, 주프로세서(102)는 보조프로세서(104)가 처리를 계속하라는 통신을 수신할 때까지 대기할 필요가 없다. 이와는 대조적으로, 주프로세서(102)가 메모리를 통해 보조프로세서(104)와 통신할 경우, 시스템은 통신을 위해 저장 버퍼(116)가 비워질 때를 기다려야할 것이다.
발명의 한 실시예에서, 데이터 캐시(106, 107)는 32바이트 캐시 라인을 가진 16KB 4-웨이 세트-연관 데이터 캐시이다.
데이터 캐시(106), 데이터 캐시(107), 명령 캐시(112), 그리고 명령 캐시(120)는 스위치(110)를 통해 L2 캐시(113)에 연결된다. 스위치(110)는 신호 라인을 스위칭하기 위한 어떤 종류의 회로도 포함할 수 있다. 발명의 한 실시예에서, 스위치(110)는 크로스바 스위치(cross bar switch)이다.
L2 캐시는 주프로세서(102)와 보조프로세서(104)에 대한 명령 및 데이터를 저장하기 위한 통합된 대형 캐시이다. L2 캐시(113)는 메모리 콘트롤러(111)에 연결되며, 이는 칩 바깥에 위치하는 DRAM(108)에 연결된다.
DRAM(108)은 주프로세서(102)에 대한 실행코드(130)를 내장한다. 시스템 동작 중, 실행코드(130)는 메모리 콘트롤러(111), L2 캐시(113), 그리고 스위치(110)를 통해 주프로세서(102)의 명령 캐시(112)에 로딩된다. DRAM(108)은 보조프로세서(104)에 대한 축소 실행코드(132)를 또한 내장한다. 축소 실행코드(132)는 실행코드(130)와 동일한 패턴의 메모리 레퍼런스를 발생시키는 실행코드(130)의 축소버전이다. 시스템 동작 중, 축소 실행코드(132)는 메모리 콘트롤러(111), L2 캐시(113), 그리고 스위치(110)를 통해 보조프로세서(104)의 명령 캐시(120)에 로딩된다. DRAM(108)은 데이터 캐시(106-107)로부터 메모리 콘트롤러(111), L2 캐시(113), 그리고 스위치(110)를 통해, 또는 메모리 콘트롤러(111), L2 캐시(113), 그리고 스위치(110)를 통해 데이터 캐시(106-107)로 이동하는 데이터(134)를 추가적으로 포함한다.
본 발명은 도시되는 컴퓨터 시스템 구조에 한정되지 않으며 여러개의 프로세서를 포함하는 어떤 컴퓨터 시스템에도 사용될 수 있다.
발명의 한 실시예에서, 보조프로세서(104)는 주프로세서(102)에 의해 명령이 이용되기 전에 미리 명령 접근을 이행하는 데 사용된다. 본 실시예에서, 보조프로세서(104)는 프로그램에 명시된 모든 연산을 실제로 수행할 필요가 없다. 보조프로세서(104)는 프로그램의 명령 접근 패턴을 결정하는 데 필요한 연산만을 수행하면 된다. 따라서, 보조프로세서(104)는 주프로세서(102)의 보다 간단한 버전이 될 수 있고, 명령 어드레스 연산 실행에 필요하지 않은 회로를 배제할 수 있다.
컴파일 과정
도 2는 본 발명의 한 실시예에 따르는 컴파일 과정의 도면이다. 컴파일 과정 중, 소스 코드(202)는 컴파일러(204)를 통해 주프로세서(102)에 대한 실행코드(130)를 생성한다. 실행코드(130)는 축소 모듈(208)을 통해 보조프로세서(104)에 대한 축소 실행코드(132)를 생성한다. 축소 모듈(208)은 컴파일러(204)의 일부일 수도 있고, 또는 컴파일러(204)와는 별개의 것일 수도 있다.
발명의 한 실시예에서, 컴파일 및 축소 과정은 실행시간(run-time)이전에 실행된다. 또다른 실시예에서, 컴파일 및 축소 과정은 프로그램이 실행중인 실행시간(run-time) 중에 발생한다.
축소 실행코드 발생
도 3은 발명의 한 실시예에 따르는 축소 모듈(208) 내에서 축소 실행코드(132)를 발생시키는 과정의 순서도이다. 이 시스템은 메모리 대기시간이 지연을 유발시키고 있는 핫 스팟(hot spot)을 식별하기 위해 실행코드(130)를 프로파일링함으로서(실행을 시뮬레이션함으로서) 시작된다(단계 302). 시스템은 실행코드(130)에 핫스팟의 명령 트레이스를 구축하기 위해 프로파일 과정 중 얻은 정보를 이용한다. 발명의 한 실시예에서, 시스템은 약 2000개의 명령 하나하나마다 약 100개씩의 산포 트레이스를 구축한다. 그후 시스템은 이들 트레이스를 대응하는 소스 코드에 다시 상관시킨다(단계 304).
그후, 시스템은 트레이스 프리페치를 위한 코드를 생성함으로서 축소 실행코 드(132)를 생성한다(단계 306). 이 과정은 도 4, 5, 9를 참고하여 아래에서 보다 상세하게 설명된다.
시스템은 실행코드(130)와 축소 시행 코드(132)에 프로세서간 통신 코드를 삽입한다(단계 308). 이 통신 코드로 인해, 주프로세서(102)가 진행 정보를 보조프로세서(104)에 전달할 수 있다. 이 진행 정보로 인해 보조프로세서(104)는, 정확한 경로를 따라 프리페치를 실행하고 있는지, 그리고 프리페치를 계속함에 있어 주프로세서(102)에 너무 앞선 것이 아닌지를 결정할 수 있다.
보조프로세서(104)가 주프로세서(102)에 너무 앞서 명령을 프리페치하는 것은 바람직하지 않다. 왜냐하면, 미리 프리페치된 명령들은 주프로세서(102)에 의해 이용되지 않을 수 있고, 주프로세서(102)에 의해 보다 긴급하게 필요한 데이터로 바뀔 수 있다. 사용되지 않을 수 있는 명령을 프리페치함으로서 메모리 대역폭에 정체를 유발할 수 있고 캐시 오염을 일으킬 수 있다. 이는 컴퓨터 시스템 성능을 저하시킨다. 따라서, 프리페치 명령을 개시하기 전에 주프로세서(102)의 실행 경로가 보조프로세서(104)의 대응 코드에 대해 닫힐 때까지 보조프로세서(104)가 대기하는 것이 바람직하다.
또한 단일 프리페치 동작은 통상적으로, 다중 명령을 내장한 전체 캐시 라인을 불러온다. 예를 들어, 프리페치된 캐시 라인은 16개의 4바이트 명령을 내장하는 64바이트를 포함할 수 있다.
보조프로세서(104)가 실행코드(130)를 통해 잘못된 경로로 프리페치되고 있다고 이 진행 정보가 표시할 경우, 시스템은 보조프로세서(104)가 명령 트레이스의 프리페치로부터 빠져나오게 한다.
도 4는 본 발명의 한 실시예에 따르는 축소 실행코드(132)에 대한 한가지 구조의 도면이다. 본 실시예에서, 축소 실행코드(132)는 한개의 루프의 구조를 가진다. 이 코드는 먼저 도 1의 레지스터(126) 안이나 공유 메모리에 위치할 수 있는 변수 "val"를 읽어들임으로서 시작된다. "val"이 0과 같지 않을 경우, 시ㅡ템은 val에 내장된 값을 바탕으로 프리페치 동작을 내장한 특정 코드 조각들을 실행하는 스위치 문장을 실행한다. 이 방식으로, 주프로세서(102)는 변수 val을 통해 보조프로세서(104)에 진행 정보를 전달할 수 있다. 이 진행 정보로 인해, 주프로세서(102)가 명령을 필요로할 때에 앞서 미리 보조프로세서(104)가 명령을 프리페치하도록 특정 프리페치 명령이 실행될 수 있다. 그후 코드는 val을 0으로 재설정하며, 루프를 계속한다. val에의 기록 및 판독은 동기화되지 않는다.
도 5는 발명의 한 실시예에 따르는 축소 실행코드(12)를 구축하는 방법의 세부사항을 설명하는 순서도이다. 시스템은 실행코드(130)에 대한 제어 흐름 그래프를 구축함으로서 시작된다(단계 502). 그후, 시스템은 제어 흐름 그래프로부터 작은 루프를 제거한다(단계 504). 왜냐하면 작은 루프는 L2 캐시(113) 내로 프리페치된다고 추정되기 때문이다. 따라서 작은 루프가 프리페치되면, 루프가 종료될 때까지 실행된다. 시스템은 제어 흐름 그래프에 관련되지 않은 모든 명령을 실행코드(130)로부터 제거한다(단계 506). 이는 비관련 코드가 코드를 통해 실행 경로에 영향을 미치지 않을 것이기 때문에 행하여질 수 있고, 따라서 필요한 프리페치 동작에 어떤 영향도 미치지 않을 것이다. 예를 들어, 수학적 연산을 실행하는 결정성 코드(deterministic code)가 제거될 수 있다.
그후, 시스템은 실행코드(130)의 대응 섹션에 대한 명령을 프리페치하기 위해 축소 실행코드(132)에 프리페치 명령을 삽입한다(단계 508).
과정 탈출
도 6은 발명의 한 실시예에 따라, 잘못된 경로로 진행하고 있다고 결정될 때 축소 실행코드(132)가 어떻게 탈출하는 지를 보여주는 순서도이다. 이 시스템은 보조프로세서(104) 상에서 실행되는 축소 실행코드(132)가 주프로세서(102)에 의해 쓰여진 진행 정보를 읽어들일 때 시작한다(단계 602). 이 진행 정보는 주프로세서(102)의 실행 경로가 실행코드(130) 내에서 사라진 곳을 표시한다.
보조프로세서(104)가 잘못된 경로를 따라 진행되고 있음을 이 진행 정보가 표시할 경우, 보조프로세서(104)는 트레이스 프리페칭을 중단한다(단계 604). 보조프로세서는 부가적으로, 정확한 경로에서 프리페칭을 시작할 수 있다.
프리페치 과정 중, 보조프로세서(104)는 브랜치의 한쪽으로만 프리페치할 것을 결정할 수 있고, 주프로세서(102)는 브랜치의 다른 한 쪽을 따라 진행할 것을 결정할 수 있다. 이 경우에, 보조프로세서(104)가 잘못된 경로를 취한다.
또한 보조프로세서(104)가 반드시 탈출할 필요는 없다. 잘못된 경로를 따라 프리페치를 할 때의 유일한 벌칙은 캐시 오염 및 불필요한 메모리 전환이며, 이는 매우 작은 트레이스의 경우 별다른 요인이 아닐 수 있다.
히스토리 정보 저장을 위한 전용 하드웨어
도 7은 본 발명의 한 실시예에 따르는 축소 실행코드(132)가 동작하는 방법 을 설명하는 순서도이다. 이 시스템은 실행코드(130)에 대한 제어 흐름 히스토리 정보를 레코딩하는 전용 하드웨어로부터 제어 흐름 히스토리 정보를 읽어들임으로서 시작된다(단계 702). 예를 들어, 이 제어 흐름 히스토리 정보는 어느 브랜치를 취하고 어떤 함수 호출이 실행되는 지를 표시한 레코드를 포함할 수 있다. 그 다음에, 시스템은 제어 흐름 히스토리 정보를 바탕으로 실행코드(130)를 통한 예측 경로를 구축한다(단계 704). 예를 들어, 예측 경로는 실행코드(130)를 따라 취하는 최종 경로를 바탕으로 결정될 수도 있고, 실행코드(130)를 따라 자장 자주 취하는 경로를 바탕으로 결정될 수도 있다. 그후, 축소 실행코드(132)는 보조프로세서(104)가 예측 경로를 따라 프리페치 동작을 실행하게 한다(단계 706).
도 8은 본 발명의 한 실시예에 따르는 제어 흐름 히스토리 정보를 저장하기 위한 전용 하드웨어를 도시한다. 본 실시예에서, 전용 하드웨어는 함수 호출과 리턴에 대한 호출 어드레스를 저장한다. 각각의 호출에 대하여, 상기 하드웨어는 일련의 브랜치들이 선택되었는 지 여부의 레코드를 저장한다. 예를 들어, 제 1 행은 선택된(Taken) 브랜치 한개, 선택되지 않은(Not Taken) 브랜치 한개, 그리고 세 개의 선택된 브랜치 순으로 주소 X에 위치하는 함수 호출을 명시한다. 제 2 행은 어드레스 Y에 위치하여 브랜치가 없는 함수 호출을 명시한다. 제 3 행은 어드레스 Y+4에 대한 함수 호출로부터의 리턴을 명시한다. 마지막으로, 제 4 행은 어드레스 Z에 위치하여, 두개의 선택된(Taken) 브랜치 및 한개의 선택되지 않은(Not Taken) 브랜치를 가지는 함수 호출을 명시한다.
샘플 축소 실행코드
도 9는 본 발명의 한 실시예에 따르는 프리페치 명령을 포함하는 축소 실행코드(132)의 샘플 부분 도면이다.
도 9의 좌측 그림은 실행코드(130)의 한 섹션의 구조 도면이다. 이 섹션은 다수의 블록(902, 904, 906, 908, 910, 912)으로 나누어지며, 각각의 블록은 64 바이트 길이로서 단일 프리페치 동작에서 프리페치될 수 있다. 실행코드(130)는 먼저 블록 902를 실행하며, 블록 902는 블록 904나 블록 906으로의 브랜치를 실행한다. 블록 904와 블록 906은 블록 908에 대한 함수 호출을 실행하며, 블록 908은 블록 910이나 블록 912로의 브랜치를 실행한다.
도 9의 우측 표시는 축소 실행코드(132) 부분의 대응구조를 도시한다. 축소 실행코드(132)는 먼저 블록 902, 904, 906을 프리페치한다. 그후, 변수 "addr"이 함수 호출의 수신 어드레스로 로딩되고, 그후 축소 실행코드(132)가 블록 908, 910, 912를 프리페치한다.
축소 실행코드(132)는 실행코드(130)의 브랜치 양쪽을 따라 프리페치한다. 발명의 또하나의 실시예에서, 축소 실행코드(132)는 불필요한 명령 로드와 명령 캐시 오명을 제거하기 위해 예측된 브랜치 경로를 따라서만 프리페치한다.
프리페치 동작은 실행코드(130)의 블록을 L2 캐시(113)로 이동시킨다. 대안으로, 프리페치 동작은 명령들을 주프로세서(102)에 대한 명령 캐시(112)로 계속 프리페치되게 할 수 있다.

Claims (25)

  1. 주프로세서에 앞서 프리페치 동작을 실행하는 데 보조프로세서를 이용함으로서 명령을 프리페치하는 방법으로서,
    - 주프로세서 상에서 실행코드를 실행하고,
    - 이와 동시에 보조프로세서 상에서 실행코드 축소버전을 실행하며, 이때 실행코드 축소버전은 실행코드보다 빨리 실행되며 주프로세서가 명령을 필요로하기에 앞서 주프로세서에 대한 프리페치 동작을 실행하며, 그리고
    - 프리페치된 연산을 주기억장치로부터 불러올필요없이 주프로세서가 프리페치된 명령에 접근할 수 있도록, 주프로세서에 의해 접근가능한 캐시에 프리페치된 명령을 저장하는,
    이상의 단계를 포함하는 것을 특징으로 하는, 주프로세서에 앞서 프리페치 동작을 실행하는 데 보조프로세서를 이용함으로서 명령을 프리페치하는 방법.
  2. 제 1 항에 있어서, 실행코드를 실행하기 전에,
    - 소스 코드를 주프로세서에 대한 실행코드로 컴파일하고,
    - 실행코드의 자주 참조되는 부분에 대한 명령 트레이스 생성을 위해 실행코드를 프로파일링하며,
    - 명령 트레이스 부분을 프리페치하는 프리페치 명령을 주프로세서가 접근할 수 있는 캐시에 생성함으로서 보조프로세서에 대한 실행코드 축소버전을 생성하며, 그리고
    - 주프로세서로부터 보조프로세서로 진행 정보 전달을 위해 주프로세서에 대한 실행코드와 보조프로세서에 대한 실행코드 축소버전에 통신 명령을 삽입하는,
    이상의 단계를 추가로 포함하며, 이때 진행 정보는 프리페치 동작을 실행하도록 보조프로세서를 트리거링하는 것을 특징으로 하는 방법.
  3. 제 2 항에 있어서, 소스 코드를 컴파일링하는 과정과 실행코드 축소버전을 생성하는 과정이 컴파일러에 의해 이행되는 것을 특징으로 하는 방법.
  4. 제 2 항에 있어서, 보조프로세서가 잘못된 경로를 따라 명령을 프리페치하고 있음을 진행 정보가 표시할 경우, 실행코드 축소버전은 보조프로세서가 프리페치를 중단하게 하는 것을 특징으로 하는 방법.
  5. 제 1 항에 있어서, 실행코드 축소버전은,
    - 브랜치 히스토리 정보와 호출 히스토리 정보를 레코딩하는 전용 하드웨어로부터 제어 흐름 히스토리 정보를 읽어들이고,
    - 제어 흐름 히스토리 정보를 바탕으로 실행코드를 따라 예측 경로를 구축하며, 그리고
    - 주프로세서에 대한 명령을 프리페치하기 위해 예측 경로를 따라 프리페치 동작을 실행하도록,
    설정되는 것을 특징으로 하는 방법.
  6. 제 2 항에 있어서, 실행코드 축소버전을 생성하는 단계는,
    - 실행코드에 대한 제어 흐름 그래프를 구축하고,
    - 제어 흐름 그래프로부터 루프들을 제거하며,
    - 제어 흐름 그래프에 관련없는 실행코드 명령들을 제거하고, 그리고
    - 주프로세서에 대한 실행코드로부터 명령을 프리페치하기 위해 실행코드 축소버전에 프리페치 명령을 삽입하는,
    이상의 과정을 포함하는 것을 특징으로 하는 방법.
  7. 제 1 항에 있어서, 프리페치 동작을 실행하는 단계는,
    - 주프로세서에 대한 다중 명령을 내장하는 캐시 블록을 프리페치하는
    과정을 포함하는 것을 특징으로 하는 방법.
  8. 제 1 항에 있어서, 일방향 통신 채널을 통해 주프로세서로부터 보조프로세서까지 진행 정보를 주기적으로 전달하는 단계를 추가로 포함하는 것을 특징으로 하는 방법.
  9. 주프로세서에 앞서 프리페치 동작을 실행하는 데 보조프로세서를 이용함으로서 명령을 프리페치하는 방법을 구현하는 프로그램을 기록한 컴퓨터 판독형 저장 매체에 있어서, 상기 방법은,
    - 주프로세서 상에서 실행코드를 실행하고,
    - 이와 동시에 보조프로세서 상에서 실행코드 축소버전을 실행하며, 이때 실행코드 축소버전은 실행코드보다 빨리 실행되며 주프로세서가 명령을 필요로하기에 앞서 주프로세서에 대한 프리페치 동작을 실행하며, 그리고
    - 프리페치된 연산을 주기억장치로부터 불러올필요없이 주프로세서가 프리페치된 명령에 접근할 수 있도록, 주프로세서에 의해 접근가능한 캐시에 프리페치된 명령을 저장하는
    이상의 단계를 포함하는 것을 특징으로 하는, 주프로세서에 앞서 프리페치 동작을 실행하는 데 보조프로세서를 이용함으로서 명령을 프리페치하는 방법을 구현하는 프로그램을 기록한 컴퓨터 판독형 저장 매체.
  10. 제 9 항에 있어서, 실행코드를 실행하기 전에, 상기 방법은,
    - 소스 코드를 주프로세서에 대한 실행코드로 컴파일하고,
    - 실행코드의 자주 참조되는 부분에 대한 명령 트레이스 생성을 위해 실행코드를 프로파일링하며,
    - 명령 트레이스 부분을 프리페치하는 프리페치 명령을 주프로세서가 접근할 수 있는 캐시에 생성함으로서 보조프로세서에 대한 실행코드 축소버전을 생성하며, 그리고
    - 주프로세서로부터 보조프로세서로 진행 정보 전달을 위해 주프로세서에 대한 실행코드와 보조프로세서에 대한 실행코드 축소버전에 통신 명령을 삽입하는,
    이상의 단계를 추가로 포함하며, 이때 진행 정보는 프리페치 동작을 실행하도록 보조프로세서를 트리거링하는 것을 특징으로 하는, 컴퓨터 판독형 저장 매체.
  11. 제 10 항에 있어서, 소스 코드를 컴파일링하는 과정과 실행코드 축소버전을 생성하는 과정이 컴파일러에 의해 이행되는 것을 특징으로 하는, 컴퓨터 판독형 저장 매체.
  12. 제 10 항에 있어서, 보조프로세서가 잘못된 경로를 따라 명령을 프리페치하고 있음을 진행 정보가 표시할 경우, 실행코드 축소버전은 보조프로세서가 프리페치를 중단하게 하는 것을 특징으로 하는, 컴퓨터 판독형 저장 매체.
  13. 제 9 항에 있어서, 실행코드 축소버전은,
    - 브랜치 히스토리 정보와 호출 히스토리 정보를 레코딩하는 전용 하드웨어로부터 제어 흐름 히스토리 정보를 읽어들이고,
    - 제어 흐름 히스토리 정보를 바탕으로 실행코드를 따라 예측 경로를 구축하며, 그리고
    - 주프로세서에 대한 명령을 프리페치하기 위해 예측 경로를 따라 프리페치 동작을 실행하도록,
    설정되는 것을 특징으로 하는, 컴퓨터 판독형 저장 매체.
  14. 제 10 항에 있어서, 실행코드 축소버전을 생성하는 단계는,
    - 실행코드에 대한 제어 흐름 그래프를 구축하고,
    - 제어 흐름 그래프로부터 루프들을 제거하며,
    - 제어 흐름 그래프에 관련없는 실행코드 명령들을 제거하고, 그리고
    - 주프로세서에 대한 실행코드로부터 명령을 프리페치하기 위해 실행코드 축소버전에 프리페치 명령을 삽입하는,
    이상의 과정을 포함하는 것을 특징으로 하는, 컴퓨터 판독형 저장 매체.
  15. 제 9 항에 있어서, 프리페치 동작을 실행하는 단계는,
    - 주프로세서에 대한 다중 명령을 내장하는 캐시 블록을 프리페치하는
    과정을 포함하는 것을 특징으로 하는, 컴퓨터 판독형 저장 매체.
  16. 제 9 항에 있어서, 상기 방법이 일방향 통신 채널을 통해 주프로세서로부터 보조프로세서까지 진행 정보를 주기적으로 전달하는 단계를 추가로 포함하는 것을 특징으로 하는, 컴퓨터 판독형 저장 매체.
  17. 기억장치로부터 프리페치를 촉진시키는 장치로서,
    - 실행코드를 실행하도록 설정되는 주프로세서,
    - 이와 동시에 실행코드 축소버전을 실행하도록 설정되는 보조프로세서로서, 이때 실행코드 축소버전은 실행코드보다 빨리 실행되며 주프로세서가 명령을 필요로하기에 앞서 주프로세서에 대한 프리페치 동작을 실행하는 특징의 보조프로세서, 그리고
    - 프리페치된 연산을 주기억장치로부터 불러올필요없이 주프로세서가 프리페치된 명령에 접근할 수 있도록, 주프로세서에 의해 접근가능하면서 프리페치된 명령을 저장하는 캐시
    를 포함하는 것을 특징으로 하는, 기억장치로부터 프리페치를 촉진시키는 장치.
  18. 제 17 항에 있어서,
    - 소스 코드를 주프로세서에 대한 실행코드로 컴파일하고,
    - 실행코드의 자주 참조되는 부분에 대한 명령 트레이스 생성을 위해 실행코드를 프로파일링하며,
    - 명령 트레이스 부분을 프리페치하는 프리페치 명령을 주프로세서가 접근할 수 있는 캐시에 생성함으로서 보조프로세서에 대한 실행코드 축소버전을 생성하며, 그리고
    - 주프로세서로부터 보조프로세서로 진행 정보 전달을 위해 주프로세서에 대 한 실행코드와 보조프로세서에 대한 실행코드 축소버전에 통신 명령을 삽입하도록,
    설정되는 컴파일 메커니즘이 상기 장치에 추가로 포함하고, 이때 진행 정보는 프리페치 동작을 실행하도록 보조프로세서를 트리거링하는 것을 특징으로 하는 장치.
  19. 제 18 항에 있어서, 보조프로세서가 잘못된 경로를 따라 명령을 프리페치하고 있음을 진행 정보가 보조프로세서에 표시할 경우, 실행코드 축소버전은 보조프로세서가 프리페치를 중단하게 하는 것을 특징으로 하는 장치.
  20. 제 17 항에 있어서, 상기 장치는 실행코드에 대한 호출 히스토리 정보와 브랜치 히스토리 정보를 레코딩하는 전용 하드웨어를 추가로 포함하며,
    - 브랜치 히스토리 정보와 호출 히스토리 정보를 레코딩하는 전용 하드웨어로부터 제어 흐름 히스토리 정보를 읽어들이고,
    - 제어 흐름 히스토리 정보를 바탕으로 실행코드를 따라 예측 경로를 구축하며, 그리고
    - 주프로세서에 대한 명령을 프리페치하기 위해 예측 경로를 따라 프리페치 동작을 실행하도록,
    실행코드 축소버전이 설정되는 것을 특징으로 하는 장치.
  21. 제 18 항에 있어서, 실행코드 축소버전을 생성할 때,
    - 실행코드에 대한 제어 흐름 그래프를 구축하고,
    - 제어 흐름 그래프로부터 루프들을 제거하며,
    - 제어 흐름 그래프에 관련없는 실행코드 명령들을 제거하고, 그리고
    - 주프로세서에 대한 실행코드로부터 명령을 프리페치하기 위해 실행코드 축소버전에 프리페치 명령을 삽입하도록,
    컴파일 메커니즘이 설정되는 것을 특징으로 하는 장치.
  22. 제 17 항에 있어서, 프리페치 동작들은,
    - 주프로세서에 대한 다중 명령을 내장하는 캐시 블록을 프리페치하도록
    설정되는 것을 특징으로 하는 장치.
  23. 제 17 항에 있어서, 주프로세서와 보조프로세서가 동일한 반도체 칩에 위치하는 것을 특징으로 하는 장치.
  24. 제 17 항에 있어서, 주프로세서와 보조프로세서가 서로 다른 반도체 칩에 위치하는 것을 특징으로 하는 장치.
  25. 제 17 항에 있어서, 상기 보조프로세서는 기억장치 접근 동작에 관련된 하드웨어만으로 구성된, 주프로세서의 단순화된 버전인 것을 특징으로 하는 장치.
KR1020037003363A 2000-09-08 2001-08-30 주프로세서용 명령의 프리페치에 보조프로세서를 이용하는방법 및 장치 KR100792320B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US23145200P 2000-09-08 2000-09-08
US60/231,452 2000-09-08
PCT/US2001/041962 WO2002021268A2 (en) 2000-09-08 2001-08-30 Method and apparatus for using an assist processor to prefetch instructions for a primary processor

Publications (2)

Publication Number Publication Date
KR20030034172A KR20030034172A (ko) 2003-05-01
KR100792320B1 true KR100792320B1 (ko) 2008-01-07

Family

ID=22869286

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020037003363A KR100792320B1 (ko) 2000-09-08 2001-08-30 주프로세서용 명령의 프리페치에 보조프로세서를 이용하는방법 및 장치

Country Status (9)

Country Link
US (1) US6681318B2 (ko)
EP (1) EP1316015B1 (ko)
JP (1) JP4808910B2 (ko)
KR (1) KR100792320B1 (ko)
CN (1) CN1207659C (ko)
AT (1) ATE493704T1 (ko)
AU (1) AU2001287222A1 (ko)
DE (1) DE60143757D1 (ko)
WO (1) WO2002021268A2 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1387259B1 (en) * 2002-07-31 2017-09-20 Texas Instruments Incorporated Inter-processor control
US7155575B2 (en) * 2002-12-18 2006-12-26 Intel Corporation Adaptive prefetch for irregular access patterns
US20040186960A1 (en) * 2003-03-20 2004-09-23 Sun Microsystems, Inc. Computer processor data prefetch unit
CN1327353C (zh) * 2003-04-21 2007-07-18 智慧第一公司 可选择性撤回预取的微处理器装置
JP2006268487A (ja) * 2005-03-24 2006-10-05 Nec Corp エミュレーション装置及びエミュレーション方法、並びに、エミュレーションプログラム
US7472256B1 (en) 2005-04-12 2008-12-30 Sun Microsystems, Inc. Software value prediction using pendency records of predicted prefetch values
US8019947B2 (en) * 2005-10-19 2011-09-13 Intel Corporation Technique for thread communication and synchronization
KR101360221B1 (ko) * 2007-09-13 2014-02-10 삼성전자주식회사 인스트럭션 캐시 관리 방법 및 그 방법을 이용하는프로세서
FR2928753B1 (fr) * 2008-03-14 2012-09-21 Pierre Fiorini Architecture de traitement informatique accelere.
CA2672337C (en) 2009-07-15 2017-01-03 Ibm Canada Limited - Ibm Canada Limitee Compiler instrumentation infrastructure to facilitate multiple pass and multiple purpose dynamic analysis
US8418156B2 (en) * 2009-12-16 2013-04-09 Intel Corporation Two-stage commit (TSC) region for dynamic binary optimization in X86
EP2517100B1 (en) * 2009-12-25 2018-09-26 Shanghai Xinhao Micro-Electronics Co. Ltd. High-performance cache system and method
CN102117198B (zh) 2009-12-31 2015-07-15 上海芯豪微电子有限公司 一种分支处理方法
JP5541491B2 (ja) * 2010-01-07 2014-07-09 日本電気株式会社 マルチプロセッサ、これを用いたコンピュータシステム、およびマルチプロセッサの処理方法
GB2513043B (en) 2013-01-15 2015-09-30 Imagination Tech Ltd Improved control of pre-fetch traffic
US10896130B2 (en) * 2016-10-19 2021-01-19 International Business Machines Corporation Response times in asynchronous I/O-based software using thread pairing and co-execution
US11755333B2 (en) 2021-09-23 2023-09-12 Apple Inc. Coprocessor prefetcher

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR900010552A (ko) * 1988-12-27 1990-07-07 야마모또 다꾸마 명령을 페치(fetch)하기 위한 제어 시스템
US5961631A (en) * 1997-07-16 1999-10-05 Arm Limited Data processing apparatus and method for pre-fetching an instruction in to an instruction cache
WO2000038050A1 (en) 1998-12-21 2000-06-29 Intel Corporation Instruction decomposition to branch and sequential sections
KR20020097160A (ko) * 2000-01-14 2002-12-31 썬 마이크로시스템즈, 인코포레이티드 주프로세서용 데이터값의 사전인출을 위해 보조프로세서를이용하는 방법 및 장치
KR20040079097A (ko) * 2003-03-06 2004-09-14 한국과학기술원 보조프로세서를 이용한 멀티미디어 처리를 위한 가속장치

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4991080A (en) 1986-03-13 1991-02-05 International Business Machines Corporation Pipeline processing apparatus for executing instructions in three streams, including branch stream pre-execution processor for pre-executing conditional branch instructions
US5392391A (en) 1991-10-18 1995-02-21 Lsi Logic Corporation High performance graphics applications controller
GB9426155D0 (en) 1994-12-23 1995-02-22 Univ Manchester Dual processor decoupling
US5787285A (en) 1995-08-15 1998-07-28 International Business Machines Corporation Apparatus and method for optimizing applications for multiple operational environments or modes

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR900010552A (ko) * 1988-12-27 1990-07-07 야마모또 다꾸마 명령을 페치(fetch)하기 위한 제어 시스템
US5961631A (en) * 1997-07-16 1999-10-05 Arm Limited Data processing apparatus and method for pre-fetching an instruction in to an instruction cache
WO2000038050A1 (en) 1998-12-21 2000-06-29 Intel Corporation Instruction decomposition to branch and sequential sections
KR20020097160A (ko) * 2000-01-14 2002-12-31 썬 마이크로시스템즈, 인코포레이티드 주프로세서용 데이터값의 사전인출을 위해 보조프로세서를이용하는 방법 및 장치
KR20040079097A (ko) * 2003-03-06 2004-09-14 한국과학기술원 보조프로세서를 이용한 멀티미디어 처리를 위한 가속장치

Also Published As

Publication number Publication date
EP1316015A2 (en) 2003-06-04
WO2002021268A2 (en) 2002-03-14
US6681318B2 (en) 2004-01-20
WO2002021268A3 (en) 2002-06-06
CN1466716A (zh) 2004-01-07
AU2001287222A1 (en) 2002-03-22
DE60143757D1 (de) 2011-02-10
US20020095563A1 (en) 2002-07-18
JP4808910B2 (ja) 2011-11-02
CN1207659C (zh) 2005-06-22
EP1316015B1 (en) 2010-12-29
ATE493704T1 (de) 2011-01-15
KR20030034172A (ko) 2003-05-01
JP2004517383A (ja) 2004-06-10

Similar Documents

Publication Publication Date Title
KR100792320B1 (ko) 주프로세서용 명령의 프리페치에 보조프로세서를 이용하는방법 및 장치
KR100800941B1 (ko) 주프로세서용 데이터값의 사전인출을 위해 보조프로세서를이용하는 방법 및 장치
US5960198A (en) Software profiler with runtime control to enable and disable instrumented executable
US8037465B2 (en) Thread-data affinity optimization using compiler
US6353881B1 (en) Supporting space-time dimensional program execution by selectively versioning memory updates
KR100917491B1 (ko) 캐시 메모리 시스템
US20050071572A1 (en) Computer system, compiler apparatus, and operating system
JPS5939832B2 (ja) 情報処理システム
WO2001093028A2 (en) Marking memory elements based upon access information during speculative execution
US7480768B2 (en) Apparatus, systems and methods to reduce access to shared data storage
US8037466B2 (en) Method and apparatus for merging critical sections
CN114661442B (zh) 处理方法及装置、处理器、电子设备及存储介质
JP2006216040A (ja) ソフトウエアによる動的予測方法および装置
US6772321B2 (en) Method and apparatus for using an assist processor and value speculation to facilitate prefetching for a primary processor
US12079631B2 (en) Method and system for hardware-assisted pre-execution
JP2005332370A (ja) 制御装置
JP2002014868A (ja) メモリ参照動作検出機構を有するマイクロプロセッサおよびコンパイル方法
EP0890148A1 (en) Cache multi-block touch mechanism for object oriented computer system
US20050251795A1 (en) Method, system, and program for optimizing code
US6430682B1 (en) Reliable branch predictions for real-time applications
CN101243394B (zh) 利用辅助存储器来访问存储器的方法和系统
WO2002057909A2 (en) Value speculation on an assist processor to facilitate prefetching for a primary processor
Nicolau et al. ROPE: a statically scheduled supercomputer architecture
JPH10232775A (ja) プリフェッチ機構
JP3743155B2 (ja) パイプライン制御型計算機

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
G170 Re-publication after modification of scope of protection [patent]
FPAY Annual fee payment

Payment date: 20121130

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20131129

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20141201

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20151201

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20161129

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20181129

Year of fee payment: 12