KR101402560B1 - 연산 처리 장치 - Google Patents

연산 처리 장치 Download PDF

Info

Publication number
KR101402560B1
KR101402560B1 KR1020127016301A KR20127016301A KR101402560B1 KR 101402560 B1 KR101402560 B1 KR 101402560B1 KR 1020127016301 A KR1020127016301 A KR 1020127016301A KR 20127016301 A KR20127016301 A KR 20127016301A KR 101402560 B1 KR101402560 B1 KR 101402560B1
Authority
KR
South Korea
Prior art keywords
instruction
pipeline
data
storage unit
command
Prior art date
Application number
KR1020127016301A
Other languages
English (en)
Other versions
KR20120086363A (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 KR20120086363A publication Critical patent/KR20120086363A/ko
Application granted granted Critical
Publication of KR101402560B1 publication Critical patent/KR101402560B1/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
    • 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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • 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)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

주기억 장치에 저장되는 데이터의 일부를 저장하는 제1 기억부와, 주기억 장치에 저장되는 데이터를 제1 기억부에 저장하는 명령을 출력하는 연산 처리부와, 명령을 수신하고, 제1 기억부가 주기억 장치로부터 명령의 대상 데이터를 수신할 때까지 명령을 저장하는 제2 기억부와, 연산 처리부로부터 명령을 수신하고, 명령의 대상 데이터가 제1 기억부에 저장되어 있는 경우, 대상 데이터를 제1 기억부로부터 판독하여 연산 처리부에 출력하는 한편, 명령의 대상 데이터가 제1 기억부에 저장되지 않고 명령의 대상 데이터와 동일한 데이터를 대상으로 하는 명령이 제2 기억부에 없는 경우, 명령을 주기억 장치에 출력하는 제1 제어부와, 연산 처리부로부터 명령을 수신하고, 명령의 대상 데이터와 동일한 데이터를 대상으로 하는 명령이 제2 기억부에 저장되어 있는 경우, 명령에 의한 주기억 장치로부터 대상 데이터를 판독하는 처리를 완료하는 제2 제어부를 갖는 연산 처리 장치가 제공된다.

Description

연산 처리 장치{COMPUTATIONAL PROCESSING DEVICE}
본 발명은 연산 처리 장치에 관한 것이다.
최근, 프로세서의 처리 속도의 고속화를 위해, 파이프라인 방식을 이용한 프로세서가 사용되고 있다. 프로세서로서는, 예컨대 CPU(Central Processing Unit), DSP(Digital Signal Processor), GPU(Graphics Processing Unit)가 있다. 파이프라인 방식에 있어서, 프로세서는 그 기능을 실현하는 복수의 파이프라인(명령 제어 파이프라인, 연산 파이프라인, 분기 제어 파이프라인 등)을 갖는다. 또한, 각 파이프라인은 각각 복수의 스테이지로 분할되어 있다. 각 스테이지는 정해진 공정을 실현하는 회로 유닛을 포함하고, 동작 주파수의 역수인 사이클 타임이라 불리는 기간 내에, 각 스테이지에 할당된 정해진 공정을 종료하도록 동작한다. 그리고, 앞 공정에 따른 스테이지의 출력 신호는, 예컨대 후속 공정에 따른 스테이지의 입력 신호로서 사용된다.
또한, 프로세서의 동작 주파수의 향상에 의해, 프로세서로부터 메모리에의 액세스 시간은 프로세서 내의 처리와 비교하여 상대적으로 길다. 그 때문에, 프로세서는 프로세서로부터 주기억 장치에의 액세스 시간을 단축하기 위해서, 캐시 메모리라는 소용량의 고속 메모리를 탑재하고 있다.
캐시 메모리는 주기억 장치의 상위 계층에 배치되고, 주기억 장치가 기억하는 데이터의 일부를 유지한다. 캐시 메모리는 프로세서에 내장되어 있는 등, 주기억 장치보다 프로세서에 가까운 위치에 있다. 그 때문에, 프로세서가, 캐시 메모리에 로드되어 있는 데이터에 액세스하는 경우(이하, 「캐시 히트」라고 함), 프로세서는 단시간에 대상 데이터에 액세스할 수 있다. 한편, 프로세서가, 캐시 메모리에 로드되어 있지 않은 데이터에 액세스하는 경우(이하, 「캐시 미스」라고 함), 캐시 메모리의 하위 계층에 있는 메모리로부터 데이터를 판독하기 때문에, 대상 데이터에의 액세스 시간은 길어진다. 그 때문에, 캐시 미스가 생기지 않도록, 캐시 메모리의 메모리 컨트롤러는 프로세서로부터의 액세스 빈도가 높은 데이터를 캐시 메모리에 유지하고, 액세스 빈도가 낮은 데이터를 캐시 메모리로부터 하위 계층의 메모리에 플러시(flush)하도록 동작한다.
또한, 프로세서는 연산 처리를 실행하는 연산부와, 연산부가 캐시 메모리로부터 수신하는 데이터를 유지하는 레지스터를 갖는다. 레지스터는, 예컨대 캐시 메모리의 상위 계층에 배치되고, 캐시 메모리보다 소량이고 고속인 기억 장치이다.
연산부는 캐시 메모리로부터 레지스터에 데이터를 로드하는 로드 명령을 발행하기 전에, 로드 명령에 기초하여 주기억 장치로부터 캐시 메모리에 데이터를 로드하는 프리페치 명령을 메모리 컨트롤러에 출력한다. 연산부가 로드 명령에 선행하여 프리페치 명령을 메모리 컨트롤러에 출력함으로써, 연산부가, 데이터를 캐시 메모리로부터 로드할 때 캐시 미스가 발생하지 않기 때문에, 데이터 액세스 시간이 단축된다.
일본 특허 출원 공개 제2006-40090호 공보 일본 특허 출원 공개 제2000-339157호 공보
연산부는 캐시 메모리로부터 레지스터로 일단 데이터를 판독하고 나서 각종의 처리를 실행한다. 레지스터에 유지되는 데이터 용량에 대하여, 캐시 메모리의 하나의 캐시 라인에 유지되는 데이터 용량은 크다. 예컨대, 하나의 캐시 라인에는, 어드레스로 특정되는 데이터가 복수 유지된다.
로드 명령은 캐시 메모리의 하나의 캐시 라인에 유지되는 모든 데이터를 레지스터에 로드하는 명령이 아니라, 어드레스 단위로 특정된 데이터를 캐시 라인으로부터 레지스터에 로드하는 명령이다. 연산부에 의해 레지스터에 발행되는 로드 명령은 1 어드레스 단위로 데이터를 레지스터에 로드하는 명령인 데 대하여, 프리페치 명령은 주기억 장치로부터 캐시 메모리로의 로드에 해당하기 때문에, 캐시 라인 단위로 데이터를 로드하는 명령이다. 그 때문에, 예컨대 2개의 로드 명령이, 하나의 캐시 라인에 유지되는 어드레스를 대상으로 하여 발행되는 경우, 2개의 로드 명령에 기초하여 생성되는 2개의 프리페치 명령은 동일한 캐시 라인에 유지되는 데이터를 주기억 장치로부터 2회 판독하려고 한다.
이 경우, 최초의 프리페치 명령에 의해 주기억 장치로부터 데이터는 로드되기 때문에, 다음 프리페치 명령은, 캐시 히트에 의해 주기억 장치로부터 데이터의 로드는 실행되지 않는다. 캐시 히트 판정은 캐시 컨트롤러(도 1에 도시한 메모리 컨트롤러와는 상이함. 도 1에 도시한 제1 파이프라인)에서의 파이프라인 처리에 의해 실행된다. 캐시 메모리에 주기억 장치로부터 데이터가 로드된 후에도, 프리페치 명령이 출력된 경우, 캐시 컨트롤러는 캐시 히트 판정을 한다. 캐시 메모리에 데이터가 저장되더라도, 저장 데이터에 대하여 복수의 프리페치 명령이 발행되면, 파이프라인 처리에 있어서 다른 스토어 명령이나, 로드 명령의 실행 대기가 생겨, 주기억 장치에의 액세스 시간이 연장된다.
개시하는 연산 처리 장치는 주기억 장치에의 액세스 시간을 단축하는 것을 목적으로 한다.
개시하는 연산 처리 장치는 주기억 장치에 접속되는 연산 처리 장치로서, 주기억 장치에 저장되는 데이터의 일부를 저장하는 제1 기억부와, 주기억 장치에 저장되는 데이터를 제1 기억부에 저장하는 명령을 출력하는 연산 처리부와, 명령을 수신하고, 제1 기억부가 주기억 장치로부터 명령의 대상 데이터를 수신할 때까지 명령을 저장하는 제2 기억부와, 연산 처리부로부터 명령을 수신하고, 명령의 대상 데이터가 제1 기억부에 저장되어 있는 경우, 대상 데이터를 제1 기억부로부터 판독하여 연산 처리부에 출력하는 한편, 명령의 대상 데이터가 제1 기억부에 저장되지 않고 명령의 대상 데이터와 동일한 데이터를 대상으로 하는 명령이 제2 기억부에 없는 경우, 명령을 주기억 장치에 출력하는 제1 제어부와, 연산 처리부로부터 명령을 수신하고, 명령의 대상 데이터와 동일한 데이터를 대상으로 하는 명령이 제2 기억부에 저장되어 있는 경우, 명령에 의한 주기억 장치로부터 대상 데이터를 판독하는 처리를 완료하는 제2 제어부를 갖는다.
개시하는 연산 처리 장치는 주기억 장치에의 액세스 시간을 단축시키는 효과를 나타낸다.
도 1은 연산 처리 장치의 하드웨어 구성의 일례를 도시한 도면이다.
도 2는 프로세서 코어의 하드웨어 구성의 일례를 도시한 도면이다.
도 3은 로드 명령 또는 프리페치 명령이 대상으로 하는 메모리 용량의 일례를 도시한 도면이다.
도 4는 뱅크 분할되지 않은 L2 캐시 RAM의 하드웨어 구성의 일례를 도시한 도면이다.
도 5는 뱅크 분할된 L2 캐시 RAM의 하드웨어 구성의 일례를 도시한 도면이다.
도 6은 프리페치 포트의 일례를 도시한 도면이다.
도 7은 파이프라인 선택부의 일례를 도시한 도면이다.
도 8은 파이프라인 선택부의 일례를 도시한 도면이다.
도 9a는 로드 버퍼의 일례를 도시한 도면이다.
도 9b는 로드 버퍼의 일례를 도시한 도면이다.
도 10a는 히트 버퍼의 일례를 도시한 도면이다.
도 10b는 히트 버퍼의 일례를 도시한 도면이다.
도 11은 제1 및 제2 파이프라인에 의한 파이프라인 제어의 일례를 도시하는 타임 차트이다.
도 12는 뱅크 분할된 L2 캐시 RAM에 대한 제1 및 제2 파이프라인에 의한 파이프라인 제어의 일례를 도시하는 타임 차트이다.
이하, 도면을 참조하여, 프로세서로서의 연산 처리 장치의 실시형태를 설명한다.
<연산 처리 장치의 하드웨어 구성>
도 1은 연산 처리 장치의 하드웨어 구성의 일례를 도시한 도면이다. 도 1에 도시하는 연산 처리 장치(100)는 연산 처리부로서의 프로세서 코어(Processor Core)(10), L2 캐시 컨트롤러(Level-2 Cache Controller)(90), L2 태그 RAM(Level-2 Tag Random Access Memory)(140), L2 데이터 RAM(Level-2 Data Random Access Memory)(120), 로드 버퍼(LB, Load Buffer)(160), 및 메모리 컨트롤러(MC, Memory Controller)(200)를 갖는다. 연산 처리 장치(100)는 도 1에 도시하는 바와 같이, 히트 버퍼(HB)(170)를 갖더라도 좋다. 프로세서 코어(10)는 MC(200)를 통해 주기억 장치(220)와 접속한다. 또한, L2 데이터 RAM(120) 및 L2 태그 RAM(140)은 본 명세서에서 총칭하여 「L2 캐시 RAM(110)」로 참조된다.
또한, 도 1의 연산 처리 장치(100)에는, 데이터 입력 버퍼(32)와 데이터 출력 버퍼(34)가 설치되어 있다. 데이터 입력 버퍼(32)는 주기억 장치(220) 혹은 L2 캐시 RAM(110)로부터 판독하여 프로세서 코어(10)에 입력하는 데이터를 버퍼링하기위해서 이용된다. 한편 데이터 출력 버퍼(34)는 프로세서 코어(10)로부터 출력된 데이터를 버퍼링하기 위해서 이용된다. 데이터 출력 버퍼(34)에 버퍼링된 데이터는 L2 캐시 RAM(110) 혹은 주기억 장치(220)에 전송된다.
또한, 도 1에 도시한 각부의 설명은 다른 도면을 이용한 각부의 상세 설명과 더불어 행한다.
[프로세서 코어]
도 2는 프로세서 코어의 구성의 일례를 도시한 도면이다. 프로세서 코어(10)는 명령부(IU: Instruction Unit)(12), 실행부(EU: Execution Unit)(14), L1 캐시 컨트롤러(18), L1 캐시 RAM(16)(Level-1 Cache Random Access Memory)를 갖는다.
L1 캐시 RAM(16)은 명령이나 데이터 등을 유지한다. L1 캐시 컨트롤러(18)는 L1 캐시 RAM(16)의 액세스를 제어한다. 또한, 도 1에 도시되는 프로세서 코어의 개수는 1개이지만, 프로세서 코어는 도 1에 도시되는 개수에 제한되는 일없이, 연산 처리 장치(100)는 복수개의 프로세서 코어를 가져도 좋다.
[프로세서 코어: 명령부]
명령부(12)는 명령 파이프라인(15)을 통해 L1 캐시 RAM(16)로부터 판독한 명령을 디코드하고, 디코드한 명령을, 명령 파이프라인(15)을 통해 실행부(14)에 출력한다. 예컨대, 명령부(12)는 명령 파이프라인(15)을 통해 「로드 명령」 또는 「스토어 명령」(도면에 나타내는 「로드 명령 등」)을 L1 캐시 컨트롤러(18)에 공급한다. 명령부(12)로부터 L1 캐시 컨트롤러(18)에 공급되는 명령이, 예컨대 「로드 명령」인 경우, L1 캐시 컨트롤러(18)는, 「로드 명령」에 의해 지정되는 명령을 L1 캐시 RAM(16)으로부터 판독한다. 「로드 명령」에 의해 L1 캐시 RAM(16)로부터 판독된 명령은 명령부(12)에 공급된다. L1 캐시 RAM(16)로부터 판독되는 명령은, 예컨대 데이터 전송 명령, 산술 연산 명령이다. 데이터 전송 명령은, 예컨대 L1 캐시 RAM(16)으로의 로드(LD) 명령, 스토어(ST) 명령, 프리페치(PF) 명령, 및 치환(MO) 명령을 포함하는 명령이다. 명령부(12)는 L1 캐시 RAM(16)로부터 판독한 명령을 디코드하고, 디코드한 명령(도 2에 나타내는 D 명령)과 함께, 명령의 실행에 사용되는 오퍼랜드를 저장하는 레지스터(13) 및 명령 실행의 결과를 저장하는 레지스터(13)를 특정하는 레지스터 어드레스를, 「데이터」로서 명령 파이프라인(15)을 통해 실행부(14)에 공급한다.
[프로세서 코어: 실행부]
실행부(14)는 레지스터 어드레스로 특정되는 레지스터(13)로부터 오퍼랜드를 출력하여, 명령부(12)가 디코드한 명령에 따라 오퍼랜드를 연산한다. 실행부(14)는 실행하는 명령이 데이터 전송 명령인 경우, 예컨대 오퍼랜드로서의 레지스터의 값으로부터 가상 어드레스를 생성한다. 실행부(14)는 실행하는 명령이 데이터 전송 명령인 경우, 예컨대 로드 명령, 스토어 명령 또는 PF 명령(도면에 나타내는 「로드 명령 등」)을, 대상이 되는 가상 어드레스와 함께 명령 파이프라인(15)을 통해 L1 캐시 컨트롤러(18)에 공급한다. 실행부(14)는 명령을 실행하면, 연산 결과를 명령 파이프라인(15)에 공급하고, 연산 결과는 명령 파이프라인(15)을 통해 L1 캐시 RAM(16)에 저장된다.
[프로세서 코어: L1 캐시 메모리]
L1 캐시 RAM(16)은 도시하지 않는 Translation Lookaside Buffer(TLB), L1 태그 RAM, 및 L1 데이터 RAM을 포함한다. L1 캐시 컨트롤러(18)는 실행부(14)로부터 공급되는 가상 어드레스로 L1 캐시 RAM(16)의 라인을 특정하고, TLB 및 L1 캐시 RAM(16)의 라인으로부터 각각 판독되는 물리 어드레스(PA: Physical Address)를 가상 어드레스와 비교함으로써, 캐시 미스 또는 캐시 히트를 판단한다.
[프로세서 코어: L1 캐시 컨트롤러]
L1 캐시 컨트롤러(18)는 L1 캐시 RAM(16)에서 캐시 미스가 생기면, LD 명령이나 PF 명령을, L2 캐시 컨트롤러(90)에 출력한다. 그리고, 프로세서 코어(10)는, 예컨대 LD 명령에 의한 데이터, 또는 PF 명령의 완료 통지를, L2 캐시 컨트롤러(90)로부터 수신한다.
[레지스터와 캐시 라인]
도 3은 LD 명령 또는 PF 명령이 대상으로 하는 레지스터와 L2 캐시 RAM의 구성의 일례를 도시한 도면이다.
도 3에 도시하는 레지스터(13a)는 도 2에 도시한 레지스터(13)의 기억 영역의 일례이다. 레지스터(13a)는, 예컨대 어드레스 R0∼R15로 특정되는 복수의 레지스터를 갖는다. 레지스터(13a)의 1어드레스에 대응하는 레지스터의 기억 용량은 도 3의 예에서는 8 바이트이다.
도 3에 도시되는 도면부호 16a는 L1 캐시 RAM(16)에 저장되는 정보의 구성을 도시하고 있다. 도 3에 도시하는 A0(i), A1(i), …는 L1 캐시 RAM의 어드레스를 도시한다. 정보(16a)의 1 단위는 도 3의 예에서는 8 바이트이다. 레지스터로의 로드 명령이 발행되면, 실행부(14)는 L1 캐시 RAM(16)에 저장되어 있는 정보(16a)를 8 바이트 단위로 레지스터(13a)에 로드한다.
도 3에 도시하는 캐시 라인(111a)은 도 1에 도시하는 L2 데이터 RAM(120)의 캐시 라인이다. L2 데이터 RAM(120)의 1 캐시 라인의 기억 용량은 도 3의 예에서는 128 바이트이다. 도 3에 도시하는 예에서는, 하나의 레지스터의 기억 용량은 8 바이트이기 때문에, 1 캐시 라인은 16개의 레지스터분의 데이터를 저장할 수 있다.
L2 캐시 RAM에의 프리페치 명령이 발행되면, 주기억 장치 내의 데이터가 L2 데이터 RAM(120)의 캐시 라인(111a)에 기록된다.
또한, 도 3의 예에서는, A0(i+M), A0(i+M)+32B, A0(i+M)+64B, …와 같이 1 캐시 라인은 32 바이트 단위의 정보로 분할되어 있다.
[LD 명령 또는 PF 명령 출력용의 프로그램]
실행부(14)는 프로그램을 실행함으로써, LD 명령에 의한 로드 대상이 되는 데이터를 미리 L2 캐시 RAM(110)에 프리페치한다. LD 명령으로 레지스터(13a)에 저장할 예정인 데이터를, L2 캐시 RAM(110)의 캐시 라인에 128 바이트 단위로 프리페치하는 케이스에서는, 한 번의 프리페치로, 어드레스 R0∼R15의 레지스터용 데이터를 캐시 라인(111a)에 저장할 수 있다.
그러나, 하나의 캐시 라인에의 프리페치를 한 번으로 끝내도록 PF 명령을 출력하는 것은, 실행부(14)가 실행하는 프로그램에 특수한 연산이나 분기 조건을 추가함으로써 행해지기 때문에, 실행부(14)에 의한 실행 효율을 떨어뜨리게 된다.
하기 프로그램 A는 LD 명령 및 PF 명령을 포함하는 프로그램의 일례이다.
프로그램 A
//LOOP에 진입하기 전에 i=0의 데이터를 로드한다.
(S0) 어드레스 A0(0)의 데이터를 로드하여 R4에 저장한다;
(S1) 어드레스 A1(0)의 데이터를 로드하여 R5에 저장한다;
(S2) 어드레스 A2(0)의 데이터를 로드하여 R6에 저장한다;
(S3) 어드레스 A3(0)의 데이터를 로드하여 R7에 저장한다;
(루프부)
(S4) LOOP://for(i=0<N; i++)
(S5) 1 루프 전에 어드레스 A0(i)로부터 로드한 R4의 데이터를 R0에 이동;
(S6) 1 루프 전에 어드레스 A1(i)로부터 로드한 R5의 데이터를 R1에 이동;
(S7) 1 루프 전에 어드레스 A2(i)로부터 로드한 R6의 데이터를 R2에 이동;
(S8) 1 루프 전에 어드레스 A3(i)으로부터 로드한 R7의 데이터를 R3에 이동;
(S9) M 루프 앞의 어드레스 A0(i+M)의 데이터를 L2 캐시 RAM(110)에 프리페치;
(S10) M 루프 앞의 어드레스 A4(i+M)의 데이터를 L2 캐시 RAM(110)에 프리페치;
(S11) 1 루프 앞의 어드레스 A0(i+1)의 데이터를 로드하여 R4에 저장한다;
(S12) 1 루프 앞의 어드레스 A1(i+1)의 데이터를 로드하여 R5에 저장한다;
(S13) 1 루프 앞의 어드레스 A2(i+1)의 데이터를 로드하여 R6에 저장한다;
(S14) 1 루프 앞의 어드레스 A3(i+1)의 데이터를 로드하여 R7에 저장한다;
(S15) R0, R1, R2, R3를 참조하여 연산하고, 연산 결과를 R8에 저장한다;
(S16) 연산 결과 R8을 어드레스 A4(i)에 스토어한다;
(S17) GOTO LOOP;//i=N-1이면 LOOP를 빠져나간다
(종료부)//N회(周)째
(S18) LOOP의 최후 루프에 어드레스 A0(N)으로부터 로드한 R4의 데이터를 R0에 이동;
(S19) LOOP의 최후 루프에 어드레스 A1(N)로부터 로드한 R5의 데이터를 R1에 이동;
(S20) LOOP의 최후 루프에 어드레스 A2(N)로부터 로드한 R6의 데이터를 R2에 이동;
(S21) LOOP의 최후 루프에 어드레스 A3(N)으로부터 로드한 R7의 데이터를 R3에 이동;
(S22) R0, R1, R2, R3을 참조하여 연산하고, 연산 결과를 R8에 저장한다;
(S23) 연산 결과 R3를 어드레스 A4(N)에 저장한다;
프로그램 A는 루프 처리에 의해 LD 명령을 실행하고, LD 명령에 의해 레지스터에 저장된 데이터에 대하여 연산 처리를 실행하여, 연산 처리 결과를 레지스터에 스토어하는 프로그램이다. 프로그램 A는 어떤 연속된 어드레스 공간의 데이터를 연속해서 참조하고, 참조한 데이터를 사용하여 연산을 행하며, 그 연산 결과를 다른 어드레스 영역에 연속적으로 저장하는 처리를 행한다. 이 어드레스 공간은 프로그램으로부터는 통상 가상 어드레스(VA)로서 액세스되는 것이다. 가상 어드레스는 MMU(TLB)에 의해 물리 어드레스(PA)로 변환되고, L2 캐시는 PA에 의해 액세스된다. 일반적으로, 가상 어드레스가 연속적이라도 물리 어드레스가 연속적이다라고는 할 수 없다. 그러나, 최근에는 메모리의 비용이 현저히 저하된 일도 있고, 메모리의 사용 효율보다도 성능을 중시하여 4MB라는 비교적 큰 페이지 사이즈가 채용되고 있는 사정도 있기 때문에, 물리 어드레스 공간에서도 연속적이라는 것을 전제로서 생각해도 지장은 없는 상황으로 되어 있다.
여기서, 프로그램이 참조하는 어드레스는 A0(0), A1(0), A2(0), A3(0), A0(1), A1(1), A2(1), A3(1), …, A0(N), A1(N), A2(N)의 범위인 것으로 한다.
또한, 이들 어드레스는 이하와 같은 일정한 간격(8 바이트 간격)으로 배열되어 있는 것으로 한다.
어드레스 A0(i)=A0(i)+0B
어드레스 A1(i)=A0(i)+8B
어드레스 A2(i)=A0(i)+16B
어드레스 A3(i)=A0(i)+24B
어드레스 A0(i+1)=A0(i)+32B
어드레스 A1(i+1)=A0(i)+40B
어드레스 A2(i+1)=A0(i)+48B
어드레스 A3(i+1)=A0(i)+56B
어드레스 A0(i+2)=A0(i)+64B
어드레스 A0(i+3)=A0(i)+96B
어드레스 A0(i+4)=A0(i)+128B
이와 같이, 프로그램은 어드레스 A0(i)부터 연속적으로 데이터를 로드한다. 여기서, 1 루프 처리를 실행할 때마다 4 어드레스분(A0(i)∼A3(i)), 즉 32 바이트분의 데이터가 로드된다. 그리고, 4회 앞에 로드 대상이 되는 어드레스 A0(i+4)는 A0(i)+128B이기 때문에, 루프 4회로 캐시 라인 128B분을 액세스하게 된다.
한편, 프리페치는 루프 4회의 처리가 실행되는 동안에,
어드레스 A0(i+M)
어드레스 A0(i+1+M)=A0(I+M)+32B
어드레스 A0(i+2+M)=A0(I+M)+64B
어드레스 A0(i+3+M)=A0(I+M)+96B
와 같이 4회 발행된다.
스텝 S0∼S3에는, 루프 처리에 진입하기 전에 i=0의 데이터, 즉 어드레스 A0(0)∼어드레스 A3(0)의 데이터를 로드하여, 레지스터 R4∼R7에 저장하는 처리가 정의된다. 루프 처리의 1회째에서는, i=0에 대한 어드레스 A0(0), A1(0), A2(0), A3(0)의 데이터가 로드되어 있지 않다. 그 때문에, 루프 처리에 진입하기 전에, S0∼S3에서 이들 어드레스의 데이터를 로드한다.
스텝 S4∼S17에는, 루프 처리가 정의된다. 스텝 S5∼S8에서는, 1 루프 전에 어드레스 A0(i)∼A3(i)으로부터 로드하여 레지스터 R4∼R7에 저장한 데이터를, 레지스터 R0∼R3에 이동하는 처리가 정의되어 있다. S11∼S14에는, 어드레스 A0(i+1)∼A3(i+1)의 데이터를 로드하여, 레지스터 R4∼R7에 저장하는 LD 명령이 정의된다. 루프문(S4)에 의해서, 어드레스 A0(i)∼A3(i)(i=0∼N)에 저장된 데이터가 어드레스 R4∼R7의 레지스터에 순차 저장된다. i는 인크리먼트되기 때문에, 스텝 S5∼S8, S11∼S14의 실행에 의해서, 어드레스 A0(i)∼A3(i)에 저장된 데이터는 1 루프의 처리 실행마다 어드레스 R4∼R7의 레지스터에 저장된다.
예컨대, 어드레스 A0(i)∼A3(i)로 특정되는 데이터가, 예컨대 도 3의 캐시 라인(16a)에 도시하는 바와 같이, 8 바이트 단위로 배치되는 것으로 한다. S11∼S14에 나타내는 LD 명령의 저장 대상 어드레스 R4∼R7의 레지스터 개수는 4개이기 때문에, 루프 처리 1회로, 8B×4=32B의 데이터가 어드레스 A0(i)∼A3(i)로부터 어드레스 R4∼R7의 레지스터에 로드된다.
스텝 S9에서는, M 루프 앞의 어드레스 A0(i+M)의 데이터를 주기억 장치(220)로부터 L2 캐시 RAM(110)에 프리페치한다. 프리페치 명령은 LD 명령의 대상이 되는 데이터를 선행 예측하여, 주기억 장치(220)로부터 L2 캐시 RAM(110)에 로드하는 명령이다. 스텝 S9에서는, 루프 처리(S4∼S17) 중에서 M회 앞에 로드 및 스토어된다고 예측되는 어드레스의 데이터를 프리페치한다. M은 이하의 식 1에 의해 결정된다.
M×T1≥T2…(1)
T1: 루프 처리를 1회 실행하는 시간(클록 사이클수)
T2: PF 명령 발행으로부터 L2 캐시에 데이터가 저장되기까지의 시간(클록 사이클수)
식 1을 만족하는 충분히 큰 값을 M으로서 선택함으로써, 주기억 장치(220)에의 액세스 시간을 은폐한다는 프리페치의 효과를 최대로 한다.
스텝 S9의 프리페치는 S11∼S14에서의 로드 처리에 필요한 데이터가 대상이 된다. 즉, 프로그램 A의 S9에서는, 1회의 PF 명령 실행에 의해 8B×4=32B의 데이터를 프리페치한다. 도 3의 캐시 라인(111a)에 도시하는 바와 같이, L2 데이터 RAM의 1 캐시 라인은 128B의 데이터 용량이기 때문에, 프리페치가 128B 단위로 행해진다고 하면, 한번의 PF 명령 실행으로 L2 데이터 RAM의 1 캐시 라인에 해당하는 데이터가 주기억 장치(220)로부터 로드된다. 그러나, 프로그램 A에서는, 1 루프 실행마다, S9에 나타내는 1회의 PF 명령이 실행된다. 그 때문에, 도 3의 캐시 라인(111a)에 도시하는 바와 같은 128B의 동일 캐시 라인에 대하여 4개의 프리페치 명령 PF1∼PF4이 중복해서 발행된다. 그러나, 1회의 프리페치는 1 캐시 라인, 즉 128 바이트의 라인 전체에 유효하기 때문에, 결과적으로 3회분의 불필요한 프리페치가 행해지게 된다.
불필요한 프리페치가 행해지지 않도록 프로그램을 준비한다고 하는 대응도 생각해 볼 수 있지만, 이 경우, 우선 프로그램의 작성자가 캐시 라인의 라인 사이즈(도 3에 도시하는 예에서는 128B)를 알고 있지 않으면 안 된다. 라인 사이즈를 알고 있었다고 한 경우, 1 라인 즉 128 바이트 단위로 프리페치를 행하는 것이면, 1 루프로 32 바이트의 데이터가 로드되는 상황에서는, 루프 내에서 루프 변수 i를 4로 나눈 나머지가 0인 경우만 프리페치를 발행하는 명령을 추가하는 대응을 생각함으로써 프리페치 명령을 4 루프에 1회의 비율로 발행시키는 것이 가능해진다. 그러나, 이러한 명령은 루프 내에 나머지를 위한 연산이나 조건 분기 명령을 추가해야 하기 때문에, 1 루프마다 PF 명령을 실행하는 경우보다도 명령의 실행 효율을 떨어뜨려 버린다.
스텝 S10은 스토어용의 프리페치이다. 어드레스 A4(i+M)는 스토어 어드레스를 나타내고 있다. 본 실시예에서는, 연산 결과를 스토어하는 어드레스는 A4(0), A4(1), …, A4(N)의 범위인 것으로 한다.
또한, 스토어 어드레스는 이하와 같은 간격으로 설정되어 있는 것으로 한다.
어드레스 A4(i)=A0(i)+0B
어드레스 A4(i+1)=A0(i)+8B
어드레스 A4(i+2)=A0(i)+16B
어드레스 A4(i+16)=A0(i)+128B
이와 같이, 프로그램 A에서는, 어드레스 A4(i)로부터 연속해서 연산 결과를 스토어한다. 또한, 16회 앞의 어드레스 A4(i+16)는 A4(i)+128B이므로, 루프 16회로 캐시 라인 128B분을 액세스하는 것이 된다.
또한, 16회의 루프 처리 동안에,
어드레스 A0(i+M)
어드레스 A0(i+1+M)=A0(I+M)+8B
어드레스 A0(i+2+M)=A0(I+M)+16B
어드레스 A0(i+15+M)=A0(I+M)+128B와 같이 16회 프리페치 명령이 발행된다.
스토어의 경우, 어드레스가 8 바이트 단위로 설정되어 있는 일도 있고, 1 루프로 하나의 레지스터에의 데이터 기록이 행해진다. 그 때문에, 도 3에 도시하는 바와 같이, 8 바이트의 레지스터에의 스토어인 경우, 1 루프로 8 바이트 단위의 스토어 처리가 실행된다. 한편, 스토어용의 프리페치(S10)도 1 루프로 1회 실행된다. 도 3의 캐시 라인(111a)에 도시하는 바와 같이, L2 데이터 RAM의 1 캐시 라인은 128B의 데이터 용량이기 때문에, 프리페치 단위가 128 바이트이면 한번의 PF 명령 실행으로 128B의 데이터 용량이 주기억 장치(220)로부터 로드된다. 그러나, 프로그램 A에서는, 1 루프 실행으로 1회의 PF 명령이 실행되기 때문에, 도 3의 도면부호 111a에 도시하는 바와 같은 128B의 동일 라인에 대하여 16회의 프리페치가 발행된다. 그 때문에, 프리페치 사이즈가 128B인 경우와 비교하여, 15회 불필요한 프리페치 명령이 발행되게 된다.
루프부의 S11∼S14에서 실행되는 로드 동작과, 1회 전에 로드한 데이터를 사용한 연산 처리는 서로 의존 관계가 없기 때문에 병렬로 처리하는 것이 가능하고, 이들 처리를 병렬로 실행함으로써, L1 캐시 RAM(16)에서 캐시 미스가 발생할 경우에, L2 캐시 RAM(110)에 액세스하는 시간을 은폐한다. 프로그램 A에서는, S15에서, 레지스터 R0∼R3에 저장된 데이터에 기초한 연산을 실행하고, 연산 결과를 레지스터 R8에 저장하는 처리를 수행한다. 또한, S16에서, 레지스터 R8에 저장된 연산 결과를, 스토어 어드레스 A4(i)에 스토어한다.
S17에서는, i가 N-1인지 여부가 판정된다. i가 N-1이 아니면, 처리를 S4에 되돌려 루프 처리를 계속한다. 한편, i=N-1인 경우, 루프 처리를 빼고 S18 이후의 처리를 실행한다.
S18∼S23에서는, 어드레스 A0(N)∼어드레스 A3(N)으로부터 로드하여 레지스터 R4∼R7에 저장한 데이터를, 레지스터 R0∼R3에 이동시키는 처리를 수행한다. 어드레스 A0(N)∼A3(N)는 참조 범위의 최종 어드레스이며, i=N+1의 어드레스의 로드는 불필요하다. 그 후, S23에서 레지스터 R0∼R3으로 이동한 데이터를, S24에서 참조하여 연산하고, 연산 결과를 레지스터 R8에 저장한다. 그리고, S24의 연산 결과를, S25에서 스토어 어드레스 A4(N)에 저장한다.
도 3 및 프로그램 A를 이용하여 설명한 바와 같이, 이미 프리페치 대상이 된 캐시 라인에 대하여 복수회 프리페치하는 처리가 실행되는 경우, 이러한 불필요한 PF 명령이 L2 캐시 컨트롤러의 제1 파이프라인(70)의 정체를 초래한다. 그래서, 본 실시형태에서는, 제2 파이프라인(80)을 이용하여 정체를 회피한다.
[L2 캐시 RAM: 뱅크 분할 없는 타입]
도 4는 뱅크 분할이 이루어지지 않은 L2 캐시 RAM의 일례를 도시한 도면이다. 도 4에 도시되는 L2 캐시 RAM(110)은, 예컨대 4웨이의 세트 어소시어티브 방식의 캐시 메모리이다. 도 4에 도시된 바와 같이, L2 캐시 RAM(110)는 복수의 세트로 구성되어 있고, 각 세트는 캐시 웨이(101a∼101d)로 나누어 관리된다.
도 4에 도시되는 L2 캐시 RAM(110)는 L2 캐시 RAM(110)가 유지하는 데이터를 캐시 라인(103-1∼103-n)이라는 단위로 관리한다. 도 4에 도시하는 도면부호 30은 프로세서 코어로부터 출력되는 요구 명령을 도시한다. 요구 명령(30)은, 예컨대 47비트이며, 상위 28비트(46-19+1비트)가 물리 어드레스 중의 태그 어드레스, 상위 18∼7비트의 12비트(18-7+1비트)가 물리 어드레스 중의 인덱스 어드레스(IA: Index Address), 하위 7비트는 물리 어드레스 중의 1 라인 128 바이트 내의 어딘가를 나타내는 어드레스이다.
각 캐시 라인은, 예컨대 프로세서 코어(10)로부터의 LD 명령 또는 PF 명령에 포함되는 VA(가상 어드레스)를 L1 캐시 컨트롤러가 변환하여 얻어지는 PA(물리 어드레스)에 의해 특정된다.
L2 캐시 RAM(110)은 L2 태그 RAM(140), L2 데이터 RAM(120), 라이트 앰프(123a∼123d, 143a∼143d), 센스 앰프(124a∼124d, 144a∼144d), 비교 회로(131a∼131d), 및 선택 회로(121, 122, 141, 142)를 포함한다. L2 태그 RAM(140), 및 L2 데이터 RAM(120)는 각각, 캐시 라인(103-1∼103-n)에 대응한 복수의 엔트리를 갖는다. L2 태그 RAM(140)의 각 엔트리에는, 「태그」라고 불리는 물리 어드레스의 일부가 유지된다. 「태그」는 도 4에 도시하는 요구 명령(30)의 태그 어드레스에 해당한다. 도 4에 예시되는 L2 캐시 RAM(110)는 4개의 웨이를 갖기 때문에, 연상도(連想度)는 「4」이다. 따라서, 하나의 인덱스 어드레스에 의해, 4개의 캐시 라인 및 4개의 태그가 특정된다.
L2 캐시 RAM(110)은 또한, 선택 회로(130)를 구비한다. 선택 회로(130)에는, 센스 앰프(124a∼124d)를 통한 L2 데이터 RAM(120)로부터의 출력이 입력되고, 비교 회로(131a∼131d)로부터 출력되는 히트 웨이 신호의 값에 따라서, 어느 하나의 입력을 선택하여 출력한다.
L2 데이터 RAM(120)의 각 엔트리에는, L2 태그 RAM(140)의 「태그」에 의해 특정되는 「데이터」가 유지된다.
L2 태그 RAM(140)에는, 인덱스 어드레스 IA가 공급된다. 그리고, 공급된 인덱스 어드레스에 대응하는 각 웨이(101a∼101d)의 엔트리, 즉 태그 어드레스가 각 웨이에 대응하는 비교 회로(131a∼131d)에 출력된다.
비교 회로(131a∼131d)는 각각, 프로세서 코어(10)로부터 송신된 태그 어드레스 PA와, L2 태그 RAM(140)로부터 판독한 태그 어드레스를 비교함으로써, 캐시 미스 또는 캐시 히트를 판정하는 회로이다. 비교 회로(131a∼131d)는 각각 캐시 웨이(101a∼101d)에 관련된다. 태그의 일치를 검출한 웨이, 다시 말해서 캐시 히트한 웨이에 대응하는 비교 회로의 출력만이 1이 되고, 다른 비교 회로의 출력은 0이 된다. 그 결과, 비교 회로(131a∼131d)는 캐시 히트한 웨이에 대응하는 비트가 「1」이 된, 합계 4비트의 히트 웨이 신호를 선택 회로(130)에 출력한다. 캐시 미스의 경우, 주기억 장치 상의 물리 어드레스로부터 데이터를 취득하는 동작이 이루어진다.
캐시 히트가 발생한 경우로서 메모리 액세스 요구가 판독 요구인 경우에는, IA에 의해 지정되는 L2 데이터 RAM(120)의 캐시 라인으로부터, 각 캐시 웨이에 대응하는 4개의 캐시 라인의 데이터값이 선택 회로(130)에 판독된다. 그리고, 선택 회로(130)는 비교 회로(131a∼131d)로부터 출력되는 히트 웨이 신호에 의해, 히트 웨이 신호가 나타내는 웨이에 대응하는 데이터값을 선택하여 출력한다.
[L2 캐시 RAM: 뱅크 분할 타입]
도 5는 뱅크 분할된 L2 캐시 RAM의 일례를 도시한 도면이다. 도 5에 도시되는 L2 캐시 RAM(110a, 110b)는 도 4에 도시되는 L2 캐시 RAM(110)와 동일한 구성을 갖기 때문에, 설명을 생략한다. 도 4에서 도시한 예에서는, L2 캐시 RAM의 라인은 12 비트의 인덱스 어드레스에 의해 특정되어 있었지만, 도 5에 도시하는 L2 캐시 RAM(110a, 110b)는 12 비트의 인덱스 어드레스의 최하위의 비트로 뱅크 분할된다. 도 5의 예에서는, L2 캐시 RAM(110a)는 최하위 비트가 「0」인 인덱스 어드레스에 의해 특정되는 데이터를 저장하고, L2 캐시 RAM(110b)는 최하위 비트가 「1」인 인덱스 어드레스에 의해 특정되는 데이터를 저장한다.
L2 캐시 RAM(110a, 110b)은, 각각 도 4에 도시한 L2 캐시 RAM(110)의 절반의 데이터를 갖는다. 선택 회로(132)에는, 인덱스 어드레스에 의해 특정된 L2 캐시 RAM(110a, 110b) 각각의 캐시 라인의 데이터와, 인덱스 어드레스의 최하위 비트(IA[7])가 입력된다. 그리고, 선택 회로(132)는 인덱스 어드레스의 최하위 비트에 대응하는 L2 캐시 RAM의 출력 데이터를 선택하여 출력한다.
[L2 캐시 컨트롤러]
도 1에 도시하는 L2 캐시 컨트롤러(90)는 MO 포트(Move-Out Port)(63), LD(Load) 포트(64), PF(Prefetch) 포트(66), 파이프라인 선택부(60), 제1 우선 제어 회로(61), 및 제2 우선 제어 회로(62)를 갖는다.
제1 우선 제어 회로(61)에는, MO 포트(63)로부터의 치환 명령, LD 포트(64)로부터의 로드 명령, 및 PF 포트(66)로부터의 프리페치 명령이 입력된다. 또한, 도 6에 도시하는 바와 같이, 연산 처리 장치가 복수의 프로세서 코어를 갖는 경우에는, 제1 우선 제어 회로(61)에는 각 코어로부터 출력되는 각 명령이 입력된다. 제1 우선 제어 회로(61)는 수신되는 요구 종별, 고정적인 우선도에 기초하여 선택한다. 우선도로서는 일례로서, 로드 명령>치환 명령> 프리페치 명령의 순서로 한다. 이와 같이 우선도를 설정함으로써 데드 록이나 라이브 록 상태의 방지가 가능해진다.
또한, 제2 우선 제어 회로(62)에는, 프로세서 코어로부터의 프리페치 명령이 입력된다. L2 캐시 컨트롤러(90)는 또한, 제1 파이프라인(70), 및 제2 파이프라인(80)을 갖는다. 이 중, 제2 파이프라인(80)은 프리페치 처리 전용, 보다 구체적으로는 LB(160)가 유지하는 어드레스와 프리페치 요구에 대응하는 어드레스와의 일치 검출을 위해 설치되는 파이프라인이다. 이러한 전용 파이프라인을 설치함으로써, L2 캐시의 프리페치 처리의 작업 처리량 향상이나, 처리 성능의 향상을 실현할 수 있다.
[L2 캐시 컨트롤러: MO 포트, LD 포트, PF 포트]
MO 포트(63), LD 포트(64), PF 포트(66)는 프로세서 코어(10)에 대응하여 설치되고, 프로세서 코어(10)의 수만큼 존재한다. 따라서, 복수의 프로세서 코어(10)가 있는 경우, 프로세서 코어의 개수에 따른 MO 포트(63), LD 포트(64), PF 포트(66)가 준비된다.
MO 포트(63)는 L1 치환 명령(도면에 나타내는 「치환 명령」)을 프로세서 코어(10)로부터 수신하고 유지하며, 제1 우선 제어 회로(61)에 의해 L1 치환 명령이 선택된 경우, L1 치환 명령을 제1 파이프라인(70)에 출력한다.
LD 포트(64)는 LD 명령(도면에 나타내는 「로드 명령」)을 프로세서 코어(10)로부터 수신하고 유지하며, 제1 우선 제어 회로(61)에 의해 LD 명령이 선택된 경우, LD 명령을 제1 파이프라인(70)에 출력한다.
PF 포트(66)는 PF 명령(도면에 나타내는 「프리페치 명령」)을 프로세서 코어로부터 수신하고 유지하며, 파이프라인 선택부(60)가 선택한 제1 우선 제어 회로(61), 제2 우선 제어 회로(62)를 통해 제1 파이프라인(70) 및 제2 파이프라인(80)에 PF 명령을 출력한다. PF 포트(66)의 일례는 도 9a 및 도 9b를 이용하여 후술한다.
MO 포트(63), LD 포트(64), PF 포트(66)는 프로세서 코어(10)로부터의 명령의 오버플로우를 방지하기 위해서, 프로세서 코어(10)로부터의 명령 통지로 현재의 포인터값에 1을 가산(+1)하고(인크리먼트), 프로세서 코어(10)에의 개방 통지로 현재의 포인터값으로부터 1을 감산(-1)하는 자원 카운터를 갖고, 자원 카운터가 엔트리수를 넘지 않도록 명령 발행을 제한한다. MO 포트(63), LD 포트(64), PF 포트(66)는 제1 파이프라인(70) 또는 제2 파이프라인에 출력한 명령의 파이프라인 처리가 완료되면, L1 캐시 컨트롤러(18)에 개방 통지를 발행한다.
[L2 캐시 컨트롤러: PF 포트의 일례]
도 6은 L2 캐시 컨트롤러(90)를 도시하고, 특히 PF 포트의 일례를 상세하게 도시한 도면이다. PF 포트(66)는 엔트리 선택부(66-1), 빈 엔트리 선택부(66-2), PF 기억 회로(66-3), 디코더(66-4)를 갖는다.
PF 기억 회로(66-3)는 PF 명령을 유지하는 회로이며, 유효 비트(Valid), 물리 어드레스(PA), 코드(CODE), 제1 파이프 홀드(P1HLD), 투입 금지(INH), 제2 파이프 홀드(P2HLD), 제2 파이프 종료(P2DONE)의 정보를 저장한다. 또한, 엔트리란, 상기 정보를 PF 명령마다 저장하는 기억 영역을 말한다.
유효 비트(Valid)는 엔트리의 유효·무효를 나타내는 비트로서, 「1」일 때 PF 기억 회로(66-3)의 엔트리가 유효한 것을 나타내고, 「0」일 때 PF 기억 회로(66-3)의 엔트리가 무효인 것을 나타낸다. 제2 파이프 종료(P2DONE)는 PA에 의해서 특정되는 PF 명령이 제2 파이프라인(80)에서 완료된 것을 나타내는 비트로서, 「1」일 때 PF 명령 처리 종료를 나타내고, 「0」일 때 PF 명령이 종료되지 않은 것을 나타낸다.
유효 비트가 「1」에서 「0」으로 변경되는 것은, 제1 파이프라인(70) 또는 제2 파이프라인(80)에서 파이프라인 처리가 중지되지 않고서 완료된 경우이다. 제2 파이프라인(80)은 파이프라인 처리를 실행하여 LB(160)에 대상 데이터가 등록되어 있지 않다고 판정하면, 파이프라인 처리를 중지한다. 이 경우, LB(160)에 등록되어 있지 않은 엔트리의 제2 파이프 종료(P2DONE)가 「1」이 되고, 또한 유효 비트는 「1」인 그대로이다. 후술하는 바와 같이, 제2 파이프 종료(P2DONE)가 「1」이 되고, 유효 비트가 「1」인 경우, 제1 파이프라인(70)이 PF 명령을 처리한다.
빈 엔트리 선택부(66-2)는 PF 기억 회로(66-3)의 각 엔트리의 유효 비트를 참조하여, 유효 비트 「0」의 엔트리를 덮어쓰기 대상 엔트리, 바꿔 말하면, 빈 엔트리라고 판단하여, 엔트리 선택부(66-1)에 빈 엔트리로서 통지한다. 엔트리 선택부(66-1)는 빈 엔트리 선택부(66-2)에 의해 통지된 빈 엔트리에 PF 명령을 등록한다.
코드(CODE)는 PF 명령의 종류를 특정하는 정보이다. 코드는 「공유형 명령 프리페치 명령」, 「공유형 데이터 프리페치 명령」, 「배타형 데이터 프리페치 명령」 중 어느 하나를 특정한다. 「공유형 명령 프리페치 명령」은 프리페치로 취득한 명령을, 다른 프로세서 코어로 취득하는 「공유형」의 상태로 L2 캐시 RAM(110)에 유지하는 것을 요구하는 신호이다. 「공유형 데이터 프리페치 명령」은 프리페치로 취득한 데이터를, 다른 프로세서 코어로 취득하는 「공유형」의 상태로 L2 캐시 RAM(110)에 유지하는 것을 요구하는 신호이다. 「배타형 데이터 프리페치 명령」은 프리페치로 취득한 데이터를 배타형, 즉 요구원 프로세서 코어가 데이터를 변경할 수 있는 상태로 유지하는 것을 요구하는 신호이다.
제1 파이프 홀드(P1HLD)는 제1 파이프라인(70)이 PF 명령을 처리중인 것을 나타낸다. P1HLD가 「1」인 경우는 제1 파이프라인이 PF 명령을 처리중인 것을 나타낸다. 제2 파이프 홀드(P2HLD)는 그 값이 「1」일 때에 제2 파이프라인(80)이 PF 명령을 처리중인 것을 나타낸다. PF 포트(66)는 파이프라인 선택부(60)에 의해 선택된 제1 파이프라인(70) 또는 제2 파이프라인(80)이 PF 명령을 처리한 것을 대응하는 파이프라인으로부터 통지받으면, 대응하는 제1 파이프 홀드 또는 제2 파이프 홀드를 처리중에 변경한다.
투입 금지(INH)는 LB(160)가 사용 불가능 등의 조건에 의해, PF 명령을 제1 파이프라인(70) 또는 제2 파이프라인(80)에 출력할 수 없는 상태인 것을 나타낸다.
디코더(66-4)는 제1 파이프라인(70) 또는 제2 파이프라인(80)으로부터, 포트 및 엔트리 ID를 특정하는 완료 통지 또는 중지 통지를 수신한다. 디코더(66-4)는 제1 파이프라인(70) 또는 제2 파이프라인(80)으로부터 완료 통지를 수신하면, 완료 통지에 의해 특정되는 PF 기억 회로(66-3)의 엔트리의 유효 비트를 무효로 설정한다. 디코더(66-4)는 제1 파이프라인(70) 또는 제2 파이프라인(80)으로부터 중지 통지를 수신하면, 중지 통지에 의해 특정되는 PF 기억 회로(66-3)의 엔트리의 제1 파이프 홀드 또는 제2 파이프 홀드를 유효로 설정한다.
PF 포트(66)는 프로세서 코어(10)로부터 PF 명령을 수신하고, 비어 있는 PF 기억 회로(66-3)의 엔트리에 PF 명령을 등록하여, 요구 수신 순서로 파이프라인 선택부(60)를 통해 제1 파이프라인(70)/제2 파이프라인(80)에 PF 명령을 투입한다. 제1 파이프라인(70) 또는 제2 파이프라인(80)은 최종 스테이지에서 완료 통지 또는 중지 통지를 PF 포트(66)에 출력한다. 처리 완료의 경우는, PF 포트(66)는 완료한 처리에 대응하는 PF 기억 회로(66-3)의 엔트리를 개방하고, 처리 중지의 경우는 재차 제1 파이프라인(70) 또는 제2 파이프라인(80)에 PF 명령을 출력한다.
[L2 캐시 컨트롤러: 파이프라인 선택부의 제1 예]
도 7은 파이프라인 선택부의 일례를 도시한 도면이다. 도 7에 도시하는 파이프라인 선택부(60a)는 도 6에 도시하는 파이프라인 선택부(60)의 일례이다. 파이프라인 선택부(60a)는 논리곱 연산을 행하는 AND 회로(60-1, 60-3, 60-4) 및 논리합 연산을 행하는 OR 회로(60-2, 60-5, 60-6), 선택 회로(60-7, 60-8), 및 우선 회로(60-21, 60-22)를 갖는다. 또한, 도 7에 도시하는 논리 회로 및 입출력 결선은 실제로는 PF 포트(66)의 수만큼 준비된다. OR 회로(60-5, 60-6)는 PF 포트의 수만큼 있는 입출력 결선이 하나라도 신호 레벨이 「하이」가 되면, 신호 레벨 「하이」의 신호를 출력한다.
파이프라인 선택부(60a)는 PF 요구를 처리하는 파이프라인으로서, 제1 파이프라인(70) 또는 제2 파이프라인(80)을 선택한다. 파이프라인 선택부(60a)는 제1 파이프 홀드(P1HLD), 투입 금지(INH), 유효 비트 신호(VALID)를 입력 신호로서 PF 포트(66)로부터 수신한다. 또한, 유효 비트 신호(VALID)는 PF 포트(66)의 물리 어드레스의 엔트리 번호마다 엔트리가 유효한지 여부를 나타내는 비트 신호로서, PF 포트(66)의 엔트리수만큼의 비트값을 갖는다. 파이프라인 선택부(60a)는 이들의 입력 신호를 이용하여, PF 기억 회로(66-3)의 엔트리가 유효하고, 또한 제1 파이프 처리중 또는 LB(160)가 투입 금지 상태가 아닌 경우, 제1 또는 제2 파이프라인에 PF 요구를 투입하는 처리를 행한다.
또한, 파이프라인 선택부(60a)는 제2 파이프 홀드(P2HLD), 제2 파이프 종료(P2DONE)를 입력 신호로서 PF 포트(6)로부터 수신하고, 어느 것의 입력 신호가 「1」인 경우, 제2 파이프라인(80)에의 PF 명령의 투입을 막는다. 또한, 도 9a와 도 9b를 이용하여 후술하는 바와 같이, 제2 파이프라인(80)은 PF 명령을 LB(160)에 투입하하여, LB(160)가 유지하는 엔트리의 PA와, PF 명령이 대상으로 하는 PA가 일치하는지 여부를 검출하는 처리를 행한다. 또한, 이와 같이, LB(160)이 유지하는 엔트리에 대하여, PF 요구 또는 LD 요구가 대상으로 하는 데이터의 PA와의 일치를 검출하는 것을, 본 명세서에서는 「PA 일치」라고 한다.
제2 파이프라인(80)에 의해 「PA 일치」가 검출되지 않으면, 본 실시예에서는 다음에 제1 파이프라인(70)에서의 처리를 행한다. 따라서, 파이프라인 선택부(60a)는 제2 파이프 종료(P2DONE)가 「1」, 즉 「PA 일치 없음」의 경우에는, 제2 파이프라인(80)에 PF 명령을 투입하지 않도록 동작한다. 이것은, 제2 파이프라인(80)은 LB(160)에서의 「PA 일치」를 행하는 것이고, 한번 「PA 일치 없음」인 경우, 재차 「PA 일치」 처리를 행하더라도 「PA 일치 없음」 결과가 얻어질 뿐이기 때문이다.
파이프라인 선택부(60a)는 또한, P2HLD가 「1」인 경우, 즉 제2 파이프라인이 처리중인 경우에도, 제2 파이프라인(80)에 PF 명령을 투입하지 않도록 동작한다. 이 경우, 제2 파이프라인(80)은 처리중이기 때문에, 동일한 처리가 반복되지 않도록, PF 명령의 제2 파이프라인(80)에의 투입을 막는다.
선택 회로(60-7)는 OR 회로(60-5)의 출력 신호(S60-5a)가 「1」, 즉 S60-5a가 제1 파이프라인에 대한 요구 엔트리를 나타내고 있는 경우, PF 명령을 제1 우선 제어 회로(61)에 출력한다. 선택 회로(60-8)는 OR 회로(60-6)의 출력 신호(S60-6a)가 「1」, 즉 S60-6a가 제2 파이프라인에 대한 요구 엔트리를 나타내고 있는 경우, PF 명령을 제2 우선 제어 회로(62)에 출력한다.
AND 회로(60-1)는 PF 포트(66)로부터 제1 파이프 홀드 신호(P1HLD)의 반전 신호, 및 투입 금지 신호(INH)의 반전 신호를 입력 신호로서 수신하고, 입력 신호가 모두 「1」, 즉 P1HLD, INH가 모두 「0」일 때, 값이 「1」인 신호(S60-1)를 AND 회로(60-4)와 AND 회로(60-3)에 출력한다. OR 회로(60-2)는 PF 포트(66)로부터 제2 파이프 홀드(P2HLD) 신호 및 제2 파이프 종료(P2DONE)를 입력 신호로서 수신하고, 어느 것의 입력 신호가 「1」일 때 값이 「1」인 신호(S60-2)를 AND 회로(60-4)에 출력한다.
AND 회로(60-3)는 PF 포트(66)로부터 유효 비트 신호(VALID), 및 신호(S60-1)를 입력 신호로서 수신하고, 입력 신호가 모두 「1」일 때 값이 「1」인 신호(S60-3a)를 출력한다. 신호(S60-3a)는 제1 우선 제어 회로(61)에 출력되고, 입력하는 8 비트 신호로부터 1 비트의 「PIPE 요구 신호」를 생성하는 OR 회로(60-5) 및 우선 회로(60-21)를 통해 선택 회로(60-7)에 신호(S60-5a)로서 출력된다. 제1 우선 제어 회로(61)에 출력된 신호(S60-3a)는 제1 우선 제어 회로(61)의 선택 신호로서, 제1 우선 제어 회로(61)에서 사용된다.
선택 회로(60-7)는 값이 「1」인 신호(S60-5a)를 수신하면, 엔트리 번호에 대응하는 PF 포트로부터의 PF 명령의 투입처로서, 제1 우선 제어 회로(61)를 선택하고, 제1 우선 제어 회로(61)에 PF 명령을 투입한다. 우선 회로(60-21)는, 예컨대 엔트리가 PF 포트에 등록된 시간에 따라서, 가장 오래된 엔트리 번호를 선택한다.
AND 회로(60-4)는 PF 포트(66)로부터 유효 비트 신호(VALID), 신호(S60-1), 및 신호(S60-2)의 반전 신호를 입력 신호로서 수신하여, 입력 신호가 모두 「1」인 경우, 값 「1」의 신호(S60-4a)를 출력한다. 신호(S60-4a)는 제2 우선 제어 회로(62)에 출력되고, OR 회로(60-6) 및 우선 회로(60-22)를 통해 선택 회로(60-8)에 출력된다. 선택 회로(60-8)는 값 「1」의 신호(S60-6a)를 수신하면, 엔트리 번호에 대응하는 PF 포트로부터의 PF 명령의 투입처로서 제2 우선 제어 회로(62)를 선택하고, 제2 우선 제어 회로(62)에 PF 명령을 투입한다. 우선 회로(60-22)는, 예컨대 엔트리가 PF 포트에 등록된 시간에 따라서, 가장 오래된 엔트리 번호를 선택한다.
AND 회로(60-3)는 AND 회로(60-4)의 일부 입력 신호를 입력 신호로 한다. AND 회로(60-3)의 출력 신호 및 AND 회로(60-4)의 출력 신호는 각각 선택 회로(60-7)의 PIPE 요구 신호 및 선택 회로(60-8)의 PIPE 요구 신호가 된다. 이러한 회로 구성에 의해, 제2 파이프라인(80)에 PF 명령의 투입이 요구되는 경우는, 제1 파이프라인(70)에도 PF 명령의 투입이 요구된다. 그러나, 상기한 바와 같이, 제1 파이프라인(70)에서는 PF 명령 처리의 우선 순위는 다른 명령 처리와 비교하여 낮게 설정되어 있다. 그 때문에, PF 명령은 다른 명령이 있는 경우, 제1 우선 제어 회로(61)에 의해 선택되지 않고, 제1 파이프라인(70)에는 투입되지 않는다.
한편, 제2 파이프라인(80)은 PF 명령 전용이기 때문에, 파이프라인 선택부(60)로부터 수신한 PF 명령을 처리하여, PA 일치의 검출 처리를 실행한다. 제2 파이프라인(80)에서 「PA 일치」가 얻어진 PF 명령은 PF 포트의 엔트리로부터 삭제된다. 바꿔 말하면, 제2 파이프라인(80)은 LB(160)로부터 출력되는 완료 신호를 수신하여, PF 명령의 대상으로 되어 있던 LB(160)의 엔트리의 유효 비트를, 「0」으로 한다. 제2 파이프라인(80)에 의해서 「PA 일치」가 되지 않는 PF 명령의 엔트리는 제2 파이프 종료(P2DONE)가 「1」이 되고, 제1 파이프라인(70)이 처리를 완료할 때까지 PF 포트(66)에서 유효한 엔트리로서 유지된다.
이러한 동작에 의해, 제1 파이프라인(70)의 상태가 「비지 상태」인 경우, 제1 우선 제어 회로(61)에 PF 명령 투입되는 기회가 뒤로 미루어지는 한편, 제2 파이프라인(80)은 PF 명령 전용이기 때문에 일정한 작업 처리량 이상으로 처리된다. 그 때문에, LB(160)에서 어드레스 일치한 요구가 모두 제2 파이프라인(80)에서 처리되고, L2 태그 RAM(140)에서 TAG 검색을 하지 않으면 완료할 수 없는 요구만이 제1 파이프라인(70)에서 처리되도록 동작한다.
이와 같이, 요구처의 물리 어드레스를 특정하는 PF 명령은 우선적으로 제2 우선 제어 회로(62)에 출력되고, 제2 파이프라인(80)에서 PA 일치 검출 처리가 실행된다. 제2 파이프라인(80)에서 PA 일치 검출이 없던 PF 명령은 제1 파이프라인(70)에서 처리된다. 이러한 처리에 의해, 연산 처리 장치(100)는 제1 파이프라인(70)에서의 PF 명령 처리의 부하를 낮출 수 있다.
[L2 캐시 컨트롤러: 파이프라인 선택부의 제2 예]
도 8은 파이프라인 선택부의 다른 예를 도시한 도면이다. 도 8에 도시하는 파이프라인 선택부(60b)는 도 6에 도시하는 파이프라인 선택부(60)의 일례로서, 도 7에 도시하는 파이프라인 선택부(60a)와 상이한 예이다.
파이프라인 선택부(60b)는 파이프라인 선택부(60a)의 2개의 선택 회로(60-7, 60-8) 대신에, 하나의 선택 회로(60-9)를 갖는다. 이와 같이 함으로써, PF 명령의 선택 회로를 하나 줄이고, 선택 회로의 입력측 결선을 줄일 수 있다.
도 8에 도시하는 파이프라인 선택부(60b)는 도 7에 도시하는 파이프라인 선택부(60a)에 비하여, AND 회로(60-3) 대신에 AND 회로(60-3b)를 갖고, OR 회로(60-10∼60-12)와, AND 회로(60-13a∼60-13h)를 더 갖는다. 또한, 도 7에 도시하는 참조 부호와 동일한 참조 부호가 부여되는 요소에 관해서는, 도 7을 이용하여 이미 설명했기 때문에 설명을 생략한다.
AND 회로(60-3b)는 도 7에 도시하는 AND 회로(60-3)와는 달리 OR 회로(60-2)의 출력 신호(S60-2)도 입력 신호로 하기 때문에, 제2 파이프 종료 또는 제2 파이프 홀드가 「1」인 경우에, 「1」이 출력 가능하게 된다. 도 7의 회로와 마찬가지로, 도 8의 회로에서도, 제2 파이프 종료 또는 제2 파이프 홀드가 「1」인 경우, 제2 파이프라인(80)에는 PF 명령은 출력되지 않는다. 그 때문에, 신호(S60-3b)는 제1 파이프라인(70)만으로의 PF 명령의 출력을 나타내는 신호이다. 또한, 신호(S60-4b)는 제1 파이프라인(70)만으로의 PF 명령이 존재하는 것을 나타내는 신호이다. 또한, 신호(S60-4b)는 제1 파이프라인(70)과 제2 파이프라인(80)의 양방으로의 PF 명령이 있는 것을 나타내는 신호이며, 신호(S60-6b)는 제1 파이프라인(70)과 제2 파이프라인(80)의 양방에 PF 요구가 존재하는 것을 나타내는 신호이다.
선택 회로를 하나로 해도, PF 명령을 선택적으로 제1 파이프라인(70) 또는 제2 파이프라인(80)에 출력할 수 있도록 하기 위해서, 파이프라인 선택부(60b)는 「우선도 주기 신호」를 이용한다. 우선도 주기 신호는 제1 파이프라인과 제2 파이프라인 중 어느 쪽을 우선하는지를 주기적으로 변경하기 위해서 이용된다. 우선도 주기 신호가 온인 경우에는, 제2 파이프 처리중 및 처리 완료 플래그의 요구를 우선하여 선택하고, 혹시 제2 파이프 처리중 및 처리 완료 플래그의 요구가 없으면, 그 이외의 요구 중에서 요구를 선택한다. 우선도 주기 신호가 오프인 경우는 그 반대이다. 우선도 주기 신호는 클록에 동기하여 출력이 「1」과 「0」으로 변하는 신호이다. 우선도 주기 신호는 AND 회로(60-13a∼60-13h)의 입력 신호이다. AND 회로(60-13a, 60-13b, 60-13e, 60-13f)는 우선도 주기 신호를 비반전 입력으로서 수신하기 때문에, AND 회로(60-13a, 60-13b, 60-13e, 60-13f)는 우선도 주기 신호가 「1」인 경우, 「1」을 출력할 수 있다. 한편, AND 회로(60-13c, 60-13d, 60-13g, 60-13h)는 우선도 주기 신호를 반전 입력으로서 수신하기 때문에, AND 회로(60-13c, 60-13d, 60-13g, 60-13h)는 우선도 주기 신호가 「0」인 경우, 「1」을 출력할 수 있다.
또한, 연산 처리 장치에 복수의 프로세서 코어가 설치되어 있고, 각 코어에 접속되는 복수의 프리페치 포트가 설치되고, 각 프리페치 포트로부터의 요구를 우선 순위 제어부가 선택하여 제1 및 제2 파이프라인에 투입하는 구성인 경우, 각 프리페치 포트에 공급하는 우선도 주기 신호의 위상을 역위상으로 한다.
위상을 서로 역위상으로 함으로써, 어떤 코어로부터는 제2 파이프에의 요구를 출력하는 한편, 다른 코어로부터는 제2 파이프에서의 처리가 끝난 요구를 제2 파이프에 요구한다 고한 상태로, 각 프리페치 포트로부터 항상 제1 및 제2 파이프라인에의 요구를 균등하게 행할 수 있다.
AND 회로(60-3b, 60-4)는 유효 비트 신호(VALID)를 수신한다. 유효 비트 신호(VALID)는 PF 포트(66)의 물리 어드레스의 엔트리 번호마다 엔트리가 유효한지 여부를 나타내는 비트 신호이며, PF 포트(66)의 엔트리수만큼의 비트값을 갖는다. 또한, AND 회로(60-3b, 60-4)는 AND 회로(60-1) 및 OR 회로(60-2)의 출력으로부터는, 엔트리마다 상이한 속성값을 수신한다. 그 때문에, 우선도 주기 신호가 「1」인 경우, 신호(S60-3b)가 「1」이 되는 엔트리는 AND 회로(60-13c, 60-13d)가 아니라, AND 회로(60-13a, 60-13b)에서 우선적으로 처리된다. 한편, 우선도 주기 신호가 「0」인 경우, 신호(S60-3b, S60-4b)가 「0」이 되는 엔트리는 AND 회로(60-13c, 60-13d)에서 우선적으로 처리된다. 이와 같이, 우선도 주기 신호가 「0」과 「1」의 값을 주기적으로 변경함으로써, PF 포트(66)에 유지되는 PF 명령이 우선도 주기 신호에 따라서 선택적으로 처리되게 된다.
AND 회로(60-13a)는 우선도 주기 신호와 AND 회로(60-3b)의 출력이 「1」인 경우에, 값이 「1」인 신호를 출력한다. S60-13a의 출력은 OR 회로(60-10)에 공급된다.
AND 회로(60-13b)는 우선도 주기 신호와 AND 회로(60-4)의 출력(S60-4)이 「1」이며 또한 AND 회로(60-3a)의 출력 S60-3이 「0」인 경우에, 「1」을 OR 회로(60-11)에 출력한다. AND 회로(60-13b)로부터의 신호는 OR 회로(60-10)와 OR 회로(60-11)에 공급된다.
AND 회로(60-13c)는 우선도 주기 신호가 「0」이며 또한 AND 회로(60-4)의 출력이 「1」인 경우에, 값이 「1」인 신호를 OR 회로(60-10)와 OR 회로(60-11)에 출력한다. AND 회로(60-11)로부터의 출력 신호는 제2 파이프라인(80)에의 PF 명령 출력으로서 동작한다. 한편으로, AND 회로(60-13c)의 출력은 OR 회로(60-11)뿐만 아니라 OR 회로(60-10)에도 출력되기 때문에, 도 7에 도시하는 파이프라인 선택부(60a)와 마찬가지로, 제2 파이프 종료 또는 제2 파이프 중단 이외의 경우에도, 제1 파이프라인(70)에 PF 명령은 출력된다.
AND 회로(60-13d)는 우선도 주기 신호가 「0」이며 AND 회로(60-3b)의 출력이 「1」이고 AND 회로(60-4)의 출력이 「0」인 경우에, 값이 「1」인 신호를 OR 회로(60-10)에 출력한다.
AND 회로(60-13e)는 우선도 주기 신호가 「1」이며 신호(S60-3b)가 「1」인 경우에, 값이 「1」인 신호를 OR 회로(60-12)에 출력한다.
AND 회로(60-13f)는 우선도 주기 신호가 「1」이며 신호(S60-5b)가 「0」인 경우에, 값이 「1」인 신호를 OR 회로(60-12)에 출력한다.
AND 회로(60-13g)는 우선도 주기 신호가 「0」이며 신호(S60-4)가 「1」인 경우에, 값이 「1」인 신호를 OR 회로(60-12)에 출력한다.
AND 회로(60-13h)는 우선도 주기 신호가 「0」이고 신호(S60-6b)가 「0」이며 신호(S60-3b)가 「1」인 경우에, 값이 「1」인 신호를 OR 회로(60-12)에 출력한다.
OR 회로(60-10)는 우선도 주기 신호의 값으로 결정되는 엔트리의 PF 명령을 선택하는 신호(S60-10)를, 제1 우선 제어 회로(61)를 통해 제1 파이프라인(70)에 출력한다. 또한, OR 회로(60-11)는 우선도 주기 신호로 결정되는 엔트리의 PF 명령 중 제2 파이프 처리 종료 또는 제2 파이프 홀드를 제외한 PF 명령을 선택하는 신호(S60-11)를, 제2 우선 제어 회로(62)를 통해 제2 파이프라인(80)에 출력한다.
OR 회로(60-12)는 제어 신호(S60-10, S60-11)의 출력에 동기하여, PF 명령의 출력처를 나타내는 신호를, 선택 회로(60-9)에 출력한다. 선택 회로(60-9)는 입력되는 신호의 값에 따라서, PF 명령을 제1 우선 제어 회로(61) 또는 제2 우선 제어 회로에 출력한다.
[L2 캐시 컨트롤러: 프로세서 코어로부터의 명령]
LD 명령은 실행부(14)에 데이터를 로드하는 명령이며, 스토어 명령은 주기억 장치(220)에 데이터를 저장하는 명령이다. PF 명령은 주기억 장치(220)로부터 L2 캐시 RAM(110)에 데이터를 로드하는 명령이다.
L1 치환 명령은 L1 캐시 RAM(16)의 치환, 혹은 L2 캐시 컨트롤러(90)로부터의 지시에 따라 L1 캐시 RAM(16)가 유지하는 데이터를 무효화하는 명령이다. L1 치환 명령에 따라, L1 캐시 RAM(16)의 갱신 데이터의 L2 캐시 RAM(110)에의 갱신 반영, L1 캐시 RAM(16)의 무효화에 수반하는 L2 태그 RAM(140)의 갱신 등이 행해진다.
L2 치환 명령은, PF 명령이나 LD 명령에 의해 L2 캐시 RAM(110)에서 캐시 미스가 생긴 경우, 주기억 장치(220)로부터 로드한 데이터를 저장하기 위해서, 어떤 캐시 라인으로부터 데이터를 플러시하는 명령이다.
MC 치환 명령은, L2 치환 명령이 완료하고, MC(200)로부터의 데이터 응답이 있으면, 데이터 입력 버퍼(32)에 유지되는 MC(200)로부터의 데이터를 L2 캐시 RAM(110)에 기록하는 명령, 또는 프로세서 코어(10)에 데이터 출력을 행하는 명령이다. MC(200)로부터의 데이터가 PF 명령에 의해서 획득된 경우에는, L2 태그 RAM(140)의 갱신, 및 L2 데이터 RAM(120)에의 기록을 행한다. MC(200)로부터의 데이터가 LD 명령에 의해서 획득된 경우에는, 프로세서 코어(10)에의 데이터 출력 및 L1 치환 명령의 발행을 행한다.
[우선 제어 회로]
제1 우선 제어 회로(61)는 파이프라인 선택부(60)를 통해 MO 포트(63), LD 포트(64) 및 PF 포트(66)로부터 각각 MO 명령, LD 명령, 및 PF 명령을 수신하고, 정해진 우선 순위에 따라서 제1 파이프라인(70)에 명령을 투입한다. 제1 우선 제어 회로(61)는, 예컨대 제1 파이프라인(70)에 투입되는 명령을, L1 치환 명령, MC 치환 명령, L2 치환 명령, LD명령, PF 명령의 우선 순서로 제1 파이프라인에 투입한다. 따라서, L1 치환 명령의 우선 순위가 가장 높고, PF 명령의 우선 순위가 가장 낮다.
또한, L1 치환 명령, LD 명령, PF 명령에 있어서의 코어간의 선택은 균등해지도록 이루어진다. 또한, MO 포트 및 LD 포트는 코어마다 준비되기 때문에, 제1 우선 제어 회로(61)에는, 다른 코어로부터의 MO 명령 또는 LD 명령이 입력된다.
PF 포트는 코어마다 준비되기 때문에, 파이프라인 선택부(60)에는, 다른 코어로부터의 PF 명령이 입력된다. 제2 우선 제어 회로(62)는 파이프라인 선택부(60)가 출력한 PF 명령을 제2 파이프라인(80)에 투입한다.
제1 우선 제어 회로(61)는 명령의 종류로 투입 가능한 엔트리를 판단한 후에, 투입 가능한 엔트리에서 코어로부터의 요구가 가장 오래된 엔트리를 선택하여 파이프라인에 명령을 출력해도 좋다.
[제1 파이프라인]
제1 파이프라인(70)은 L2 캐시 RAM(110)에의 데이터 액세스 제어, 각종 자원 관리를 한다. 제1 파이프라인(70)은, 예컨대 LD 명령 또는 PF 명령에 따라서, L2 캐시 RAM(110)의 캐시 미스 또는 캐시 히트 판정을 한다. 제1 파이프라인(70)은 또한, LB(160)에 유지되는 주기억 장치(220)에 대한 LD 명령 중의 데이터 엔트리와, LD 명령 또는 PF 명령의 캐시 라인과의 일치 또는 불일치를 판정한다. 또한, 이하에서는, 주기억 장치(220)에 대한 로드 명령을, 「MLD 명령」이라고 한다.
제1 파이프라인(70)은 L2 캐시 RAM(110)에서 캐시 미스가 생기면, LD 포트(64)로부터 수신한 LD 명령 또는 PF 포트(66)로부터 수신한 PF 명령을, LB(160)에 투입한다. 그 결과, 제1 파이프라인(70)은 LB(160)으로부터 PA가 일치하는지 여부를 나타내는 신호를 수신한다.
또한, 제1 파이프라인(70)은 L2 데이터 RAM(120), L2 태그 RAM(140) 사이의 정보의 리드/라이트(도면에 나타내는 「R/W」)를 실행한다.
제1 파이프라인(70)은 파이프라인의 처리가 완료된 것을 나타내는 완료 신호, 또는 처리가 중단된 것을 나타내는 중단 신호를, MO 포트(63), LD 포트(64), PF 포트(66)에 공급한다. 또한, 제1 파이프라인의 처리의 일례는 도 11 및 도 12를 이용하여 후술한다.
또한, 도 1에는, 히트 버퍼(170)가 도시되어 있다. 캐시 히트 시에는, 제1 파이프라인(70)은 히트한 어드레스를 히트 버퍼(170)에 등록한다.
[제2 파이프라인]
제2 파이프라인(80)은 LB(160)에 유지되는 MLD 명령 발행중인 데이터의 물리 어드레스와, PF 명령의 물리 어드레스와의 일치를 검출하는 파이프라인이다. 제1 파이프라인(70)이 L2 캐시 RAM(110)에의 데이터 액세스 제어 전반을 행하는 데 대하여, 제2 파이프라인(80)의 처리는 프리페치 처리에 한정되어 있다. 제2 파이프라인(80)이 행하는 처리를 한정하는 이유 중 하나는 동일한 물리 어드레스에 대하여 연속해서 PF 명령을 처리하기 때문이다.
제2 파이프라인(80)은 LB(160)으로부터의 PA 일치/불일치를 나타내는 신호에 기초하여, PF 명령에 따른 PA와 LB(160) 엔트리의 PA가 일치하는지 여부를 판별한다. 그리고, PA 일치 혹은 PA 불일치의 판정 결과를, MO 포트(63), LD 포트(64), PF 포트(66)의 각각에 공급한다. 또한, 도 1의 예에서는, 제2 파이프라인(80)에는 LB(160)으로부터의 출력과, 히트 버퍼(HB)(170)로부터의 출력과의 논리합을 취한 신호가 공급된다.
[로드 버퍼]
도 9a 및 도 9b는 로드 버퍼의 일례를 도시한 도면이다.
LB(160)는 L2 캐시 RAM(110)에 저장되는 데이터를 유지하는 기억부이다.
LB(160)는 엔트리 선택부(160-1), 빈 엔트리 선택부(160-2), 기억부(160-3), 디코더(160-4, 160-13), PA 비교부(160-5), AND 회로(160-6), OR 회로(160-7)를 갖는다. LB(160)는 또한, LB 엔트리 감시부(160-10), 선택 회로(160-11, 160-12)를 갖는다.
기억부(160-3)는 유효 비트(Valid), 물리 어드레스(PA), 코드(CODE), PF 번호(PF), L1 식별 정보(L1_LBID), 홀드(HLD), 및 코어 ID(CORE_ID)를 등록하는 엔트리 구성을 갖는다. 기억부(160-3)는 또한, L2 웨이 식별 정보(L2_WAY_ID), 메인 컨트롤러 명령 완료 플래그(req_issued), 메모리 컨트롤러 응답 수신(ms_cplt), L2 치환 명령 완료(mo_cplt)를 등록하는 엔트리 구성을 갖는다.
물리 어드레스(PA) 및 코드(CODE)는 프로세서 코어(10)에서 생성되어, LD 포트(64) 또는 PF 포트(66)를 통해, LD 명령 또는 PF 명령의 일부로서 LB(160)에 보내지고, LB(160)에서 최초의 엔트리 획득에 의해 등록된다.
L1 식별 번호 또는 코어 ID는 프로세서 코어(10)에서 생성되어, LD 포트(64)를 통해, LB(160)에서 최초의 엔트리 획득에 의해 등록된다. L2_WAY_ID는 L2 태그 RAM(140)에서 생성되어, LB(160)에서 최초의 엔트리 획득에 의해 등록된다.
PF 명령 또는 LD 명령에 있어서 캐시 미스를 검출하고, 또한 LB(160)에서 PA 불일치가 생긴 경우, 제1 파이프라인(70)은 파이프라인 처리 완료 시에, LB(160)의 엔트리를 획득하고, LB(160)를 통해 MC(200)에 MLD 명령을 행한다.
LB(160)로부터 획득되는 엔트리는 일례로서, 기억부(160-3)의 유효 비트(Valid)의 값이 「0」을 나타내는 엔트리 중, 획득된 것이 가장 오래된 엔트리가 선택된다. 선택된 엔트리에는, 제1 파이프라인(70)으로부터의 엔트리 획득 지시와 함께, PA, CODE, req_issued, PF, L2_WAY_ID 등의 정보를 포함한다.
또한, 제1 파이프라인(70)에서 새롭게 처리가 실행될 때마다, LB(160)에서는 제1 파이프라인(70) 또는 제2 파이프라인(80)으로부터 송출되는 PA와 기억부(160-3)의 각 유효 엔트리와의 PA 일치를 검출하고, 그 결과를 제1 파이프라인(70) 또는 제2 파이프라인(80)에 송출한다.
빈 엔트리 선택부(160-2)는 유효 비트(Valid)가 무효로 된 엔트리를 검색하여, 엔트리 선택부(160-1)에 통지한다.
LB(160)가 LD 명령 또는 PF 명령을 수신하면, 빈 엔트리 선택부(160-2)에 의해 통지된 엔트리에 대하여, LD 명령 또는 PF 명령을 등록한다. 등록된 엔트리로부터, L2 치환 명령, MC 치환 명령이 정해진 조건에 따라서, 제1 파이프에 요구된다. 디코더(160-4)는 제1 파이프라인(70)으로부터, 엔트리 ID를 특정한 완료 통지 또는 중지 통지를 수신한다. 디코더(160-4)는 제1 파이프라인(70)으로부터 MC 치환 명령의 완료 통지를 수신하면, 완료 통지에 의해 특정되는 엔트리의 유효 비트를 무효로 설정한다.
디코더(160-4)는 제1 파이프라인(70)으로부터 중지 통지를 수신하면, 중지 통지에 의해 특정되는 엔트리의 홀드를 무효로 설정한다. 디코더(160-13)는 MC(200)로부터 데이터를 판독한 것을 나타내는 메모리 응답 신호를 수신하고, 메모리 응답 신호에 의해 특정되는 엔트리의 메모리 컨트롤러 응답 수신(ms_cplt)을 「1」로 한다.
PA 비교부(160-5)는 제1 파이프라인(70)에서 처리중인 LD 명령 또는 PF 명령의 대상 데이터의 PA와, LB(160)에 유지되어 있는 데이터의 PA를 비교함으로써, 양 데이터의 일치를 판단한다. 또한, 제2 파이프라인(80)에서 처리중인 PF 명령의 대상 데이터의 PA와 LB(160)에 유지되어 있는 데이터의 PA를 비교함으로써, 양 데이터의 일치를 판단한다. 또한, 도 9a에는, 하나의 PA 비교부(160-5)가 도시되지만, PA 비교부(160-5)는 기억부(160-3)의 엔트리마다 하나씩 있다.
AND 회로(160-6)는 기억부(160-3)의 엔트리의 수만큼 있다. AND 회로(160-6)는 해당 엔트리의 유효 비트가 「1」이며 PA 비교부(160-5)로부터 수신한 신호가 「1」인 경우, 「1」을 OR 회로(160-7)에 출력한다.
OR 회로(160-7)는 복수의 AND 회로(160-6)의 출력 신호를 입력 신호로서 수신하여, 입력 신호 중 어느 것의 값이 「1」인 경우, 출력 신호를 「PA 일치 통지」로 하여, 제1 파이프라인(70) 및 제2 파이프라인(80)에 출력한다.
LB(160)는 제1 파이프라인(70)으로부터 LD 명령 또는 PF 명령을 수신하고, 기억부(160-3)의 비어 있는 엔트리에 LD 명령 또는 PF 명령을 등록한다. LB(160)는 또한, 기억부(160-3)로부터 수신 순서로 명령을 출력하고, MC(200)에 MLD 명령을 투입한다. 제1 파이프라인(70)은 완료 통지 또는 중지 통지를 LD 포트(64) 또는 PF 포트(66)에 공급하여, LD 포트(64) 또는 PF 포트(66)로부터 기억부(160-3)의 엔트리를 개방한다.
LB 엔트리 감시부(160-10)는 기억부(160-3)를 참조하여, 기억부(160-3)의 엔트리의 유효 비트(Valid)가 「1」, 그리고 메인 컨트롤러 명령 완료 플래그(req_issued)가 「0」일 때, MC(200)에 해당 엔트리에 대응하는 명령을 투입하기 위한 신호(S160-10a)를 선택 회로(160-11)에 공급하도록 동작한다.
선택 회로(160-11)는 선택 신호(S160-10a)를 LB 엔트리 감시부(160-10)로부터 수신하면, 선택 신호(S160-10a)의 생성 조건이 된 엔트리를 치환하는 치환 처리 명령을, 제1 우선 제어 회로(61)에 공급한다.
LB 엔트리 감시부(160-10)는 기억부(160-3)의 엔트리의 유효 비트(Valid) 및 메모리에의 요구 발행 완료(req_issued), L2 치환 명령 완료(mo_cplt), 및 메모리 컨트롤러 응답 수신(ms_cplt)이 「1」이며, 홀드(HLD)가 「0」일 때에 신호(S160-10b)를 선택 회로(160-12)에 공급하도록 동작한다. 선택 회로(160-12)는 LB 엔트리 감시부(160-10)로부터 신호(S160-10b)를 수신하면, 제1 우선 제어 회로(61)에 MC 치환 명령을 출력한다.
또한, 도 9a에서는, 하나의 로드 버퍼를 도시했지만, 도 5에 도시하는 바와 같이 L2 캐시 RAM이 뱅크 분할되는 경우, 로드 버퍼는 뱅크 분할된 L2 캐시 RAM(110a, 110b)마다 준비된다. 이와 같이, 뱅크 분할된 L2 캐시 RAM과 로드 버퍼를 뱅크마다 세트로서 준비함으로써, 도 12에서 후술하는 바와 같이, 서로 상이한 뱅크라면, L2 태그 RAM에의 액세스, 또는 LB의 PA 일치 검출을 동일한 사이클로 실행하는 것이 가능하게 된다.
[히트 버퍼]
히트 버퍼(HB)(170)는 제1 파이프라인(70)이 캐시 히트를 판정한 경우, 캐시 히트가 생긴 PF 명령의 요구 어드레스 등을 유지하는 기억 회로이다. 제2 파이프라인(80)은 LB(160)에 유지되는 엔트리의 PA가 프리페치 대상의 PA와 일치하는지 여부를 판정하는 처리를 실행하지만, 주기억 장치(220)로부터 데이터를 로드하여 끝나면, LB(160)로부터 대응하는 엔트리가 삭제된다. 그 때문에, 제2 파이프라인(80)의 처리 종료 후에, 제1 파이프라인에서 주기억 장치(220)로부터의 로드를 종료한 PF 명령에 의한 L2 캐시 RAM(110)에의 액세스가 생긴다. 따라서, 제2 파이프라인(80)에서 PF 명령의 처리가 종료하도록, 제1 파이프라인에서 캐시 히트한 히트 버퍼(170)에 PF 명령을 유지하여, 제2 파이프라인(80)에 의해 PA 일치 검출이 가능해짐으로써, 제1 파이프라인(70)의 PF 명령 처리를 삭감할 수 있다.
히트 버퍼(170)는 LB(160)와는 별개로 히트 버퍼용 기억 회로를 가져도 좋고, 로드 버퍼(160)에 히트 버퍼의 역할을 더해도 좋다.
도 10a 및 도 10b는 히트 버퍼의 기능을 더한 로드 버퍼의 일례이다. 도 10a 및 도 10b에 도시되는 기억부(160-3b)는 유효 비트(Valid)를 유지하는 영역과 홀드(HLD)를 유지하는 영역 사이에, 히트 밸리드(Hit_Valid)를 저장하는 기억 영역을 갖는다. 히트 밸리드는 기억부(160-3b)의 대응하는 엔트리가 히트 버퍼로서 사용되고 있는지 여부를 나타내는 플래그이다. 히트 밸리드가 「1」인 경우에, 대응하는 엔트리가 히트 버퍼로서 사용되고 있다. 히트 밸리드는 유효 비트(Valid)에서는 배타적인 비트값이 저장된다. 즉, 제1 또는 제2 파이프라인이, LB(160)의 엔트리에 의해서 주기억 장치(220)로부터 데이터를 로드하여, 유효 비트(Valid)가 「0」으로 교체되면, 히트 밸리드(Hit_Valid)가 「1」이 된다. 통상, 빈 엔트리 선택부(160-2)는 유효 비트(Valid)가 「0」인 엔트리를 「빈 엔트리」로 간주하여 엔트리 선택부(160-1)에 통지하기 때문에, 유효 비트(Valid)가 「0」인 엔트리는 새로운 엔트리에 덮어쓰기된다. 따라서, 기억부(160-3b)의 엔트리는 다음 엔트리에 덮어쓰여질 때까지 히트 버퍼(170)로서 이용 가능하다. 히트 버퍼의 기억 영역은 기억부(160-3b)에서, 큰 기억 영역을 점유하지 않는다. 이와 같이, 기억부(160-3b) 내의 일부의 기억 영역을 히트 버퍼(170)로 함으로써, 기억부(160-3b)의 기억 영역을 부당하게 크게 하는 일은 없다.
PF 명령 또는 LD 명령에 의해 제1 파이프라인(70)이 캐시 미스를 검출한 경우, 제1 파이프라인(70)의 처리 완료 시에, 엔트리 선택부(160-1)에 의해, 기억부(160-3b)의 엔트리 중, 대응하는 유효 비트가 「0」인 엔트리를 획득한다. 그 경우, 히트 밸리드도 「0」인 엔트리를 우선적으로 선택함으로써, 히트 밸리드의 데이터를 보다 장시간, 기억부(160-3b)에 유지할 수 있고, 제2 파이프라인(80)이 히트 밸리드에 기초하여 PF 명령의 처리를 실행할 수 있기 때문에, 제1 파이프라인(70)의 PF 명령 처리 부하를 경감할 수 있다.
빈 엔트리 선택부(160-2)는 유효 비트가 「0」이고 히트 밸리드가 「0」인 엔트리가 존재하지 않으면, 유효 비트가 「0」이고 히트 밸리드가 「1」인 엔트리 중에서, 새로운 엔트리를 선택한다.
PF 명령 또는 LD 명령을 처리하는 제1 파이프라인(70)이 캐시 히트를 검출한 경우, 파이프라인의 완료 시에, 유효 비트가 「0」이고 히트 밸리드가 「0」인 엔트리를 선택하여, 선택된 엔트리에 캐시 히트한 데이터를 등록한다. 선택된 엔트리에는, 제1 파이프라인(70)으로부터 PA, CODE, PF, L2_WAY_ID 등의 정보가 송출되어 엔트리에 저장되고, 히트 밸리드가 「1」이 되며 유효 비트도 「1」로 한다.
로드 버퍼에 히트 버퍼 기능을 추가하는 경우, 도 9a에 도시한 로드 버퍼(160)의 주변 회로에 더하여, 도 10a의 예에서는 AND 회로(160-8), OR 회로(160-9, 160-14)가 추가된다. AND 회로(160-8)는 기억부(160-3b)의 엔트리의 수만큼 있다. AND 회로(160-8)는 PA 비교부(160-5)의 출력 신호와, 히트 밸리드의 값을 입력 신호로서 수신하여, 입력 신호가 모두 값 「1」인 경우, OR 회로(160-9)에 값 「1」의 신호를 출력한다. OR 회로(160-9)는 AND 회로(160-8)의 출력 신호를 입력 신호로서 수신하고, 어느 것의 AND 회로(160-8) 출력의 비트값이 「1」인 경우, OR 회로(160-14)에 값이 「1」인 신호를 출력한다. OR 회로(160-14)는 OR 회로(160-7)의 출력 신호와, OR 회로(160-9)의 출력 신호를 수신하고, 어느 것의 신호가 「1」이면, 「PA 일치 통지」로서 값이 「1」인 신호를, 제2 파이프라인(80)에 출력한다.
이와 같이, 제2 파이프라인(80)에의 「PA 일치 통지」는 로드 버퍼에 저장되는 PF 명령의 PA 일치와, 히트 버퍼로서 이용되고 있는 엔트리에 저장되는 PA와의 일치를 포함한다. 제2 파이프라인(80)에서는, 히트 버퍼의 일치도 로드 버퍼의 일치도 PF 명령의 완료 처리를 실행하기 위해서 사용되기 때문에, OR 회로(160-7)의 출력 신호와, OR 회로(160-9)의 출력 신호는 OR 회로(160-14)에서 논리합 연산된다.
또한, 제1 파이프라인(70)의 플로우마다, LB(160)는 제1 파이프라인(70) 또는 제2 파이프라인(80)으로부터 송출되는 PA와 도면부호 160-3b의 각 유효 엔트리와의 PA 일치를 검출하고, 그 결과를 제1 파이프라인(70) 또는 제2 파이프라인(80)에 송출한다. 다만, 제1 파이프라인에서는 태그를 항상 검색함으로써, 히트 밸리드에 기초하는 캐시 히트의 판정은 불필요하기 때문에, 제1 파이프라인(70)에 송출하는 것은 LB(160)의 유효 엔트리의 PA 일치 결과만으로 좋다. 이것에 대하여, 제2 파이프라인(80)에는, LB(160)의 유효 엔트리의 PA 일치 결과와 유효 히트 버퍼 엔트리의 PA 일치 결과와의 논리합을 송출한다.
제2 파이프라인(80)은 LB의 PA 일치 조건에 의해, LB 일치 조건에 더하여 캐시 히트 조건에 의해서도 PF 명령을 완료시킬 수 있다. LB(160)는 MC(200)로부터의 데이터 응답을 받아 치환 명령을 제1 파이프라인(70)에 대하여 출력하고, 그 출력 완료와 함께, 엔트리의 유효 비트를 「0」으로 함으로써 엔트리를 개방한다.
[제1 파이프라인 제어]
도 11은 제1 및 제2 파이프라인에 의한 처리의 일례를 도시한 도면이다. 제1 파이프라인(70)은 요구 판독(RR), 우선 순위 결정(PD1, PD2), 판독용 PA 입력(PI), 태그 판독(TR), 캐시 히트 검출(CD), 처리 결과 통지(RN), 및 요구 처리 판단(RP)의 스테이지를 갖는다. 제1 파이프라인(70)은 또한, 태그 갱신 PA 입력(TI), 태그 갱신 동작(TW), PA 전송(LP), PA 일치 검출(LD), 및 PA 일치 결과 전송(LT)의 스테이지를 갖는다.
요구 판독(RR) 스테이지에서는, 제1 파이프라인(70)은 LD 포트(64) 또는 PF 포트(66) 또는 MO 포트(63) 또는 LB(160)에 유지되는 요구을 판독한다.
우선 순위 결정(PD1, PD2) 스테이지에서는, LD 포트(64), PF 포트(66), MO 포트(63) 또는 LB(160)로부터 판독된 요구를 제1 우선 제어 회로(61)에 공급하고, 제1 파이프라인(70)은 정해진 우선 순위에 따라 제1 우선 제어 회로(61)로부터 결정된 요구를 수신한다.
판독용 PA 입력(PI) 스테이지에서는, 제1 파이프라인(70)은 L2 태그 RAM(140)에 액세스 대상 데이터의 물리 어드레스를 입력한다. PA 입력 스테이지에서는, 제1 파이프라인(70)은 LB(160)에의 PA 전송(LP)도 행한다.
태그 판독(TR) 스테이지에서는, 제1 파이프라인(70)은 L2 태그 RAM(140)로부터 태그를 판독한다. 태그 판독 스테이지에서는, 제1 파이프라인(70)은 LB(160)에서의 PA 일치 검출(LD)도 행한다.
캐시 히트 검출(CD) 스테이지에서는, 제1 파이프라인(70)은 L2 캐시 RAM(110)의 캐시 히트 또는 캐시 미스를 검출한다. 캐시 히트 검출 스테이지에서는, 제1 파이프라인(70)은 LB(160)에의 PA 일치 결과 전송(LT)도 행한다.
요구 처리 판단(RP) 스테이지에서는, 캐시 히트 검출 스테이지의 검출 결과에 따라서, 처리가 이루어진다. 캐시 미스 검출의 경우, 제1 파이프라인(70)은 LB(160)의 엔트리에 LD 명령을 투입하고, 처리 결과 통지(RN) 스테이지에서, LD 포트(64)에 완료 통지를 출력한다. PF 명령의 경우는 처리 결과 통지 스테이지에서, PF 포트(66)로 완료 통지를 출력한다.
LD 명령이 캐시 히트 검출인 경우, 제1 파이프라인(70)은 L2 데이터 RAM(120)으로부터 데이터를 판독하여, 처리 결과 통지(RN) 스테이지에서, LD 포트(64)에 완료 통지를 공급한다. 제1 파이프라인(70)은 LB(160)에의 LD 명령 투입 후, LB(160)로부터 「PA 일치 통지」를 수신하고, LD 포트(64)에 중지 통지를 공급한다.
LB(160)는, MC 치환 명령의 완료 통지를 수신하면, 완료 통지에 의해 특정된 엔트리를 개방한다. 기타, LD 명령이 처리되지 않은 경우, 제1 파이프라인(70)은 처리 결과 통지 스테이지에서, LB(160)에 중지 통지를 공급한다.
PF 명령이 캐시 히트 검출인 경우, 제1 파이프라인(70)은 처리 결과 통지스테이지에서, PF 포트(66)에 완료 통지를 공급한다. 제1 파이프라인(70)은 LB(160)에의 PF 명령 투입 후, LB(160)로부터 「PA 일치 통지」를 수신하고, LB(160)에서 유지하는 요구 사이에 차이가 없으면, 제1 파이프라인(70)은 PF 포트(66)에 완료 통지를 공급한다.
태그 갱신 PA 입력 스테이지에서는, 제1 파이프라인(70)은 주기억 장치(220)나, L1 캐시 RAM(16)으로부터 출력된 데이터에 의한 태그 갱신용의 PA를 수신한다. 태그 갱신 동작 스테이지에서는, 제1 파이프라인(70)은 입력된 PA를 이용하여 L2 태그 RAM(140)의 태그 데이터를 갱신한다. 즉, 태그 갱신 동작 스테이지에서는, L2 데이터 RAM(120) 및 L2 태그 RAM(140)에 대하여 기록 동작이 행해진다.
도면부호 401은 제1 파이프라인(70)에 의한 파이프라인 처리의 제1 플로우를 도시한다. 도면부호 402는 제1 플로우의 개시로부터 2사이클 후에 실행되는 파이프라인 처리의 제2 플로우를 도시한다. 도면부호 403은 제2 플로우 개시로부터 2사이클 후에 실행되는 파이프라인 처리의 제3 플로우를 도시한다. 도면부호 404는 제3 플로우 개시로부터 2사이클 후에 실행되는 파이프라인 처리의 제4 플로우를 도시한다.
파이프라인 처리(401∼404)에 도시하는 바와 같이, 제1 파이프라인(70)은 선행하는 플로우에 대하여, 2 사이클 지연되어 후속 플로우를 실행한다. 이와 같이, 2 클록 사이클 지연되어 후속 플로우를 실행하기 위해서, 예컨대 1 사이클 걸러 파이프라인이 실행되지 않는 아이들 사이클이 설정된다.
도면부호 411은 「9」 사이클에서 행해지는 파이프라인 처리(401)의 태그 기록 처리를 도시한다. 도면부호 412는 「8」 사이클에서 행해지는 파이프라인 처리(403)의 태그 판독 처리를 도시한다. 도면부호 413은 「10」 사이클에서 행해지는 파이프라인 처리(404)의 태그 판독 처리를 도시한다. 도 11에 도시된 바와 같이, 「9」 사이클의 태그 기록 처리(411)와, 「8」 사이클의 태그 판독 처리(412), 및 「10」 사이클의 태그 판독 처리(413)는 같은 사이클에서 이루어지지 않는다. 이와 같이, 선행 플로우로부터 2 클록 사이클 지연되어 후속 플로우의 처리를 행함으로써 각 플로우의 짝수 클록 사이클에서 행해지는 태그 판독 동작과, 각 플로우의 홀수 클록 사이클에서 행해지는 태그 기록 동작은 상이한 클록 사이클에서 실시하는 것이 가능하게 된다.
도 4에 도시하는 L2 캐시 RAM(110)은 판독/기록 공유의 1 포트 RAM이며, 라이트 앰프(123a∼123d, 143a∼143d)와 센스 앰프(124a∼124d, 144a∼144d)는 공통 컬럼선을 사용하고, 같은 사이클에서 메모리 셀에의 기록과 판독은 할 수 없다. 동일한 사이클에서 판독 및 기록 동작을 하기 위해서는, 하나의 셀에 기록용 컬럼선과, 판독용 컬럼선을 설치할 필요가 있다. 이와 같이, 동일한 사이클에서 기록과 판독이 가능한 L2 캐시 RAM은 복잡하고 또한 비용면에서 고가이다. 상기한 바와 같이, 제1 파이프라인(70)이 선행 플로우로부터 2 클록 사이클 지연되어 후속 플로우를 실행함으로써, 판독과 기록이 동일한 사이클에서 실행되지 않고, L2 캐시 RAM을 판독/기록 공유의 1 포트 RAM으로 할 수 있다.
[제2 파이프라인 제어]
제2 파이프라인(80)의 스테이지는 전술한 요구 판독 스테이지, 우선 순위 결정 스테이지, PA 일치 검출 스테이지, LB에의 PA 전송 스테이지, 요구 처리 판단 스테이지, 처리 결과 통지 스테이지가 된다. 도 11에 도시하는 도면부호 451, 461은 파이프라인 처리의 일례를 도시한다. 이 중, 파이프라인 처리(451)는 제1 파이프라인의 파이프라인 처리(401)에서의 PA 일치 검출 전에, PA 일치 검출을 행하는 예를 도시하고 있다. 또한, 파이프라인 처리(461)는 파이프라인 처리(401)에 의한 PA 일치 검출 후에, PA 일치 검출을 행하는 예를 도시하고 있다. 또한, 제2 파이프라인(80)은 PA 일치 검출 처리에 있어서, LB(160)에서의 PA 일치 대신에, 또는 LB(160)에서의 PA 일치에 더하여, 도 10a 및 도 10b를 이용하여 설명한 히트 버퍼와 PF 명령 대상 데이터와의 일치 처리를 행해도 좋다.
도면부호 414는 「4」 사이클에서 행해지는 파이프라인 처리(404)의 PA 일치 검출 처리이며, 도면부호 452는 「3」 사이클에서 행해지는 파이프라인 처리(451)의 PA 일치 검출 처리이다. 도면부호 462는 「5」 사이클에서 행해지는 파이프라인 처리(461)의 PA 일치 검출 처리이다.
제2 파이프라인(80)의 PA 일치 검출 처리(452, 462)는 제1 파이프라인(70)의 PA 일치 검출 처리(414)와 상이한 클록 사이클에서 LB(160)에서의 PA 일치 검출 처리를 행한다. 그 때문에, 제1 파이프라인(70)과 제2 파이프라인(80)은 PA 일치 검출 처리로, 어드레스 일치 검출 회로를 공용하면서도, 제1 파이프라인(70)을 정지시키는 등의 영향을 일체 주지 않고서 끝난다.
또한, 제2 파이프라인에서는 LB와의 PA 일치 검출 결과에 기초한 처리를 결정하기 때문에, 제1 파이프라인에 의한 파이프라인 처리와 비교해서 처리 사이클수를 줄이는 것은 가능하다. 그러나, PF 포트로부터 제1 파이프라인과 제2 파이프라인에 동시에 하나의 PF 명령이 발행되어, PF 명령이 쌍방의 파이프라인에 투입되는 경우에는, 이하의 이유에 의해 제2 파이프라인에 의한 파이프라인 처리의 사이클수는 제1 파이프라인에 의한 파이프라인 처리의 사이클수와 동일하게 하는 것이 바람직하다.
제1 파이프라인 처리와 제2 파이프라인 처리의 사이클수를 같게 함으로써 PF 포트는 PF 명령에 대한 완료 통지 혹은 중지 통지를 동시에 수신할 수 있다. 이러한 경우, PF 포트가 제2 파이프라인으로부터의 완료 통지를 무시하고, 제1 파이프라인으로부터의 완료 통지에 따라서 처리의 완료, 및 대응하는 기억부(160-3)의 엔트리의 개방 처리를 행하는, 제1 파이프라인으로부터의 완료 통지를 우선으로 하는 우선 순위 논리를 설정함으로써, PF 포트가 수신하는 완료 통지를 하나로 압축할 수 있고, 완료 통지를 받기 위한 수납구는 하나만 설치하면 된다. 다만, 제1 파이프라인의 처리 단수와, 제2 파이프라인의 처리 단수가 일치하지 않는 경우는, PF 포트에 동시에 도달하는 완료 통지가 별개의 요구에 기초한 통지가 될 가능성이 있다. 이 경우에는, 쌍방의 파이프라인으로부터의 완료 통지를 받을 수 있도록 수납구를 2개 설치할 필요가 있다.
도 11에 도시하는 바와 같이, 「7」 사이클에서 처리 결과 통지를, 제1 파이프라인과 제2 파이프라인이 동시에 행하기 때문에, 파이프라인 처리(451)의 「5」및 「6」 사이클과, 파이프라인 처리(461)의 「3」 사이클에 아이들 사이클이 있다. 이와 같이, 각 파이프라인이 동일한 사이클로에서 처리 결과 통지를 행함으로써 PF 포트(66)는, 동일한 타이밍에 제1 파이프라인(70) 및 제2 파이프라인(80)으로부터 PF 명령에 관한 완료 통지 또는 중지 통지를 수신한다. PF 포트(66)에서는, 제1 파이프라인(70)으로부터의 완료 통지를 우선으로 하는 선택 회로(160-15)에 의해 완료 통지를 하나로 압축함으로써 완료 통지의 수납구로서 디코더(160-4)를 하나로 할 수 있다.
[뱅크화된 RAM에 대한 파이프라인 처리]
도 12는 뱅크화된 L2 캐시 RAM에 대한 제1 및 제2 파이프라인에 의한 처리의 일례를 도시한 도면이다. 프로그램 A에 나타낸 바와 같이, L2 캐시 RAM(110a) 또는 L2 캐시 RAM(110b)에 대하여 동일한 사이클에서 판독 및 기록을 동시에 하는 것은 불가능하다. 그러나, L2 캐시 RAM(110a)에 판독 또는 기록이 행해지고 있는 사이클과 동일한 사이클에서, L2 캐시 RAM(110b)에 대하여 판독 또는 기록을 행하는 것은 가능하다. L2 캐시 RAM(110a)와 L2 캐시 RAM(110b)은 메모리 셀은 별개로 갖고 있기 때문이다. 또한, 파이프라인 처리에서는, 동일한 사이클에서 2개의 파이프라인 처리를 실행하는 것도 가능하다. 예컨대, PA 일치 검출 처리는 복수의 파이프라인 처리를 동일한 사이클에서 실행할 수 있다.
도면부호 401a는 L2 캐시 RAM(110a)에 대한 제1 파이프라인(70)의 파이프라인 처리이며, 도면부호 401b는 L2 캐시 RAM(110b)에 대한 제1 파이프라인(70)의 파이프라인 처리이다. 도면부호 451a는 L2 캐시 RAM(110a)에 대한 제2 파이프라인(80)의 파이프라인 처리이며, 도면부호 451b는 L2 캐시 RAM(110b)에 대한 제2 파이프라인(80)의 파이프라인 처리이다. 파이프라인 처리(401a)에 대하여 후속 플로우인 파이프라인 처리(401b)는 1 사이클 지연이다. 파이프라인 처리(451a)에 대하여 후속 플로우인 파이프라인 처리(451b)는 1 사이클 지연이다. 이와 같이, 후속 플로우를 1 사이클 후에 실행할 수 있는 것은, 뱅크 분할에 의해서, 동일한 L2 캐시 RAM에 대해 같은 사이클에서 판독하여, 기록이 생기지 않도록 할 수 있기 때문이다.
도면부호 471은 「4」 사이클에서의 제1 파이프라인(70)에 의한 PA 일치 검출 처리이며, 도면부호 472는 「3」 사이클에서의 제2 파이프라인(80)에 의한 PA 일치 검출 처리이다. 도면부호 473은 「5」 사이클에서의 제1 파이프라인(70)에 의한 PA 일치 검출 처리이며, 도면부호 472는 「4」 사이클에서의 제2 파이프라인(80)에 의한 PA 일치 검출 처리이다. 처리 471과 처리 474는 동일 사이클의 PA 일치 검출 처리이다. 도 7에 도시하는 바와 같이, PA 일치는 LB(160)의 엔트리마다 PA 일치 검출이 이루어지기 때문에, 동일한 사이클에서 2개의 PA 일치 검출을 행하는 것도 가능하다.
이와 같이, 뱅크 분할에 의해서, L2 캐시 RAM에 대한 동일 사이클에서의 판독 및 기록을 행하지 않고서, 1사이클 후에 플로우를 실행하여, 동일 사이클에서 복수의 처리가 가능한 PA 일치 검출 처리를 행함으로써 회로의 아이들 기간을 적게 할 수 있다.
10: 프로세서 코어 13: 레지스터
60: 파이프라인 선택부 61: 제1 우선 제어 회로
62: 제2 우선 제어 회로 63: MO 포트
64: LD 포트 66: PF 포트
70: 제1 파이프라인 80: 제2 파이프라인
90: L2 캐시 컨트롤러 100: 연산 처리 장치
110: L2 캐시 RAM 120: L2 데이터 RAM
140: L2 태그 RAM 160: 로드 버퍼
170: 히트 버퍼 220: 주기억 장치

Claims (8)

  1. 주기억 장치에 접속되는 연산 처리 장치에 있어서,
    주기억 장치에 저장되는 데이터의 일부를 저장하는 캐시 메모리인 제1 기억부와,
    주기억 장치에 저장되는 데이터를 제1 기억부에 저장하는 명령을 출력하는 연산 처리부와,
    명령을 수신하고, 제1 기억부가 주기억 장치로부터 명령의 대상 데이터를 수신할 때까지 명령을 저장하는 로드 버퍼인 제2 기억부와,
    연산 처리부로부터 명령을 수신하고, 명령의 대상 데이터가 제1 기억부에 저장되어 있는 경우, 대상 데이터를 제1 기억부로부터 판독하여 연산 처리부에 출력하는 한편, 명령의 대상 데이터가 제1 기억부에 저장되지 않고 명령의 대상 데이터와 동일한 데이터를 대상으로 하는 명령이 제2 기억부에 없는 경우, 명령을 주기억 장치에 출력하는 제1 제어부와,
    연산 처리부로부터 명령을 수신하고, 명령의 대상 데이터와 동일한 데이터를 대상으로 하는 명령이 제2 기억부에 저장되어 있는 경우, 명령에 의한 주기억 장치로부터 대상 데이터를 판독하는 처리를 완료하는 제2 제어부
    를 갖는 것을 특징으로 하는 연산 처리 장치.
  2. 제1항에 있어서, 제2 제어부는, 제1 제어부가 제1 제어부에서 수신한 명령과 제2 기억부에 저장되는 명령의 일치를 확인하지 않는 사이클에서, 제2 제어부가 제1 제어부에서 수신한 명령과 제2 기억부에 저장되는 명령의 일치를 확인하는 것인 연산 처리 장치.
  3. 제1항에 있어서, 제1 제어부는, 제1 기억부에 저장되는 데이터의 판독 사이클과 상이한 사이클에서, 제1 기억부에 저장되는 데이터의 기록을 실행하는 것인 연산 처리 장치.
  4. 제1항에 있어서, 제1 기억부는, 각각이 메모리 뱅크 분할된 제3 기억부 및 제4 기억부를 갖고,
    제2 기억부는, 제3 기억부에 저장되는 데이터를 대상으로 하는 명령을 저장하는 제5 기억부와, 제4 기억부에 저장되는 데이터를 대상으로 하는 명령을 저장하는 제6 기억부를 갖고,
    제1 제어부는, 제3 기억부에 저장되는 데이터의 판독 사이클과 동일한 사이클에서, 제5 기억부에 저장되는 데이터의 기록을 실행하는 것인 연산 처리 장치.
  5. 제1항에 있어서, 제1 제어부에 의한 명령의 완료 통지와, 제2 제어부에 의한 명령의 완료 통지를 동일한 사이클에서 행하는 연산 처리 장치.
  6. 제1항에 있어서, 연산 처리부로부터 명령을 수신하고, 제1 제어부 및 제2 제어부에 명령을 출력하는 제3 제어부를 갖고,
    명령의 대상 데이터와 동일한 데이터를 대상으로 하는 명령이 제2 기억부에 없는 경우, 제2 제어부는 명령에 의한 주기억 장치로부터 판독하는 처리를 중지하고,
    제3 제어부는, 제2 제어부가 명령을 중지 또는 처리중인 경우, 명령을 제2 제어부에는 출력하지 않고, 명령을 제1 제어부에 출력하는 것인 연산 처리 장치.
  7. 제6항에 있어서, 제3 제어부는, 명령을 제1 제어부와 제2 제어부에 출력하고, 명령을 처리하는 제어 신호를 제1 제어부 또는 제2 제어부에 출력함으로써, 제1 제어부 또는 제2 제어부에 명령의 처리를 실행시키는 것인 연산 처리 장치.
  8. 제1항에 있어서, 제1 제어부가 제1 기억부에서의 명령이 대상으로 하는 데이터가 존재하는 것을 검출한 경우, 제1 제어부는 검출된 데이터의 어드레스를 제2 기억부에 저장하고,
    명령의 대상 데이터의 어드레스와 제2 기억부에 저장된 검출된 데이터의 어드레스가 동일한 경우, 제2 제어부는 명령에 의한 주기억 장치로부터 판독하는 처리를 완료하는 것인 연산 처리 장치.
KR1020127016301A 2009-12-25 2009-12-25 연산 처리 장치 KR101402560B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2009/071594 WO2011077549A1 (ja) 2009-12-25 2009-12-25 演算処理装置

Publications (2)

Publication Number Publication Date
KR20120086363A KR20120086363A (ko) 2012-08-02
KR101402560B1 true KR101402560B1 (ko) 2014-05-30

Family

ID=44195110

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127016301A KR101402560B1 (ko) 2009-12-25 2009-12-25 연산 처리 장치

Country Status (6)

Country Link
US (1) US20120260056A1 (ko)
EP (1) EP2518632A4 (ko)
JP (1) JP5482801B2 (ko)
KR (1) KR101402560B1 (ko)
CN (1) CN102687128B (ko)
WO (1) WO2011077549A1 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5971036B2 (ja) * 2012-08-30 2016-08-17 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US20140201326A1 (en) 2013-01-16 2014-07-17 Marvell World Trade Ltd. Interconnected ring network in a multi-processor system
US20140223419A1 (en) * 2013-02-04 2014-08-07 Kabushiki Kaisha Toshiba Compiler, object code generation method, information processing apparatus, and information processing method
KR102008412B1 (ko) * 2013-03-04 2019-08-08 에스케이하이닉스 주식회사 반도체 장치 및 이 반도체 장치를 포함하는 마이크로프로세서, 프로세서, 시스템, 데이터 저장 시스템 및 메모리 시스템
KR102043727B1 (ko) * 2013-03-04 2019-12-02 에스케이하이닉스 주식회사 반도체 장치 및 그 제조 방법, 이 반도체 장치를 포함하는 마이크로 프로세서, 프로세서, 시스템, 데이터 저장 시스템 및 메모리 시스템
KR102092772B1 (ko) * 2013-03-27 2020-03-24 에스케이하이닉스 주식회사 반도체 장치 및 그 제조 방법, 이 반도체 장치를 포함하는 마이크로 프로세서, 프로세서, 시스템, 데이터 저장 시스템 및 메모리 시스템
US9865806B2 (en) 2013-06-05 2018-01-09 SK Hynix Inc. Electronic device and method for fabricating the same
US10490741B2 (en) 2013-06-05 2019-11-26 SK Hynix Inc. Electronic device and method for fabricating the same
KR102025256B1 (ko) * 2013-07-25 2019-09-26 에스케이하이닉스 주식회사 전자 장치 및 그 제조 방법
US9933841B2 (en) * 2014-04-17 2018-04-03 Arm Limited Reuse of results of back-to-back micro-operations
DE202014006031U1 (de) * 2014-07-18 2015-10-27 Neoperl Gmbh Schlauchanschluss
JP6569347B2 (ja) * 2015-07-16 2019-09-04 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP6468121B2 (ja) * 2015-08-17 2019-02-13 富士通株式会社 演算処理装置および演算処理装置の制御方法
US10896138B2 (en) * 2016-05-27 2021-01-19 Apple Inc. Dynamically controlling random access memory retention in a wireless device
CN106250348B (zh) * 2016-07-19 2019-02-12 北京工业大学 一种基于gpu访存特性的异构多核架构缓存管理方法
US10606599B2 (en) * 2016-12-09 2020-03-31 Advanced Micro Devices, Inc. Operation cache

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070185049A1 (en) 2001-05-18 2007-08-09 Sirna Therapeutics, Inc. RNA interference mediated inhibition of histone deacetylase (HDAC) gene expression using short interfering nucleic acid (siNA)
KR20080063484A (ko) * 2005-10-31 2008-07-04 후지쯔 가부시끼가이샤 연산 처리 장치, 정보 처리 장치, 및 연산 처리 장치의메모리 액세스 방법
WO2009104240A1 (ja) * 2008-02-18 2009-08-27 富士通株式会社 演算処理装置および演算処理装置の制御方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05143451A (ja) * 1991-11-20 1993-06-11 Kisaburo Nakazawa データ処理装置
US6317810B1 (en) * 1997-06-25 2001-11-13 Sun Microsystems, Inc. Microprocessor having a prefetch cache
JP3512678B2 (ja) 1999-05-27 2004-03-31 富士通株式会社 キャッシュメモリ制御装置および計算機システム
JP2003162446A (ja) * 2001-11-27 2003-06-06 Nec Electronics Corp マイクロコンピュータ
JP4575065B2 (ja) 2004-07-29 2010-11-04 富士通株式会社 キャッシュメモリ制御装置、キャッシュメモリ制御方法、中央処理装置、情報処理装置、中央制御方法
JP4691335B2 (ja) * 2004-07-30 2011-06-01 富士通株式会社 記憶制御装置、中央処理装置、情報処理装置及び記憶制御装置の制御方法
JP4504132B2 (ja) * 2004-07-30 2010-07-14 富士通株式会社 記憶制御装置、中央処理装置、情報処理装置及び記憶制御装置の制御方法
US20070186049A1 (en) * 2006-02-03 2007-08-09 International Business Machines Corporation Self prefetching L2 cache mechanism for instruction lines
JP4574712B2 (ja) * 2006-02-28 2010-11-04 富士通株式会社 演算処理装置、情報処理装置及び制御方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070185049A1 (en) 2001-05-18 2007-08-09 Sirna Therapeutics, Inc. RNA interference mediated inhibition of histone deacetylase (HDAC) gene expression using short interfering nucleic acid (siNA)
KR20080063484A (ko) * 2005-10-31 2008-07-04 후지쯔 가부시끼가이샤 연산 처리 장치, 정보 처리 장치, 및 연산 처리 장치의메모리 액세스 방법
JP4160589B2 (ja) 2005-10-31 2008-10-01 富士通株式会社 演算処理装置,情報処理装置,及び演算処理装置のメモリアクセス方法
WO2009104240A1 (ja) * 2008-02-18 2009-08-27 富士通株式会社 演算処理装置および演算処理装置の制御方法

Also Published As

Publication number Publication date
JP5482801B2 (ja) 2014-05-07
KR20120086363A (ko) 2012-08-02
EP2518632A4 (en) 2013-05-29
WO2011077549A1 (ja) 2011-06-30
JPWO2011077549A1 (ja) 2013-05-02
CN102687128B (zh) 2014-12-10
US20120260056A1 (en) 2012-10-11
CN102687128A (zh) 2012-09-19
EP2518632A1 (en) 2012-10-31

Similar Documents

Publication Publication Date Title
KR101402560B1 (ko) 연산 처리 장치
US7707397B2 (en) Variable group associativity branch target address cache delivering multiple target addresses per cache line
US5941981A (en) System for using a data history table to select among multiple data prefetch algorithms
US6157993A (en) Prefetching data using profile of cache misses from earlier code executions
US8458408B2 (en) Cache directed sequential prefetch
US6681295B1 (en) Fast lane prefetching
JP3659340B2 (ja) 命令履歴キャッシングを使用して推測的に命令を実行する回路、製品、およびそのための方法
US6088789A (en) Prefetch instruction specifying destination functional unit and read/write access mode
EP1555611B1 (en) Microprocessor and apparatus for performing fast speculative pop operation from a stack memory cache
EP0795828A2 (en) Dynamic set prediction method and apparatus for a multi-level cache system
US7191291B2 (en) Microprocessor with variable latency stack cache
US20040139281A1 (en) Apparatus and method for efficiently updating branch target address cache
KR20150016278A (ko) 캐시 및 변환 색인 버퍼를 갖는 데이터 처리장치
JPH10232827A (ja) 先取りキャッシュ書戻しの方法と装置
CN117421259A (zh) 用飞行中预取服务于cpu需求请求
US5900012A (en) Storage device having varying access times and a superscalar microprocessor employing the same
US8549228B2 (en) Processor and method of control of processor
US11797308B2 (en) Fetch stage handling of indirect jumps in a processor pipeline
US6877069B2 (en) History-based carry predictor for data cache address generation
US7136990B2 (en) Fast POP operation from RAM cache using cache row value stack
JP2001344152A (ja) キャッシュメモリ装置
JP2010191754A (ja) キャッシュ記憶装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee