KR100917491B1 - 캐시 메모리 시스템 - Google Patents

캐시 메모리 시스템 Download PDF

Info

Publication number
KR100917491B1
KR100917491B1 KR1020020009022A KR20020009022A KR100917491B1 KR 100917491 B1 KR100917491 B1 KR 100917491B1 KR 1020020009022 A KR1020020009022 A KR 1020020009022A KR 20020009022 A KR20020009022 A KR 20020009022A KR 100917491 B1 KR100917491 B1 KR 100917491B1
Authority
KR
South Korea
Prior art keywords
cache memory
cache
data
instruction
software
Prior art date
Application number
KR1020020009022A
Other languages
English (en)
Other versions
KR20020069125A (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 KR20020069125A publication Critical patent/KR20020069125A/ko
Application granted granted Critical
Publication of KR100917491B1 publication Critical patent/KR100917491B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions

Landscapes

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

Abstract

소용량이고 프로세서와 메인 메모리의 사이에 제공된 고속 액세스 캐시 메모리를 가진 캐시 메모리 시스템은, 사전에 프로그래밍된 소프트웨어에 따라 캐시 메모리에 데이터 전송을 제어하는 소프트웨어 제어를 실행하기 위한 소프트웨어 캐시 제어기와, 사전 결정된 하드웨어를 이용하여 캐시 메모리에 데이터 전송을 제어하기 위한 하드웨어 제어를 실행하는 하드웨어 캐시 제어기를 갖되, 상기 프로세서는 소프트웨어 캐시 제어기가 소프트웨어 제어를 실행하게 하지만, 소프트웨어 제어를 실행할 수 없을 때에는, 하드웨어 캐시 제어기가 하드웨어 제어를 실행하게 한다.

Description

캐시 메모리 시스템{CACHE MEMORY SYSTEM}
도 1은 본 발명의 일 실시예에 따른 캐시 메모리 시스템을 채용하는 멀티프로세서의 예를 나타내는 개략 블록도,
도 2는 도 1의 캐시 메모리 시스템의 개략 블록도,
도 3은 4-웨이 세트-어소시에이티브 방법(4-way set-associative method)이 채용된 경우의 태그 테이블에 따른 예를 나타내는 도면,
도 4는 소프트웨어 제어 시간 동안에 도 3의 태그 테이블에 따른 예를 나타내는 도면,
도 5는 도 4의 소프트웨어 제어로부터 하드웨어 제어로 변경되는 동안에 도 3의 태그 테이블에 따른 예를 나타내는 도면,
도 6은, 프리로드 실행 동안에, 도 2의 캐시 메모리 시스템의 부분 작동 예를 나타내는 블록도,
도 7은, 하드웨어 제어 시의 캐시 미스 상태에 있어서, 도 2의 캐시 메모리 시스템의 부분 작동 예를 나타내는 블록도,
도 8은, 하드웨어 제어 동안의 캐시 히트 상태에 있어서, 도 2의 캐시 메모리 시스템의 부분 작동 예를 나타내는 블록도,
도 9는, 포스트스토어 작동 시에, 도 2의 캐시 메모리 시스템의 부분 작동 예를 나타내는 블록도,
도 10은 어셈블러 코드와 DTC 코드가 컴파일러에 의해 생성되는 과정을 나타내는 블록도,
도 11은 컴파일러에 의해 생성된 지시 프리로드(instruction PreLoad)의 레이아웃 알고리즘을 나타내는 흐름도,
도 12는 컴파일러에 의해 생성된 지시 포스트스토어(instruction PostStore)의 레이아웃 알고리즘을 나타내는 흐름도,
도 13은 컴파일러에 의해 생성된 DTC 지시 코드의 예를 나타내는 도면,
도 14는 종래 캐시 메모리 시스템의 구성예를 나타내는 개략 블록도.
도면의 주요 부분에 대한 부호의 설명
1 : 캐시 메모리 유닛 3 : 데이터 통신 버스
5 : 판독 버퍼 6 : 캐시 메모리
7 : 태그 메모리 8 : DTC(Data Transfer Controller)
9 : 하드웨어 캐시 제어기
본 발명은 일반적으로 고속 액세스가 가능한 소용량 캐시 메모리 시스템에 관한 것으로, 특히 복수의 프로세서가 비동기적으로 작동하는 멀티프로세서에 사용하기 위한 캐시 메모리 시스템을 프로세서와 메인 메모리 사이에 제공하는 것이다.
도 14는 종래 캐시 메모리 시스템(100)의 구성예를 모식적으로 나타내는 도면이다. 도 14에서, 캐시 메모리 시스템(100)은 캐시 메모리 유닛(102)을 포함하고, 그것을 통해 프로세서(101)가 메인 메모리(103)에 접속된다. 캐시 메모리 유닛(102)은 차례로 태그 메모리(105), 캐시 메모리(106) 및 캐시 컨트롤러(107)로 구성되어 있고, 상기 캐시 컨트롤러(107)는 태그 메모리(105)에 저장된 태그의 대응 테이블을 참조하여 캐시 메모리(106)로의 데이터 전송을 제어한다.
한편, 캐시 메모리 시스템(100)에 있어서, 액세스 타임은 데이터가 저장되어 있는지 여부에 따라 변한다. 즉, 캐시 메모리(106)에서의 히트이다. 그러므로, 캐시 히트율을 높이기 위해, 캐시 메모리(106)에서 예비로 마련하는 데이터용 프리페치 메커니즘이 캐시 컨트롤러(107)에 제공될 수도 있다. 캐시 메모리 시스템(100)에 있어서, 캐시 메모리(106)에 액세스해야 할 데이터가 있을 경우, 데이터는 캐시 메모리(106)로부터 프로세서(101)로 제공된다. 반면에, 캐시 메모리(106)에 액세스해야 할 데이터가 없을 경우, 데이터는 메인 메모리(103)로부터 프로세서(101)로 제공된다.
그러나, 종래 캐시 메모리 시스템(100)의 상술한 구성에 있어서, 프리페치 메커니즘이 스태틱 스케줄링 기술에 이용되어도, 100%의 캐시 히트율을 달성하는 것은 불가능하다. 그러므로, 멀티프로세서에 있어서, 도 14의 종래 캐시 메모리 시스템(100)을 이용하여 멀티프로세서의 다중 프로세서의 비동기 작동을 실행하는 것이 어렵다.
본 발명의 필수적인 목적은 상술한 종래 기술의 문제점을 해결하는 것으로, 데이터 전송을 담당하는 프로세서와 소프트웨어에 의해 제어되는 동작 모드를 포함할 뿐만 아니라, 컴파일러에서 캐시 메모리의 라인 정보를 담당하는 메커니즘을 제공하여, 다중 프로세서가 캐시 미스를 발생시키지 않고 비동기적으로 작동할 수 있는 캐시 메모리 시스템을 제공하는 것이다.
본 발명의 상기 목적을 달성하기 위해, 고속 액세스를 할 수 있고 프로세서와 메인 메모리 사이에 제공되는 소용량 캐시 메모리를 가진 캐시 메모리 시스템은, 본 발명에 따라, 사전에 프로그래밍된 소프트웨어대로 캐시 메모리로의 데이터 전송을 제어하는 소프트웨어 제어를 실행하는 소프트웨어 캐시 제어기를 포함한다. 캐시 메모리 시스템은 사전 결정된 하드웨어를 이용하는 캐시 메모리로의 데이터 전송을 제어하는 하드웨어 제어를 수행하는 하드웨어 캐시 제어기를 더 포함한다. 프로세서는 소프트웨어 캐시 제어기가 소프트웨어 제어를 수행하도록 하지만, 그 소프트웨어 제어를 수행할 수 없게 되었을 때에는, 하드웨어 캐시 제어기가 하드웨어 제어를 수행하도록 한다.
더욱 상세하게, 소프트웨어 제어 시간 동안 캐시 미스가 발생했을 경우, 프로세서는 하드웨어 캐시 제어기가 하드웨어 제어를 하도록 한다.
그 동안에, 소프트웨어 캐시 제어기는 컴파일러의 정적 예상(static prediction)에 의해 생성된 코드대로 캐시 메모리에 소망의 데이터를 저장한다.
더욱 상세하게, 메인 메모리의 소망 데이터를 판독하기 위한 데이터 판독 지시를 실행하기 전에, 소프트웨어 캐시 제어기는 데이터 판독 지시에 의해 지정된 메인 메모리의 어드레스에서 데이터를 판독하여 그 데이터를 캐시 메모리에 저장한다.
또한, 프로세서가 그 데이터 판독 지시를 수행함과 동시에, 소프트웨어 캐시 제어기는 데이터 판독 지시에 의해 지정된 메인 메모리의 어드레스에서의 데이터를 캐시 메모리로부터 프로세서로 전송한다.
한편, 메인 메모리에 있어서 데이터를 기록하는 데이터 기록 지시를 실행하기 전에, 소프트웨어 캐시 제어기는 캐시 메모리의 어드레스를 지정하여, 프로세서로부터 데이터를 저장하는데 이용한다.
또한, 프로세서가 데이터 기록 지시를 실행할 때, 캐시 메모리의 지정된 어드레스에 기록된 프로세서로부터의 데이터는 데이터 기록 지시에 의해 지정된 메인 메모리의 어드레스에 소프트웨어 캐시 제어기를 이용하여 기록된다.
그 동안에, 하드웨어 캐시 제어기는 복수 웨이(way)의 세트-어소시에이티브 방법(set-associative method)을 이용함으로써 캐시 메모리의 라인 제어를 수행하고, 소프트웨어 캐시 제어기는 복수 웨이에 있어서 적어도 한 웨이를 위한 풀 어소시에이티브 방법(fully associative method)을 이용함으로써 캐시 메모리의 라인 제어를 수행한다.
더욱 상세하게, 그 동안에, 소프트웨어 캐시 제어기는 캐시 메모리로 데이터 전송을 제어하는 전송 제어 프로세서로 형성된다.
본 발명의 상기 및 그 밖의 목적, 특징, 국면 및 이익 등은 첨부 도면을 참조로 하여 설명하는 이하의 상세한 실시예로부터 더욱 명백해질 것이다.
이후, 본 발명의 일 실시예에 대하여 도면을 참조하면서 설명한다.
도 1은 본 발명의 실시예에 따른 캐시 메모리 시스템(1)을 채용한 멀티프로세서의 예를 개략적으로 나타낸다. 도 1에서, 멀티프로세서는 복수의 프로세서 CPU1~CPUn(n=1보다 큰 정수), 캐시 메모리 시스템(1), 메인 메모리로써 동작하는 집중식 공유 메모리(centralized shared memory) CSM, 데이터 통신 버스(3)를 포함한다. 캐시 메모리 시스템(1)은 프로세서 CPU1~CPUn에 각각 대응하는 복수의 캐시 메모리 유닛 CM1~CMn을 포함한다. 캐시 메모리 유닛 CM1~CMn은, 각각, 프로세서 CPU1~CPUn에 접속된다. 또한, 데이터 통신 버스(3)를 거쳐, 캐시 메모리 유닛 CM1~CMn은 서로 접속될 뿐만 아니라, 집중식 공유 메모리 CSM에 접속된다.
멀티프로세서의 상술한 구성에서, 각각의 프로세서 CPU1~CPUn의 레지스터간 통신을 수립하기 위한 프로세서간 통신 시스템(interprocessor communication system)은 프로세서 CPU1~CPUn간 통신을 형성하기 위해 채용한다. 프로세서간 통신 시스템을 조정하는데 통신 데이터의 량이 너무 많이 소요될 경우에, 복수의 통신용 로컬 메모리는, 각각, 집중식 공유 메모리 CSM와 캐시 메모리 유닛 CM1~CMn 사이에 제공될 수도 있다. 이 경우에, 각 프로세서 CPU1~CPUn는 어드레스를 지정함으로써 로컬 메모리나 집중식 공유 메모리 CSM에 액세스할 수 있다.
도 2는 도 1의 캐시 메모리 시스템(1)을 개략적으로 나타낸다. 도 2에서, 프로세서 CPU1~CPUn 중 임의의 하나, 즉, 프로세서 CPUi(i=1~n)는 일례로써 설명된다. 도 2에서, 캐시 메모리 시스템(1)은 프로세서 CPUi, 캐시 메모리 유닛 CMi, 집중식 공유 메모리 CSM로 구성된다.
캐시 메모리 유닛 CMi은 판독 버퍼(5), 태그 메모리(7), 소프트웨어 제어 동안에 캐시 메모리(6)로 데이터 전송을 제어하는 데이터 전송 제어기(DTC : Data Transfer Controller)(8) 및 하드웨어 제어 동안에 캐시 메모리(6)로 데이터 전송을 제어하는 하드웨어 캐시 제어기(9)로 구성된다. DTC(8)는 소프트웨어 캐시 제어기로서 작동하고, 소프트웨어 제어 시에 프로세서 CPUi로부터 입력된 어드레스 데이터를 체킹하는 어드레스 체크 메커니즘을 포함한다. DTC(8)는 캐시 메모리(6)로의 데이터 전송을 제어하는 프로세서에 의해 형성된다.
집중식 공유 메모리 CSM의 각 어드레스는 태그(tag)와 키(key)로 구분된다. 태그 메모리(7)는 태그와 키의 대응 테이블을 저장하고, 이는 집중식 공유 메모리 CSM의 특정 어드레스에 캐시 메모리(6) 데이터의 위치가 저장되는 것을 가리킨다. 태그 메모리(7)에 저장된 대응 테이블의 데이터 제어는 소프트웨어 제어 시의 DTC(8)와 하드웨어 제어 시의 하드웨어 캐시 제어기(9)에 의해 수행된다. 그러므로, 태그 메모리(7)의 대응 테이블에서 태그를 체킹함으로써, DTC(8)와 하드웨어 캐시 제어기(9)는 캐시 메모리(6) 내에 프로세서 CPUi로부터 요청된 집중식 공유 메모리 CSM의 어드레스의 데이터가 존재하는지 여부를 판정할 수 있다.
캐시 메모리(6) 내에 프로세서 CPUi로부터 요청된 집중식 공유 메모리 CSM의 어드레스의 데이터가 존재할 경우, 하드웨어 캐시 제어기(9)가 캐시 메모리(6) 내에 어드레스를 지명함으로써, 캐시 메모리(6)로부터 프로세서 CPUi로 그 데이터를 판독하도록, 캐시 메모리(6)의 어드레스 데이터가 저장된 태그로부터 판정할 수 있다. 한편, 캐시 메모리(6) 내에 프로세서 CPUi로부터 요청된 집중식 공유 메모리 CSM의 어드레스의 데이터가 존재하지 않을 경우, 하드웨어 캐시 제어기(9)는 집중식 공유 메모리 CSM로부터 캐시 메모리(6)로 데이터를 판독한다. 이 때, 하드웨어 캐시 제어기(9)는 집중식 공유 메모리 CSM으로부터 판독된 캐시 메모리(6)의 어드레스 데이터가 어디에 저장되어야 할지 결정하고, 캐시 메모리(6) 내에 결정된 어드레스를 지명함으로써, 캐시 메모리(6)의 지명된 어드레스에 데이터를 저장한다.
"소프트웨어 제어"라는 용어는 비동기적인 작동이 사전 결정된 간격 내에 100%의 캐시 히트율을 유지함으로써 멀티프로세서로서 기능하도록, 데이터가 컴파일러의 정적 예상에 의해 생성된 코드에 대응하여 캐시 메모리(6)에 마련되는 동작 모드를 나타낸다. 한편, "하드웨어 제어"는 종래의 제어이므로, "하드웨어 제어"라는 용어는 요구가 프로세서 CPUi에서 나올 때까지, 캐시 메모리(6) 내에서의 맵핑, 캐시 메모리(6) 내의 캐시 히트의 확인, 캐시 메모리(6)로부터의 데이터 출력 및 집중식 공유 메모리 CSM로부터 캐시 메모리(6)로의 데이터 전송은 실행되지 않는다.
한편, 하드웨어 제어에서, 캐시 메모리(6)의 위치에 특정 데이터가 저장되고, 데이터가 캐시 메모리(6)로부터 제거되는 것과 같은 동작은 하드웨어에 의해 전체적으로 제어되지만, 앞으로의 행동들은 제어될 수 없다. 그러므로, 레이아웃은 과거의 액세스 패턴을 이용하는 임의 법칙에 근거하여 결정된다. 예컨대, 저장 위치는 4-웨이 세트-어소시에이티브 방법과 같은 방법에 의해 결정되고, 데이터 출력은 FIFO(First In First Out)와 LRU(Least Recently Used)와 같이 하드웨어에 의해 구체화된 방법에 의해 제어된다.
도 3은 4-웨이 세트-어소시에이티브 방법을 채용함으로써 태그 메모리(7)에 저장된 태그의 대응 테이블의 예를 나타낸다. 도 3의 태그는 태그 0~7의 8종류를 포함한다. 도 3에서, 여덟 개의 단자(multiple)와 제 1 내지 제 4 웨이에서 {(8개의 단자)+1}의 단자를 가진 키는, 각각, 태그 0과 태그 1에 배치된다. 그러므로, 0에서 7의 정수를 나타내는 "n"을 가정하면, 각각의 웨이에서 {(여덟 개의 단자)+n}을 가진 키는 태그 n에 배치된다. 그러므로, 각각의 웨이에서의 키는 임의 규칙에 근거하여 태그에 위치한다. 하드웨어 제어 시에, 하드웨어 캐시 제어기(9)는 4-웨이 세트-어소시에이티브 방법을 채용함으로써, 캐시 메모리(6)의 라인 제어를 실행한다.
반면에, DTC(8)는 컴파일러에 의해 사전에 생성된 지시 코드에 따라 프로세서 CPUi와 캐시 메모리(6) 및 캐시 메모리(6)와 집중식 공유 메모리 CSM 사이에서의 데이터 전송을 제어하는 프로세서이다. 소망 데이터는 DTC(8)의 분석 데이터와 컴파일러의 분석 데이터를 결합함으로써 사전에 캐시 메모리(6)에 마련되므로, 100%의 캐시 히트율을 얻을 수 있다. 또한, 소프트웨어 제어 시에, DTC(8)는 적어도 하나의 웨이의 풀 어소시에이티브 방법과 나머지 웨이의 세트-어소시에이티브 방법을 채용함으로써, 캐시 메모리(6)의 라인 제어를 실행한다.
도 4는 소프트웨어 제어 시에 있어서의 도 3의 태그에 대한 대응 테이블의 일례를 나타낸다. 도 4에서, 풀 어소시에이티브 방법은 예로써 4웨이에서의 제 4 웨이에만 채용된다. 그러므로, 도 4에서, 캐시 메모리(6)의 라인 제어는 동일한 방법으로 제 1 내지 제 3 웨이의 세트-어소시에이티브 방법을 채용하고, 제 4 웨이용으로만 풀 어소시에이티브 방법을 채용함으로써 수행된다.
세트-어소시에이티브 방법에서, 레이아웃은 상술한 임의 방법에 근거하여 결정된다. 한편, 풀 어소시에이티브 방법에서, 캐시 메모리(6)의 미사용 어드레스는 임의로 배치될 수 있다. 그러므로, 세트-어소시에이티브 방법의 영역에서 데이터 충돌이 발생하고, 충돌로 데이터가 제거되지 않아, 새로운 데이터를 판독할 수 없을 경우에도, DTC(8)는 캐시 이용 효율을 높이기 위해 풀 어소시에이티브 방법의 영역에서의 미사용 영역으로 새로운 데이터를 판독할 수 있다.
소프트웨어 제어로부터 하드웨어 제어로의 전환이 이루어졌을 때, 세트-어소시에이티브 방법의 규칙에 근거하지 않은 태그의 키는 하드웨어 캐시 제어기(9)에 의해 풀 어소시에이티브 방법의 영역에서, 도 5에 나타내는 바와 같이, 태그의 대응 테이블이 업데이트되도록 삭제된다.
다음에, 컴파일러에 의해 생산되어, DTC(8)에 공급된 지시에 대하여 설명한다. 이들 DTC(8)용 지시는 DTC(8)가 캐시 메모리(6)와 프로세서 CPUi간의 조정 시에 생성되는 지시 LAC와 지시 SAC, 및 DTC(8)가 캐시 메모리(6)와 집중식 공유 메모리 CSM간의 조정 시에 생성되는 지시 PL(PreLoad)와 지시 PS(PostStore)를 포함 한다. 지시 LAC는 캐시 메모리(6)의 특정 부분에서 프로세서 CPUi가 데이터를 판독하도록 하는 지시이며, 지시 SAC는 캐시 메모리(6)의 특정 부분에서 프로세서 CPUi가 데이터를 기록하도록 하는 지시이다. 또한, 지시 PL은 집중식 공유 메모리 CSM로부터 캐시 메모리(6)의 특정 부분으로 데이터가 판독될 수 있도록 하는 지시이며, 지시 PS는 데이터가 캐시 메모리(6)의 특정 부분에서 집중식 공유 메모리 CSM에 기록될 수 있도록 하는 지시이다.
소프트웨어 제어는 컴파일러에 의해 데이터 액세스의 정적 분석을 완벽하게 행할 수 있는 부분에서 실행되므로, 제어는 정적 분석을 이용하여 컴파일링하는 동안에 캐시 메모리(6)까지 확장될 수 있고, 또한 프리로드 등도 실행될 수 있다. 그러므로, 컴파일러가 캐시 메모리(6)를 제어하는 경우에, 캐시 메모리(6)에서의 어드레스 맵은 자연히 컴파일러에서 제어된다. 따라서, 어드레스 맵은 실제 동작 시에 하드웨어에 존재하지 않는다. 그러므로, 프로세서 CPUi가 로드 지시에 의해 집중식 공유 메모리 CSM의 어드레스를 나타낼지라도, 집중식 공유 메모리 CSM의 어드레스에서 캐시 메모리(6) 데이터의 위치가 저장되었는지 여부는 명확하지 않다. 이러한 문제를 해결하기 위해, 로드 지시와 저장 지시는 캐시 메모리(6)의 어드레스를 나타내는 지시 LAC와 지시 SAC를 이용함으로써, 소프트웨어 제어에서 실행된다.
DTC(8)에 의해 실행된 지시의 포맷은 "LAC cache-addr", "SAC cache-addr", "PL cache-addr mem-addr" 및 "PS cache-addr mem-addr"이다. 또한, 캐시 메모리(6)의 어드레스는 "cache-addr" 포맷으로 표시되고, 집중식 공유 메모리 CSM 의 어드레스는 "mem-addr" 포맷으로 표시된다. 지시 "LAC cache-addr"은 "cache-addr" 포맷으로 표시된 캐시 메모리(6)의 어드레스에서 데이터가 임시로 판독 버퍼(5)에 저장되도록 되어, 로드 지시를 이슈화하는 것으로부터 프로세서 CPUi로 1클럭에 출력되도록 하는 지시이다. 지시 "LAC cache-addr"는 "cache-addr" 포맷으로 표시된 캐시 메모리(6)의 어드레스에서 데이터를 판독하는 로드 지시가 프로세서 CPUi에 이슈화되기 1클럭 전에 DTC(8)에 이슈화된다.
지시 "SAC cache-addr"는 프로세서 CPUi로부터의 데이터가 "cache-addr" 포맷으로 표시된 캐시 메모리(6)의 어드레스에 저장되는 지시이다. 지시 "SAC cache-addr"는 "cache-addr" 포맷으로 표시된 캐시 메모리(6)의 어드레스에서 데이터를 기록하는 저장 지시의 1클럭 전에 DTC(8)에 이슈화된다.
지시 "PL cache-addr mem-addr"는 "mem-addr" 포맷으로 표시된 집중식 공유 메모리 CSM의 어드레스에서 데이터가 판독되어, "cache-addr" 포맷으로 표시된 캐시 메모리(6)의 어드레스에 기록되는 지시이다. 지시 "PL cache-addr mem-addr"는 "cache-addr" 포맷으로 표시된 캐시 메모리(6)의 어드레스에서 데이터를 판독하는 로드 지시가 프로세서 CPUi에 이슈화되기 적어도 수 클럭 전에 DTC(8)에 이슈화되고, 여기서 수 클럭은 집중식 공유 메모리 CSM로부터 데이터를 판독하여 캐시 메모리(6)에 기록하는데 필요하다.
지시 "PS cache-addr mem-addr"는 "cache-addr" 포맷으로 표시된 캐시 메모리(6)의 어드레스에서 데이터가 판독되어, "mem-addr" 포맷으로 표시된 집중식 공유 메모리 CSM의 어드레스에 기록되는 지시이다. 지시 "PS cache-addr mem-addr" 는 "cache-addr" 포맷으로 표시된 캐시 메모리(6)의 어드레스에서 데이터를 집중식 공유 메모리 CSM에 기록하는 저장 지시가 프로세서 CPUi에 이슈화된 후, 예컨대, 저장 지시가 집중식 공유 메모리 CSM에 이슈화된 후, 그 즉시, DTC(8)에 이슈화된다.
상술한 바와 같이, 소프트웨어 제어 시에, DTC(8)는 컴파일러에 의해 스케줄링하게 하는 지시에 대응하여 작동하고, 캐시 메모리(6)에서의 특정 어드레스에서 데이터를 저장할 만큼의 제어를 실행한다. 결과적으로, 캐시 메모리(6)의 데이터를 실수로 제거하는 것이 방지되고, 불필요한 데이터를 제거할 수 있는 등, 100%의 캐시 히트율을 얻을 수 있다. 또한, 프로세서 CPUi에 의해 집중식 공유 메모리 CSM의 액세스가 고속으로 실행될 뿐만 아니라, 안정적으로 실행되므로, 클럭 레벨에서 프로세서 CPUi의 작동을 예상할 수 있다. 결과적으로, 멀티프로세서에서, 각각의 프로세서의 비동기 작동을 수행할 수 있다.
다음에, 소프트웨어 제어 시에, 프로세서 CPUi와 DTC(8)의 동작에 대하여 설명한다. 도 6은, 프리로드의 실행 시에, 캐시 메모리 시스템(1)의 일부분의 작동 예를 나타낸다. 프리로드의 실행 시에, 캐시 메모리 시스템(1)의 일부분의 작동에 대하여 도 6을 참조하여 설명한다. 도 6에서, 참조 부호 1, 2 및 3은 캐시 메모리 시스템(1)의 일부분의 작동 순서를 나타내고, 점선 화살표는 제어의 흐름을 나타내고, 직선 화살표는 데이터의 흐름을 나타낸다. 도 6에서, 캐시 메모리 시스템(1)에서 소프트웨어 제어용 작동에 관련이 없는 부분은 생략한다.
도 6에서, 프리로드가 실행되는 경우에, 지시 PL은 유효 데이터가 지시 PL로 지명된 캐시 메모리(6)의 어드레스에 저장되지 않은 것을 DTC(8)로 체크하도록, 최초로 DTC(8)에 이슈화된다. 유효 데이터가 지시 PL로 지명된 캐시 메모리(6)의 어드레스에 저장된 경우에, DTC(8)는 캐시 미스 상태를 나타내는 사전 결정된 미스 신호(predetermined miss signal)를 프로세서 CPUi로 출력한다. 프로세서 CPUi에 그 미스 신호를 입력하면, 프로세서 CPUi는 소프트웨어 제어가 하드웨어 캐시 제어기(9)를 이용하는 하드웨어 제어로 전환된다. 한편, 유효 데이터가 지시 PL로 지명된 캐시 메모리(6)의 어드레스에 저장되지 않은 경우에, DTC(8)는 지시 PL로 지명된 집중식 공유 메모리 CSM의 어드레스에서 데이터를 판독하여 지시 PL로 지명된 캐시 메모리(6)의 어드레스에 데이터를 저장한다.
다음에, 지시 LAC는 DTC(8)가 지시 LAC로 지명된 캐시 메모리(6)의 어드레스에서 데이터를 판독하여, 판독 버퍼(5)에서 데이터를 저장하게 하도록 DTC(8)를 이슈화한다. 그 다음에, 로드 지시는 프로세서 CPUi가 로드 지시로 지명된 집중식 공유 메모리 CSM의 어드레스를 DTC(8)에서 출력하게 하는 프로세서 CPUi를 이슈화한다. DTC(8)는 입력된 어드레스가 지시 PL로 지명된 집중식 공유 메모리 CSM의 어드레스에 일치하는지 여부를 체크한다. 입력된 어드레스가 지시 PL로 지명된 집중식 공유 메모리 CSM의 어드레스에 일치하면, DTC(8)는 캐시 히트 상태를 나타내는 히트 신호를 각각의 프로세서 CPUi와 판독 버퍼(5)로 출력한다. 판독 버퍼(5)에 히트 신호를 입력하면, 그 판독 버퍼(5)는 판독 버퍼(5)에 저장된 데이터를 프로세서 CPUi로 출력한다. 따라서, 프리로드는 DTC(8)에 의해 실행된다.
한편, 입력된 어드레스가 지시 PL로 지명된 집중식 공유 메모리 CSM의 어드 레스와 일치하지 않으면, DTC(8)는 프로세서 CPUi에 미스 신호(miss signal)를 출력한다. 프로세서 CPUi에 미스 신호를 출력하면, 프로세서 CPUi는 소프트웨어 제어에서 하드웨어 캐시 제어기(9)를 이용하는 하드웨어 제어로 전환된다.
도 7은, 소프트웨어 제어 시에, 로드 지시의 실행 중의 캐시 미스 상태에서 캐시 메모리 시스템(1)의 일부분의 작동 예를 나타낸다. 도 7에서, 로드 지시는 프로세서 CPUi가 로드 지시로 지명된 집중식 공유 메모리 CSM의 어드레스를 하드웨어 캐시 제어기(9)로 출력하게 하는 프로세서 CPUi를 이슈화한다. 이 때, 태그 메모리(7)는 집중식 공유 메모리 CSM의 특정 어드레스에 데이터가 저장되는 캐시 메모리(6)의 위치를 가리키는 태그 대응 테이블을 저장한다. 하드웨어 캐시 제어기(9)는 하드웨어 제어 시에 태그 메모리(7)에 저장된 태그의 내용을 관리한다.
하드웨어 캐시 제어기(9)는, 프로세서 CPUi로부터 하드웨어 캐시 제어기(9)에 입력될 어드레스에 따라, 집중식 공유 메모리 CSM의 어드레스에서의 데이터가 캐시 메모리(6)에 존재하는지 여부를 판정하도록 태그를 체크한다. 프로세서 CPUi로부터 지명된 집중식 공유 메모리 CSM의 어드레스에서 데이터가 캐시 메모리(6) 내에 존재하지 않으면, 하드웨어 캐시 제어기(9)는 프로세서 CPUi에 미스 신호를 출력한다. 그 다음에, 하드웨어 캐시 제어기(9)는 캐시 메모리(6) 내에 데이터를 저장하고, 태그 메모리(7)에서 태그 대응 테이블을 업데이트하도록 프로세서 CPUi로부터 지명된 집중식 공유 메모리 CSM의 어드레스에서의 데이터를 집중식 공유 메모리 CSM로부터 판독한다. 또한, 업데이트된 태그 대응 테이블에 근거하여, 하드 웨어 캐시 제어기(9)는 프로세서 CPUi에 의해 지명된 어드레스에서 데이터를 캐시 메모리(6)로부터 판독하여, 프로세서 CPUi로 데이터를 출력한다.
한편, 도 8은, 하드웨어 제어 시에, 로드 지시의 실행 중의 캐시 히트 상태에 있어서 캐시 메모리 시스템(1)의 일부분의 작동 예를 나타낸다. 도 8에서, 로드 지시는 프로세서 CPUi가 로드 지시에 의해 지명된 집중식 공유 메모리 CSM의 어드레스를 하드웨어 캐시 제어기(9)로 출력하게 하도록 프로세서 CPUi를 이슈화한다. 하드웨어 캐시 제어기(9)는 프로세서 CPUi로부터 하드웨어 캐시 제어기(9)에 입력된 어드레스에 따라, 집중식 공유 메모리 CSM의 어드레스에서의 데이터가 캐시 메모리(6) 내에 존재하는지 여부를 판정하도록 태그를 체크한다. 프로세서 CPUi로부터 지명된 집중식 공유 메모리 CSM에서의 데이터가 캐시 메모리(6) 내에 존재하면, 하드웨어 캐시 제어기(9)는 프로세서 CPUi에 히트 신호(hit signal)를 출력한다. 그 다음에, 태그 대응 테이블에 근거하여, 하드웨어 캐시 제어기(9)는 프로세서 CPUi로부터 지명된 어드레스에서의 데이터를 캐시 메모리(6)로부터 판독하여, 프로세서 CPUi로 그 데이터를 출력한다. 그러므로, 하드웨어 제어는 수행된다.
그 외에, 도 9는, 포스트스토어의 실행 시에, 캐시 메모리 시스템(1)의 일부분의 작동 예를 나타낸다. 포스트스토어의 실행 시에, 캐시 메모리 시스템(1)의 일부분의 작동은 도 9를 참조하여 설명한다. 또한, 도 9에서, 참조 부호 "1", "2" 및 "3"은 캐시 메모리 시스템(1)의 일부분의 작동 순서를 나타내고, 점선 화살표는 제어의 흐름을 나타내며, 직선 화살표는 데이터의 흐름을 나타낸다. 도 9에서, 캐시 메모리 시스템(1) 내의 소프트웨어 제어의 작동과 관계없는 부분은 생략한다. 포스트스토어가 도 9에서 실행될 경우에, 지시 SAC는 데이터가 지시 SAC로 지명된 캐시 메모리(6)의 어드레스에서 기록되도록 캐시 메모리(6)의 동작을 DTC(8)가 제어하게 하기 위해 최초로 DTC(8)를 이슈화한다.
다음에 저장 지시는 프로세서 CPUi가 저장 지시에 의해 지명된 집중식 공유 메모리 CSM의 어드레스를 DTC(8)로 출력하게 하기 위해 프로세서 CPUi를 이슈화한다. 또한, 프로세서 CPUi는 지시 SAC에 의해 지명된 캐시 메모리(6)의 어드레스에 데이터를 저장하도록 캐시 메모리(6)로 데이터를 출력한다. DTC(8)는 캐시 메모리(6) 내에 저장된 데이터 내의 집중식 공유 메모리 CSM의 어드레스를 태그로부터 얻고, 캐시 메모리(6) 내에 저장된 데이터 내의 집중식 공유 메모리 CSM의 어드레스가 저장 지시에 의해 지명된 집중식 공유 메모리 CSM의 어드레스와 일치하는지 여부를 체크한다. 캐시 메모리(6) 내에 저장된 데이터 내의 집중식 공유 메모리 CSM의 어드레스가 저장 지시에 의해 지명된 집중식 공유 메모리 CSM의 어드레스와 일치하지 않으면, DTC(8)는 프로세서 CPUi에 미스 신호를 출력한다. 반면에, 캐시 메모리(6) 내에 저장된 데이터 내의 집중식 공유 메모리 CSM의 어드레스가 저장 지시에 의해 지명된 집중식 공유 메모리 CSM의 어드레스와 일치하면, DTC(8)는 프로세서 CPUi에 히트 신호를 출력한다. 프로세서 CPUi에 히트 신호를 입력하면, 프로세서 CPUi는 소프트웨어 제어를 계속한다. 한편, 프로세서 CPUi에 미스 신호를 입력하면, 프로세서 CPUi는 소프트웨어 제어에서 하드웨어 캐시 제어기(9)를 이용하는 하드웨어 제어로 전환된다.
그 다음에, 지시 PS는 지시 PS에 의해 지명된 캐시 메모리(6)의 어드레스에 저장된 데이터가 유효한지 여부를 DTC(8)로 체크하도록 DTC(8)를 이슈화한다. 지시 PS에 의해 지명된 캐시 메모리(6)의 어드레스에 저장된 데이터가 유효하면, DTC(8)는 집중식 공유 메모리 CSM로 데이터를 전송하여 그 데이터를 무효로 한다. 한편, 그 데이터가 무효하면, DTC(8)는 프로세서 CPUi에 미스 신호를 이슈화하여, 소프트웨어 제어에서 하드웨어 캐시 제어기(9)를 이용하는 하드웨어 제어로 전환한다.
따라서, 포스트스토어는 DTC(8)에 의해 실행된다. 한편 상술한 프리로드나 포스트스토어에 있어서, 예컨대, 집중식 공유 메모리 CSM을 액세스할 필요가 없을 경우, 데이터는 프로세서 CPUi에 의해 계속 이용되어, DTC(8)용 프로그램 코드가 지시 PL이나 지시 PS가 이슈화되지 않도록 생성된다.
프로세서 CPUi와 DTC(8)에 지시들을 이슈화하는 타이밍은 컴파일러에 의해 사전에 스케줄링되어 있다. 이후, 이 스케줄링 방법에 대하여 설명한다. 도 10은 프로세서 CPUi용 어셈블러 코드와 DTC(8)용 DTC 코드가 컴파일러에 의해 생성되는 과정을 나타낸다. 한편, 도 10의 블록 내에 기술하는 과정들은 워크스테이션과 같은 컴퓨터로, 통상 구체화되는 컴파일러에 의해 수행된다. 도 10에서, C 언어나 포트란 언어에 의해 프로그래밍된 순차 프로그램의 자동 병렬 프로세싱(automatic parallel processing)이 처음에 실행된다. 프로그램은 코어스-그레인(coarse-grain), 미디엄-그레인(medium-grain) 및 파인-그레인(fine-grain)을 포함하는 세 가지 그레인으로 병렬성에 따라 분할된다. 자동 병렬 프로세싱을 여기에 간단히 설명한다. 자동 병렬 프로세싱에서, 전체로서 프로그램은 브랜치에서 "코어스-그 레인 태스크"이나 "태스크"이라고 언급되는 일련의 브랜치-프리 프로그램으로 분리된다.
코어스-그레인 병렬 작동에서, 태스크가 서로 종속 관계에 있는지 여부를 최초로 알 수 있다. 태스크가 서로 종속 관계에 있지 않으면, 태스크는 병렬 프로세싱을 하게 된다. 다음에, 미디엄-그레인 병렬 작동에서, 태스크의 조사는 태스크가 더욱 간단하게 병렬 작동을 할 수 있는 루프, 즉, 각 반복에 의해 계산된 데이터에 종속되지 않는 루프를 형성하는지 여부를 찾을 수 있게 한다. 태스크가 병렬 작동할 수 있는 루프를 형성하는 것을 찾으면, 병렬 작동은 실행된다. 이와 같은 미디엄-그레인 병렬 작동은 또한 "루프-레벨-병렬 작동"이라고 언급된다. 그 다음에, 근접 파인-그레인 병렬 작동(near fine-grain parallel operation)은 태스크가 루프를 형성하지 않거나 병렬 작동을 실행할 수 없는 루프를 형성할 경우에 적용되는 병렬 기술이다. 근접 파인-그레인 병렬 작동에서, "a=b+c"와 같은 프로그램 문장간의 병렬성(parallelism)이 추출된다.
그 다음에, 상술한 근접 파인-그레인 병렬 처리되는 코드일 뿐만 아니라, 일련의 프로세서 CPUi용 비분기 지시 코드인 근접 파인-그레인 코드를 이용함으로써, 어셈블러 CPU 코드는 생성되고, DTC 코드는 그 생성된 CPU 코드에 근거하여 생성된다. 한편, 클럭 레벨에서 정확하게 DTC(8)를 작동시키기 위해, 데이터 로드, 데이터 저장 등에 기인하여 생기는 네트워크 버킷의 충돌조차도 예상해야 한다. 그러므로, 예상(prediction)은 클럭 레벨에서 작동을 완전하게 보증하는 DTC 코드가 생성되도록 네트워크 레벨에서 스케줄링을 수행함으로써 만들어진다.
다음에, 컴파일러의 정적 예상에 근거하여 소프트웨어 제어 시에 DTC(8)용 지시의 레이아웃 알고리즘을 설명하고, 이 레이아웃 알고리즘은 상술한 파인-그레인 코드로부터 생성된 CPU 코드에 근거하여 DTC 코드가 생성될 때, 정확히 실행된다.
처음에, 컴파일러는 통상 컴파일러 기술에 의한 어셈블러 CPU 코드를 생성하고, 지시 LAC, 지시 SAC, 지시 PL 및 지시 PS와 같은 대응하는 DTC 지시를 생성하도록 데이터 로딩을 위한 로드 지시와 데이터 기록을 위한 저장 지시용으로 생성된 CPU 코드를 검색한다.
그 다음에, 로딩되거나 저장될 데이터의 캐시 히트가 오류 없이 일어나기 위한 전제 조건으로서, 컴파일러는 생성된 CPU 코드를 시뮬레이팅하여 각각의 지시의 정확한 클럭을 계산한다. 또한, 컴파일러는 지시 LAC, 지시 SAC, 지시 PL 및 지시 PS와 같은 DTC 지시를 이슈화하는 타이밍을 조정하여, 데이터가 프로세서 CPUi에 의해 로딩되거나 저장되었을 때, 그 데이터가 캐시 메모리(6) 내에 존재한다는 것을 확실하게 한다.
컴파일러에 의해 실행되는, DTC 지시를 이슈화하는 시간을 결정하는 방법은 이하에 기술한다. 프로세서 CPUi의 실행 지시에서, 실행 클럭은 "0"부터 실행 차수를 증가시킴으로써 결정된다. DTC 지시 코드의 실행 클럭은 프로세서 CPUi의 지시 코드의 실행 클럭에 근거한다. 그러므로, 최초 지시 전에 실행되는 DTC 지시는 음(minus)의 실행 클럭을 갖는 프로세서 CPUi에 의해 실행된다. 한편, 각각의 프로세서 CPUi와 DTC(8)의 각 클럭용으로 실행될 수 있는 지시의 수는 오직 하나이 다.
컴파일러는 지시 LAC가 프로세서 CPUi의 로드 지시 전에 1클럭이 실행될 뿐만 아니라, 지시 SAC가 프로세서 CPUi의 저장 지시 후에 1클럭이 실행되도록 DTC 내에 지시 LAC와 지시 SAC를 배치하여, 배치된 지시 LAC와 지시 SAC의 시프트를 방지한다. 그런 후에, 컴파일러는 사전 결정된 알고리즘에 대응하여 DTC 지시 코드 내에 지시 PL을 배치한 후, 사전 결정된 알고리즘에 대응하여 DTC 지시 코드 내에 지시 PS를 배치한다.
이 때 DTC(8)가 지시 PL과 지시 PS를 실행할 경우, 수십 클럭이 집중식 공유 메모리 CSM를 액세스하는데 필요하게 된다. 그러므로, 이 기간 동안, 컴파일러는 집중식 공유 메모리 CSM를 액세스하기 위한 지시를 DTC 지시 코드 내에 배치할 수 없게 된다. 반면, 이후, 지시 PL의 실행 시에 집중식 공유 메모리 CSM를 액세스하는데 필요한 클럭 영역은 "로드 영역"으로서 언급되고, 지시 PS의 실행 시에 집중식 공유 메모리 CSM를 액세스하는데 필요한 클럭 영역은 "저장 영역"으로서 언급된다.
한편, 지시 PL과 지시 PS를 프로세서 CPUi 내의 모든 로드 지시와 저장 지시에 배치하지 않고, 컴파일러는 데이터의 유효 기간을 계산하여, 지시 PL을 프로세서 CPUi에 의해 최초로 로딩하는 동안에 로드 지시에 배치하고, 지시 PL을 프로세서 CPUi에 의해 마지막으로 저장하는 동안에 저장 지시에 배치한다. 또한, 이 경우와 다른 경우에, 데이터는 캐시 메모리(6)에 저장되고, 그러므로, 컴파일러는 DTC(8)가 지시 LAC와 지시 SAC에 근거한 프로세싱을 수행하게 한다.
도 11은 컴파일러에 의해 생성된 지시 PL의 레이아웃 알고리즘을 나타내는 흐름도이다. 도 11의 단계 S1에서, 집중식 공유 메모리 CSM를 액세스하기 위해 필요한 클럭 수로부터 프로세서 CPUi의 로드 지시 실행 클럭을 감산함으로써 얻어진 클럭은 처음에 각 지시 PL의 임시 실행 클럭에서 설정된다. 그 후, 단계 S2에서, 가장 큰 실행 클럭, 즉, 마지막으로 실행되는 지시 PL을 가진 지시 PL은 타깃 지시 PL로써 결정된다.
다음에, 단계 S3에서, 그 타깃 지시 PL이 DTC 지시 코드 내에 이미 배치된 지시 LAC나 지시 SAC를 오버래핑하고 있는지 여부가 판정된다. 단계 S3에서 "예"일 경우에, 타깃 지시 PL의 실행 클럭은, 단계 S4에서, 타깃 지시 PL이 지시 LAC와 지시 SAC를 오버래핑하지 않는 값으로 감소된다. 그 다음에, 단계 S5에서 현재 DTC 지시 코드 내에 배치된 지시 PL이 배치될 타깃 지시 PL의 로드 영역을 오버래핑하고 있는지 여부가 판정된다. 단계 S5에서 "예"일 경우, 타깃 지시 PL의 실행 클럭은, 단계 S6에서, 현재 DTC 지시 코드 내에 배치된 지시 PL이 타깃 지시 PL의 로드 영역을 오버래핑하지 않는 값으로 감소된다. 그 다음에, 프로그램은 단계 S3으로 되돌아간다. 반면, 단계 S3에서 "아니오"일 경우에, 프로그램은 단계 S5로 진행한다.
그 다음에, 단계 S5에서 "아니오"일 경우에, 단계 S7에서, 타깃 지시 PL은 현재 실행 클럭에서 DTC 지시 코드 내에 배치된다. 그 후, 단계 S8에서 DTC 지시 코드 내에 설정되지 않은 지시 PL인지 여부가 판정된다. 단계 S8에서 "예"일 경우에, DTC 지시 코드 내에 설정되지 않은 지시 PL 내에 가장 큰 실행 클럭을 가진 지 시 PL은 단계 S9에서 타깃 지시 PL로써 결정되고, 프로그램은 단계 S3으로 복귀한다. 한편, 단계 S8에서 "아니오"일 경우에, 프로그램 흐름은 종료된다.
도 12는 컴파일러에 의해 생성된 지시 PS의 레이아웃 알고리즘을 나타내는 흐름도이다. 지시 PS의 레이아웃 방법은, 다른 방법으로 특정되지 않으면, 프로그램 흐름의 과정이 컴파일러에 의해 수행되는 도 12를 참조하여 설명된다. 도 12의 단계 S11에서, 1클럭에 프로세서 CPUi의 저장 지시 실행 클럭을 가산함으로써 얻어진 클럭은, 처음에, 각 지시 PS의 임시 실행 클럭으로 설정된다. 그 후, 단계 S12에서, 가장 작은 실행 클럭을 가진 지시 PS, 즉, 최초로 실행된 지시 PS는 타깃 지시 PS로써 결정된다.
다음에, 단계 S13에서, 타깃 지시 PS는 DTC 지시 코드 내에 이미 배치된 지시 LAC나 지시 SAC를 오버래핑하는지 여부가 판정된다. 단계 S13에서 "예"일 경우에, 타깃 지시 PS의 실행 클럭은, 단계 S14에서, 타깃 지시 PS가 지시 LAC와 지시 SAC를 오버래핑하지 않는 값으로 증가된다. 그 다음에, 단계 S15에서, 타깃 지시 PS는 DTC 지시 코드 내에 현재 배치된 지시 PL의 로드 영역이나 DTC 지시 코드 내에 현재 배치된 지시 PS의 저장 영역을 오버래핑하고 있는지 여부가 판정된다. 단계 S15에서 "예"일 경우에, 타깃 지시 PS의 실행 클럭은, 단계 S16에서, 타깃 지시 PS가 지시 PL의 로드 영역이나 지시 PS의 저장 영역을 오버래핑하지 않는 값으로 증가된다. 그 후, 프로그램 흐름은 단계 S13으로 복귀한다. 반면에, 단계 S13에서 "아니오"일 경우에, 프로그램 흐름은 단계 S15로 진행한다.
다음에, 단계 S15에서 "아니오"일 경우에, 단계 S17에서, DTC 지시 코드 내 에 현재 배치된 지시 PL이나 지시 PS가 타깃 지시 PS의 저장 영역을 오버래핑하고 있는지 여부를 판정한다. 단계 S17에서 "예"일 경우에, 타깃 지시 PS의 실행 클럭은, 단계 S18에서, DTC 지시 코드 내에 이미 배치된 지시 PL이나 지시 PS가 타깃 지시 PS의 저장 영역을 오버래핑하지 않는 값으로 증가된다. 다음에, 프로그램 흐름은 단계 S13으로 복귀한다.
한편, 단계 S17에서 "아니오"일 경우, 타깃 지시 PS는, 단계 S19에서, 현재 실행 클럭에서 DTC 지시 코드 내에 배치된다. 그러면, 단계 S20에서, DTC 지시 코드 내에 설정되지 않은 지시 PS인지 여부가 판정된다. 단계 S20에서 "예"일 경우에, DTC 지시 코드 내에 설정되지 않은 지시 PS 내에 가장 작은 실행 클럭을 가진 지시 PS는, 단계 S21에서, 타깃 지시 PS로써 결정되고, 프로그램 흐름은 단계 S13으로 복귀한다. 반면, 단계 S20에서 "아니오"일 경우에, 프로그램 흐름은 종료한다.
상술한 바와 같이, 지시 PL과 지시 PS는 컴파일러에 의해 DTC 지시 코드 내에 배치된다.
도 13은 상술한 알고리즘을 이용하여 컴파일러에 의해 생성된 DTC 지시 코드의 일례를 나타낸다. 도 13에서, "CPU 지시 코드" 열의 문자 "LW"와 "SW"는 각각, 로드 지시와 저장 지시를 나타낸다. 도 13에서, 집중식 공유 메모리 CSM을 액세스하기 위한 "메모리 액세스" 열 내의 "Mem 32-35로부터 Cache 0-3으로의 PreLoad"라는 어구는 집중식 공유 메모리 CSM의 어드레스 32-35에서의 데이터가 캐시 메모리(6)의 어드레스 0-3에 프리로드(preload)되는 것을 의미한다. 또한, 집중식 공유 메모리 CSM을 액세스하기 위한 "메모리 액세스" 열 내에서, "Cache 0-3으로부터 Mem 16-19로의 포스트스토어"는 캐시 메모리의 어드레스 0-3에서의 데이터가 집중식 공유 메모리 CSM의 어드레스 16-19에 포스트스토어되는 것을 의미한다.
본 발명의 실시예에 따른 캐시 메모리 시스템(1)에 있어서, 상술한 바와 같이, 소프트웨어에 의해 제어된 소프트웨어 제어 모드와 소프트웨어 제어 모드 내에 데이터 전송을 제어하기 위한 DTC(8)는 하드웨어 제어 중에 작동하는 종래 캐시 메모리 시스템에 부가되고, DTC(8)용 프로그램이 생성될 때, 캐시 메모리(6)의 라인 정보를 제어하기 위한 알고리즘이 컴파일러에 부가된다.
그러므로, 컴파일러의 정적 예상이 소프트웨어 제어 모드에 가능할 때, DTC(8)는, 컴파일러에 의해 생성된 코드에 따라, 프로세서 CPUi에 필요한 데이터를 캐시 메모리(6) 내에 사전에 마련한다. 한편, 컴파일러의 정적 예상이 소프트웨어 제어 모드에서 불가능할 때, DTC(8)는 프로세서 CPUi로부터 수신하는 정보 상의 어드레스를 연산함으로써 캐시 메모리(6) 내에 데이터를 사전에 마련한다. 결과적으로, 프로세서는 비동기적으로 캐시 미스를 초래하지 않고 작동할 수 있다.
또한, 상술한 실시예에서, 캐시 메모리 시스템은 복수의 프로세서가 비동기적으로 작동하는 멀티프로세서에 이용된다. 그러나, 본 발명의 캐시 메모리 시스템은 본 실시예에만 제한되는 것이 아니라, 캐시 히트율을 향상시키고, 프로세싱 타임을 짧게 하는 단일 프로세서에 적용할 수도 있다.

상술한 설명으로부터 명백하듯이, 본 발명의 캐시 메모리 시스템은 소프트웨어 제어를 실행하기 위한 소프트웨어 캐시 제어기와 하드웨어 제어를 실행하기 위한 하드웨어 캐시 제어기를 포함한다. 프로세서는 소프트웨어 캐시 제어기로 소프트웨어 제어를 실행하게 한다. 예컨대, 캐시 미스에 기인한 소프트웨어 제어를 수행할 수 없는 경우에, 프로세서는 하드웨어 캐시 제어기가 하드웨어 제어를 수행하도록 한다. 그러므로, 간격에서 100%의 히트율을 얻을 수 있고, 복수의 프로세서가 비동기적으로 작동하는 멀티프로세서를 실현할 수 있다.
또한, 소프트웨어 캐시 제어기는 컴파일러의 정적 예상에 의해 생성된 코드에 따라 캐시 메모리 내에 소망 데이터를 저장하도록 배치된다. 그러므로, 간격 내에서 100%의 캐시 히트율을 얻을 수 있다.
보다 명확하게, 프로세서가 메인 메모리의 소망 데이터를 판독하기 위한 데이터 판독 지시를 실행하기 전에, 소프트웨어 캐시 제어기는 데이터 판독 지시에 의해 지명된 메인 메모리의 어드레스에서 데이터를 판독하여 캐시 메모리 내에 그 데이터를 저장하도록 배치된다. 그러므로, 프로세서에 의해 로드 지시와 같은 데이터 판독 지시의 실행 시에, 100%의 캐시 히트율을 얻을 수 있다.
또한, 프로세서가 데이터 판독 지시를 실행할 때와 동시에, 소프트웨어 캐시 제어기는 데이터 판독 지시에 의해 지명된 메인 메모리의 어드레스에서 데이터를 캐시 메모리로부터 프로세서로 전송하도록 배치된다. 그러므로, 프로세서에 의해 로드 지시와 같은 데이터 판독 지시의 실행 시에 처리 시간을 짧게 할 수 있다.
한편, 더욱 상세하게, 메인 메모리 내에 데이터를 기록하기 위한 데이터 기록 지시를 프로세서가 실행하기 전에, 소프트웨어 캐시 제어기는 캐시 메모리의 어드레스를 지명해서 배치하여, 프로세서로부터 데이터를 저장하는데 이용한다. 그러므로, 프로세서에 의해 저장 지시와 같은 데이터 기록 지시의 실행 시에, 캐시 메모리 내로의 데이터 기록 실패를 제거할 수 있다.
또한, 프로세서가 데이터 기록 지시를 실행할 때에, 캐시 메모리의 지명된 어드레스에 기록된 프로세서로부터의 데이터는 데이터 기록 지시에 의해 지명된 메인 메모리의 어드레스에서 소프트웨어 캐시 제어기에 의해 기록됨으로써 채용된다. 그러므로, 프로세서에 의해 저장 지시와 같은 데이터 기록 지시의 실행 시에 처리 시간을 단축할 수 있다.
반면에, 하드웨어 캐시 제어기는 복수 웨이의 세트-어소시에이티브 방법을 이용함으로써, 하드웨어 제어 시에, 캐시 메모리의 라인 제어를 실행하도록 배치된다. 소프트웨어 캐시 제어기는 복수의 웨이 중 적어도 1웨이의 풀 어소시에이티브 방법을 이용함으로써, 소프트웨어 제어 시에, 캐시 메모리의 라인 제어를 실행하도록 배치된다. 그러므로, 캐시 메모리의 이용 효율은 액세스 속도의 저하를 초래하지 않아 증대된다.
또한, 더욱 상세하게, 소프트웨어 캐시 제어기는 캐시 메모리에 데이터 전송을 제어하기 위한 전송 제어 프로세서로 형성된다. 그러므로, 캐시 메모리로의 데이터 전송은 사전에 프로그래밍된 소프트웨어에 따라 제어될 수 있다.
이상 본 발명자에 의해서 이루어진 발명을 상기 실시예에 따라 구체적으로 설명하였지만, 본 발명은 상기 실시예에 한정되는 것이 아니고, 그 요지를 이탈하지 않는 범위에서 여러 가지로 변경 가능한 것은 물론이다.

Claims (24)

  1. 고속 액세스를 할 수 있고 프로세서와 메인 메모리 사이에 제공되는 소용량 캐시 메모리를 포함하는 캐시 메모리 시스템에 있어서,
    사전에 프로그래밍된 소프트웨어에 따라 캐시 메모리에 데이터 전송을 제어하는 소프트웨어 제어를 실행하는 소프트웨어 캐시 제어기와,
    사전 결정된 하드웨어를 이용함으로써 캐시 메모리에 데이터 전송을 제어하는 하드웨어 제어를 실행하는 하드웨어 캐시 제어기를 구비하되,
    상기 프로세서는 상기 소프트웨어 캐시 제어기가 소프트웨어 제어를 행하게 하지만, 상기 소프트웨어 제어시에 캐시 미스가 발생하여 소프트웨어 제어의 실행을 할 수 없을 때, 상기 하드웨어 캐시 제어기가 하드웨어 제어를 행하게 하고,
    상기 하드웨어 캐시 제어기는 복수 웨이(way)의 세트-어소시에이티브 방법(set-associative method)을 이용하여 캐시 메모리의 라인 제어를 실행하고,
    상기 소프트웨어 캐시 제어기는 복수 웨이 중 적어도 하나의 웨이의 풀 어소시에이티브 방법(fully associative method)을 이용하여 캐시 메모리의 라인 제어를 실행하는
    캐시 메모리 시스템.
  2. 삭제
  3. 제 1 항에 있어서,
    소프트웨어 캐시 제어기는 컴파일러의 정적 예상(static prediction)에 의해 생성된 코드에 따라 캐시 메모리 내에 소망 데이터를 저장하는
    캐시 메모리 시스템.
  4. 삭제
  5. 제 3 항에 있어서,
    프로세서가 메인 메모리의 소망 데이터를 판독하는 데이터 판독 지시를 실행하기 전에, 소프트웨어 캐시 제어기는 데이터 판독 지시에 의해 지명된 메인 메모리의 어드레스에서 데이터를 판독하여, 캐시 메모리 내에 데이터를 저장하는
    캐시 메모리 시스템.
  6. 삭제
  7. 제 5 항에 있어서,
    프로세서가 데이터 판독 지시를 실행할 때와 동시에, 소프트웨어 캐시 제어기는, 데이터 판독 지시에 의해 지명된 메인 메모리의 어드레스에서, 데이터를 캐시 메모리로부터 프로세서로 전송하는
    캐시 메모리 시스템.
  8. 삭제
  9. 제 3 항에 있어서,
    프로세서가 메인 메모리 내에 데이터를 기록하기 위한 데이터 기록 지시를 실행하기 전에, 소프트웨어 캐시 제어기는 캐시 메모리의 어드레스를 지명하여 프로세서로부터 데이터를 저장하는데 이용하는
    캐시 메모리 시스템.
  10. 삭제
  11. 제 9 항에 있어서,
    프로세서가 데이터 기록 지시를 실행할 때에, 캐시 메모리의 지명된 어드레스에 기록된, 프로세서로부터의 데이터는 데이터 기록 지시에 의해 지명된 메인 메모리의 어드레스에 상기 소프트웨어 캐시 제어기에 의해 기록되는
    캐시 메모리 시스템.
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 제 1 항에 있어서,
    상기 소프트웨어 캐시 제어기는 상기 캐시 메모리에 데이터 전송을 제어하기 위한 전송 제어 프로세서로 형성되는
    캐시 메모리 시스템.
  18. 삭제
  19. 제 3 항에 있어서,
    상기 소프트웨어 캐시 제어기는 상기 캐시 메모리에 데이터 전송을 제어하기 위한 전송 제어 프로세서로 형성되는
    캐시 메모리 시스템.
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
KR1020020009022A 2001-02-21 2002-02-20 캐시 메모리 시스템 KR100917491B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2001045072A JP3681647B2 (ja) 2001-02-21 2001-02-21 キャッシュメモリシステム装置
JPJP-P-2001-00045072 2001-02-21

Publications (2)

Publication Number Publication Date
KR20020069125A KR20020069125A (ko) 2002-08-29
KR100917491B1 true KR100917491B1 (ko) 2009-09-16

Family

ID=18906939

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020020009022A KR100917491B1 (ko) 2001-02-21 2002-02-20 캐시 메모리 시스템

Country Status (5)

Country Link
US (1) US6950902B2 (ko)
EP (1) EP1235154B1 (ko)
JP (1) JP3681647B2 (ko)
KR (1) KR100917491B1 (ko)
DE (1) DE60226366D1 (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7278136B2 (en) * 2002-07-09 2007-10-02 University Of Massachusetts Reducing processor energy consumption using compile-time information
US7493607B2 (en) * 2002-07-09 2009-02-17 Bluerisc Inc. Statically speculative compilation and execution
US20050114850A1 (en) 2003-10-29 2005-05-26 Saurabh Chheda Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control
US7996671B2 (en) 2003-11-17 2011-08-09 Bluerisc Inc. Security of program executables and microprocessors based on compiler-architecture interaction
US8607209B2 (en) 2004-02-04 2013-12-10 Bluerisc Inc. Energy-focused compiler-assisted branch prediction
US7657667B2 (en) * 2004-03-25 2010-02-02 International Business Machines Corporation Method to provide cache management commands for a DMA controller
US7941859B2 (en) * 2004-06-23 2011-05-10 International Business Machines Corporation Reducing access to sensitive information
US7809888B1 (en) * 2004-09-29 2010-10-05 Emc Corporation Content-aware caching techniques
US7886112B2 (en) * 2006-05-24 2011-02-08 Sony Computer Entertainment Inc. Methods and apparatus for providing simultaneous software/hardware cache fill
US7425810B2 (en) * 2006-06-30 2008-09-16 Lenovo (Singapore) Pte., Ltd. Disk drive management
US8453132B2 (en) * 2006-07-28 2013-05-28 Hewlett-Packard Development Company, L.P. System and method for recompiling code based on locality domain and thread affinity in NUMA computer systems
US20080126766A1 (en) 2006-11-03 2008-05-29 Saurabh Chheda Securing microprocessors against information leakage and physical tampering
US8527974B2 (en) * 2008-03-28 2013-09-03 International Business Machines Corporation Data transfer optimized software cache for regular memory references
US8561043B2 (en) * 2008-03-28 2013-10-15 International Business Machines Corporation Data transfer optimized software cache for irregular memory references
US8561044B2 (en) * 2008-10-07 2013-10-15 International Business Machines Corporation Optimized code generation targeting a high locality software cache
JP5347544B2 (ja) * 2009-02-09 2013-11-20 トヨタ自動車株式会社 半導体集積回路
JP5428476B2 (ja) * 2009-04-02 2014-02-26 富士通株式会社 プリフェッチ生成プログラムおよびコンパイラ装置
JP5541491B2 (ja) * 2010-01-07 2014-07-09 日本電気株式会社 マルチプロセッサ、これを用いたコンピュータシステム、およびマルチプロセッサの処理方法
US9645942B2 (en) * 2013-03-15 2017-05-09 Intel Corporation Method for pinning data in large cache in multi-level memory system
US11416431B2 (en) 2020-04-06 2022-08-16 Samsung Electronics Co., Ltd. System with cache-coherent memory and server-linking switch
US20210374056A1 (en) * 2020-05-28 2021-12-02 Samsung Electronics Co., Ltd. Systems and methods for scalable and coherent memory devices

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09128293A (ja) * 1995-10-27 1997-05-16 Hitachi Ltd 情報処理装置
KR19980032100A (ko) * 1996-10-18 1998-07-25 윤종용 캐쉬 슬라이스로서 리사이즈 및 재배치가능한 메모리 스크래치패드
JP2000207224A (ja) * 1999-01-14 2000-07-28 Hitachi Ltd ソフトウェアプリフェッチ方法
JP2000267931A (ja) * 1999-03-16 2000-09-29 Toshiba Corp ソフトウェア実行システム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03268041A (ja) * 1990-03-17 1991-11-28 Res Dev Corp Of Japan キャッシュ操作明示化コンピュータ
JPH04365133A (ja) * 1991-06-13 1992-12-17 Fujitsu Ltd プレロード命令実行装置及びプログラム修正装置
JP3506024B2 (ja) * 1998-12-10 2004-03-15 日本電気株式会社 情報処理装置
US6397296B1 (en) * 1999-02-19 2002-05-28 Hitachi Ltd. Two-level instruction cache for embedded processors

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09128293A (ja) * 1995-10-27 1997-05-16 Hitachi Ltd 情報処理装置
KR19980032100A (ko) * 1996-10-18 1998-07-25 윤종용 캐쉬 슬라이스로서 리사이즈 및 재배치가능한 메모리 스크래치패드
JP2000207224A (ja) * 1999-01-14 2000-07-28 Hitachi Ltd ソフトウェアプリフェッチ方法
JP2000267931A (ja) * 1999-03-16 2000-09-29 Toshiba Corp ソフトウェア実行システム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Software Controlled Cache for Multi-grain Parallel Processing",일본전자정보통신학회기술연구보고서 FTS, Technical report of IEICE. FTS, Vol.98, No. 27, pp.117-124 (1998.04.24) 1부. *
Software Controlled Cache for Multi-grain Parallel Processing",일본전자정보통신학회기술연구보고서 FTS, Technical report of IEICE. FTS, Vol.98, No. 27, pp.117-124 (1998.04.24) 1부.*

Also Published As

Publication number Publication date
JP2002251321A (ja) 2002-09-06
EP1235154A3 (en) 2003-03-05
EP1235154A2 (en) 2002-08-28
EP1235154B1 (en) 2008-05-07
US6950902B2 (en) 2005-09-27
US20020116578A1 (en) 2002-08-22
DE60226366D1 (de) 2008-06-19
KR20020069125A (ko) 2002-08-29
JP3681647B2 (ja) 2005-08-10

Similar Documents

Publication Publication Date Title
KR100917491B1 (ko) 캐시 메모리 시스템
US6128703A (en) Method and apparatus for memory prefetch operation of volatile non-coherent data
KR100277818B1 (ko) 컴퓨터 시스템의 데이터 처리 속도를 증가시키는 방법
US5553255A (en) Data processor with programmable levels of speculative instruction fetching and method of operation
US6578130B2 (en) Programmable data prefetch pacing
US20060026408A1 (en) Run-time updating of prediction hint instructions
US5928358A (en) Information processing apparatus which accurately predicts whether a branch is taken for a conditional branch instruction, using small-scale hardware
US5261067A (en) Method and apparatus for providing synchronized data cache operation for processors in a parallel processing system
EP0358863A2 (en) Load/store with write-intent for write-back caches
KR20180090284A (ko) 이벤트 기동된 프로그래머블 프리페처
JP2000339157A (ja) キャッシュメモリ制御装置および計算機システム
US7346741B1 (en) Memory latency of processors with configurable stride based pre-fetching technique
KR100792320B1 (ko) 주프로세서용 명령의 프리페치에 보조프로세서를 이용하는방법 및 장치
JP3812258B2 (ja) キャッシュ記憶装置
US20180203802A1 (en) Cache apparatus and a method of caching data
KR20060102565A (ko) 라이트 백 캐시 내에서 동시 발생하는 스누프 푸시 또는스누프 킬 연산중에 라이트 백 연산을 취소하는 시스템 및방법
US11899607B2 (en) Sending a request to agents coupled to an interconnect
EP0890148A1 (en) Cache multi-block touch mechanism for object oriented computer system
JPH0477344B2 (ko)
KR960015583B1 (ko) 다중프로세서의 캐시메모리 필터링장치
JP2721430B2 (ja) リクエスト競合生成方式
JPH10232775A (ja) プリフェッチ機構
KR100282225B1 (ko) 데이타 캐쉬 메모리의 제어장치
JP4788177B2 (ja) 情報処理装置、演算処理装置、メモリアクセス制御方法およびプログラム
JPH04340145A (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
LAPS Lapse due to unpaid annual fee