KR20050116810A - 데이터 처리 시스템, 프리패치 방법 및 반도체 수단 - Google Patents

데이터 처리 시스템, 프리패치 방법 및 반도체 수단 Download PDF

Info

Publication number
KR20050116810A
KR20050116810A KR1020057016537A KR20057016537A KR20050116810A KR 20050116810 A KR20050116810 A KR 20050116810A KR 1020057016537 A KR1020057016537 A KR 1020057016537A KR 20057016537 A KR20057016537 A KR 20057016537A KR 20050116810 A KR20050116810 A KR 20050116810A
Authority
KR
South Korea
Prior art keywords
data
cache
memory
location
prefetch
Prior art date
Application number
KR1020057016537A
Other languages
English (en)
Inventor
에이즌트호벤 요세푸스 티 제이 반
마티즌 제이 루텐
에버트-쟌 디 폴
Original Assignee
코닌클리즈케 필립스 일렉트로닉스 엔.브이.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 코닌클리즈케 필립스 일렉트로닉스 엔.브이. filed Critical 코닌클리즈케 필립스 일렉트로닉스 엔.브이.
Publication of KR20050116810A publication Critical patent/KR20050116810A/ko

Links

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
    • 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
    • G06F12/12Replacement control

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)

Abstract

차후의 I/O 동작을 예상하는 것 대신에, 더 사용되지 않을 것이라 예상되는 캐싱된 데이터의 제거를 예상하고, 캐시에서 제거되는 데이터를 대체하기 위해 주 메모리로부터 데이터가 패치된다. 따라서, 먼저, 더 사용되지 않을 것이라 예상되는 데이터를 포함하는 캐시 메모리 내의 위치를 식별하고, 그 다음, 캐시 메모리 내의 상기 위치를 다시 채우기 위해 새로운 데이터를 요청하기 위해서 프리패치 동작을 행한다. 그러므로, 데이터 처리 시스템은 스트리밍 데이터를 처리하기 위한 적어도 하나의 프로세서(12)와, 복수의 캐시 블록(210)을 갖춘 적어도 하나의 캐시 메모리(200)와, 상기 캐시 메모리(200) 내로 데이터를 프리패치 하기위한 적어도 하나의 제어기(300)를 포함하되,상기 캐시 메모리(200) 중 하나는 각각의 상기 프로세서(12)에 연관되고, 상기 캐시 제어기(300) 중 하나는 각각의 상기 캐시 메모리(200)에 연관된다. 상기 캐시 제어기(300)는 패널티 없이 제거될 것이라 예상되는 제 1 데이터를 포함하는 적어도 하나의 위치를 상기 캐시 메모리(200) 내에서 식별하기 위한 판정 수단(350)과, 상기 위치에 맞는 제 2 데이터로 상기 위치에서의 상기 제 1 데이터를 대체하기 위한 프리패치 동작을 발행하기 위한 프리패치 수단(320)을 포함한다.

Description

데이터 처리 시스템, 프리패치 방법 및 반도체 수단{DATA PROCESSING SYSTEM WITH PREFETCHING MEANS}
본 발명은 데이터 흐름 애플리케이션을 처리하도록 최적화된 데이터 처리 시스템, 데이터 흐름 애플리케이션을 처리하도록 최적화된 데이터 처리 환경에서 캐시 메모리 내로 데이터를 프리패치(prefetching)하는 방법 및 데이터 흐름 애플리케이션을 위해 최적화된 데이터 처리 환경에서 사용하기 위한 반도체 수단에 관한 것이다.
데이터 처리 시스템을 위한 특히, 데이터 흐름 애플리케이션형 고선명 디지털 TV, 시간 시프트 기능이 있는 셋톱 박스, 3D 게임, 비디오 회의, MPEG-4 애플리케이션 등에 제공되는 설계 노력은 이러한 애플리케이션에 대한 요구의 증가로 인해 최근에 증가되어 왔다.
스트림 처리에서, 데이터 스트림에 관한 연속 동작은 서로 다른 프로세서에 의해 수행된다. 예를 들어, 제 1 스트림은, 제 1 프로세서에 의해 처리되어 8 × 8 픽셀 블록의 DCT(Discrete Cosine Transformation) 유효계수의 제 2 스트림 블록을 생성하는 영상의 픽셀값으로 구성될 수 있다. 제 2 프로세서는 DCT 유효계수의 블록을 처리하여, DCT 유효계수의 각 블록에 대해 선택되고 압축된 유효계수의 블록의 스트림을 생성할 수 있다.
데이터 스트림 처리를 달성하기 위하여, 다수의 프로세서가 제공되며, 각각의 프로세서는 데이터 객체의 스트림 중 다음 데이터 객체로부터의 데이터를 이용 및/또는 이러한 스트림 내의 다음 데이터 객체를 생성할 때마다, 특정 동작을 반복적으로 수행할 수 있다. 스트림은 하나의 프로세서로부터 또 다른 프로세서로 전달되어서, 제 1 프로세서에 의해 생성되는 스트림이 제 2 프로세서에 의해 처리될 수 있는 식이다. 제 1 프로세서로부터 제 2 프로세서로 데이터를 전달하는 일 메카니즘은, 제 1 프로세서에 의해 생성되는 데이터 블록을 메모리 내로 기록하는 것이다. 네트워크 내의 데이터 스트림이 버퍼링된다. 각 버퍼는 단 하나의 기록기와 하나 이상의 판독기를 갖춘 FIFO로 구현된다. 이러한 버퍼링으로 인해, 기록기 및 판독기는 채널 상에서 개별적인 판독 및 기록 동작을 상호 동기화될 필요가 없다. 전형적인 데이터 처리 시스템은 단일의 애플리케이션 전용인 애플리케이션 특정적 서브시스템뿐만 아니라 완전히 프로그램 가능한 프로세서의 혼합을 각각 포함한다.
이러한 구조의 예는 2002년 7-8월 Rutten 등에 의한 "Eclipse : A Heterogeneous Multiprocessor Architecture for Flexible Media Processing" IEEE Design and Test of Computers : Embedded System 39-50쪽에 개시되어 있다. 필요한 처리 애플리케이션은 칸 프로세스 네트워크, 즉, 단방향 데이터 스트림에 의해 데이터를 교환하는 동시 실행 작업의 세트로서 특정된다. 각 애플리케이션 작업은 특정 프로그램 가능 프로세서 또는 전용 프로세서 중 하나에 매핑된다. 전용 프로세서는 약간 프로그램 가능한 코프로세서에 의해 구현된다. 각 코프로세서는 단일 칸 네트워크로부터 또는 복수의 네트워크로부터 복수 개의 작업을 시분할 방식으로 실행할 수 있다. 예컨대, 매체 처리 애플리케이션의 스트리밍 특성에 의해, 고도로 국부적인 참조, 즉, 이웃 데이터의 메모리 어드레스 연속 참조가 생긴다. 또한, 분산형 코프로세서 쉘은 코프로세서와, 통신 네트워크, 즉, 버스와 주 메모리 사이에 구현된다. 다수의 시스템 레벨 문제와 유사한 멀티테스킹 스트림 동기화 및 데이터 전송을 흡수하기 위해 사용된다. 이러한 분산형 특성으로 인해, 쉘은 코프로세서 가까이 구현될 수 있고, 코프로세서에 연관된다. 각 쉘에서, 쉘에 연관되어 있는 코프로세서 상에 매핑되는, 작업에서 발생할 수 있는 스트림을 처리하기 위해 필요한 모든 데이터는 쉘의 스트림 테이블에 저장된다.
쉘은 메모리에 판독 또는 기록할 때 발생하는 데이터 액세스 잠복을 감소시키기 위해 캐시를 포함한다. 다른 처리 단계를 실행하기 위해 필요한 데이터가 캐싱되고, 즉, 주 메모리와 별개이고, 저장된 데이터를 이용하는 프로세서에 가장 가까이 배치되는 보다 작은 메모리에 저장된다. 즉, 캐시는 중간 저장소 설비로서 사용된다. 메모리 액세스 잠복을 감소시킴으로써, 프로세서의 처리 속도가 증가될 수 있다. 데이터 워드가, 프로세서에 의해서 그 주 메모리부터가 아닌 그 캐시로부터 액세스되면, 액세스 시간은 상당히 감소될 것이다.
데이터 액세스 잠복을 더 감소시키기 위해, 프리패치 방법은 곧 나올 입력 출력 동작을 예상하기 위해 사용된다. 여기서, 프리패치란, 이러한 데이터에 대한 요청이 프로세서로부터 수신되기 전에, 데이터가 주 메모리로부터 캐시로 캐싱 또는 전달되는 것을 의미한다.
일반적으로, 프리패치 방법을 다룰 때, 두 가지의 주요 문제가 발생한다. 먼저, 메모리에의 다른 입/출력 액세스를 예상하기 위해서, 일련의 입/출력(I/O) 동작의 어드레스를 관찰함으로써 데이터 처리의 액세스 패턴은 인식되어야 하고, 그 후, 이러한 동작을 조사한 후에, 메모리에 대한 다음 I/O 액세스를 예상하기 위해 보간을 행해야 한다. 스트리밍 데이터 애플리케이션인 경우에, 시스템 내의 다른 프로세서 또는 스트림이 상기 메모리 내의 데이터를 액세스할 수 있어서 다른 스트림으로부터 인터리브되는 I/O 동작은 정확한 예상을 방해하게 된다는 사실로 인해 이러한 보간이 매우 복잡하게 된다.
둘째로, 다음 처리 단계 중에 어떤 데이터 워드가 처리되는지 예상하고, 이러한 특정 데이터 워드가 캐시 내에 현재 저장되어 있지 않으면, 메모리로부터 캐시 내로 패치, 즉, 전송 또는 검색되어야 한다. 이러한 프리패치되는 데이터 워드가 캐시로 전달되어 캐시에 저장되어, 그 위치에서 현재 저장되어 있으며, 여전히 중요한, 즉 차후의 처리 단계에서 필요로 하는 데이터 워드를 대체하는 경우가 있다. 이에 따라, 이러한 프리패치 방법은 바람직하지 않은 캐시 미스를 초래하여, 차후의 처리 단계에 필요한 데이터가 삭제될 수 있다.
US 5,590,390호는, 주 메모리가 자기 디스크와 같은 대량 저장소이고, 캐시 메모리가, 이 대량 저장로부터 프리패치된 데이터를 저장하기 위해 사용되는 환경에서의 캐시 프리패치 기술에 관한 것이다. 특히, 정상적으로 캐싱 해제되거나 제거될 수 있는 캐싱된 데이터가 유지 또는 다시 재활용되는 프리패치 방법을 개시한다. 데이터를 캐싱 해제하기 위한 한가지 예는 LRU(least-recently used) 방법으로서, 캐시 메모리 내에 신규 데이터를 위한 공간을 확보하기 위해서 가장 오래전에 사용된 데이터가 제거 또는 캐싱 해제되는 방법이다. 즉, LRU 방법에서는, 가장 긴 시간 동안 액세스되지 않은 데이터 또는 현재 캐싱된 데이터가 어느 데이터인지를 결정한다. 이러한 방법의 결과, 어떤 현재 필요한 캐싱되지 않은 데이터를 캐싱하기 위해서는, 그 데이터가 점유한만큼의 캐시 공간을 재사용할 수 있기 위해서, 어떤 캐싱된 데이터가 캐시로부터 릴리스된다. 또한, 어떤 데이터가 가장 오래 전에 사용되었는지 판단해서 그 보다 높은 잠재적 재사용을 기초로 하여 캐시 내에 유지되어야 하고, 어느 데이터가 재사용될 확률이 가장 적은지 판단해서 데이터에 필요한 프로세서 종류를 마련하기 위해서 캐싱 해제되어야 한다.
실제 프리패치 또는 캐시 어헤드는 프로세서의 다음 처리 단계 중에 사용되는, 캐시 내에 존재하는 다수의 데이터 세그먼트를 결정함으로써 수행된다. 이 수가 초과되면, 주 메모리로부터 데이터를 프리패치할 필요가 없다. 그러나, 이 수가 초과되지 않으면, 프리패치 프로세스가 즉시 개시된다. 프리패치되는 데이터는, 현재 데이터 바로 다음의 데이터, 및 현재 데이터 바로 이전 데이터 중의 하나이다. 통상, 현재 데이터를 후속하는 데이터가 프리패치되는 데이터이다. 이러한 프리패치 방법에 따라, 주 메모리로부터 데이터 세그먼트가 프리패치되는 것을 먼저 판단하고, 그 후, 위에서 설명한 비교적 가장 오래전에 수정된 사용 방법에 의해 결정되는 프리패치된 데이터가 캐시 내에 저장된다. 그러나, 수정된 LRU 방법이 사용되고 있지만, 프로세서가 계속 필요로 하는 캐시 내에 있는 데이터를 덮어씀으로써 캐시 미스의 위험은 여전히 존재한다.
US 5,787,472호에는 캐시 메모리에서 순차 데이터 스트림을 캐싱하는 시스템 및 방법이 개시되어 있다. 특히, 상기 특허는 양 기반 비디오(video-on-amount)를 기초로 하여 다수의 사용자를 만족시키는 분산형 비디오 서버에 관한 것이다. 비디오 데이터는 디스크 상에 저장되지만, 캐시 메모리는 상기 비디오 데이터를 버퍼링하기 위해 사용된다. 소모 프로세스에 의해 데이터 블록이 판독된 후에, 이러한 데이터 블록이 캐시로부터 제거되어야 하는지 판정한다. 먼저, 여유 공간이 있는지 판정하고, 여유 공간이 없는 경우에는 LRU 방법에 따라 적절한 위치가 결정된다.
고 결합성을 갖는 캐시에서는 고 클럭 속도로 캐시를 동작시키는 것이 어렵다. 다른 한편, 저 연관성에 의해서는, 희생 위치를 선택하기 위한 선택의 폭이 좁고, 따라서, 중요한 데이터를 제거시킬 위험이 증가된다. LRU 기반 방법은 이러한 캐시에서는 비효과적이다.
본 발명의 이들 및 다른 측면들은 도면을 참조하여 보다 상세히 설명된다.
도면에서,
도 1은 본 발명에 따른 스트림 기반 처리 시스템 구조의 개략적 블록도,
도 2는 본 발명에 따른 코프로세서, 캐시 및 캐시 제어기의 블록도.
그러므로, 본 발명의 목적은, 중요한 데이터를 제거시키는 것으로 인한 캐시 미스(cache misses)의 발생을 감소시키면서 데이터를 캐시 메모리 내로 프리패치하는 것을 제공하는 것이다.
본 목적은, 청구항 1에 따른 데이터 처리 시스템, 청구항 9에 따른 캐시 메모리 내로 데이터를 프리패치하는 방법 및 청구항 11에 따른 데이터 흐름 애플리케이션을 처리하도록 최적화된 데이터 처리 환경에서 사용하기 위한 반도체 수단에 의해 달성된다.
본 발명은 차후의 I/O 동작을 예상하기보다는, 더 사용되지 않을 것이라 예상되는 캐시 데이터의 제거를 예상하는 개념을 기초로 한다. 다음으로, 주 메모리로부터 데이터가 패치되어 캐시 내의 제거된 데이터를 대체한다. 따라서, 먼저, 더 사용되지 않을 것이라 예상되는 데이터를 포함하는 캐시 메모리 내의 위치(즉, 희생 위치)가 식별되고, 그 다음, 캐시 메모리 내의 상기 위치를 다시 채우기 위해 새로운 데이터를 요청하기 위해서 프리패치 동작을 수행한다.
그러므로, 데이터 처리 시스템은 스트리밍 데이터를 처리하는 적어도 하나의 프로세서(12)와, 복수의 캐시 블록을 갖춘 적어도 하나의 캐시 메모리(200) ― 상기 캐시 메모리(200) 중 적어도 하나는 각각의 상기 프로세서(12)에 연관됨 ― 와, 상기 캐시 메모리(200) 내로 데이터를 프리패치하기 위한 적어도 하나의 캐시 제어기(300) ― 상기 캐시 제어기(300) 중 적어도 하나의 각각의 상기 캐시 메모리(200) 에 연관됨 ― 를 포함한다. 상기 캐시 제어기(300)는 패널티 없이 제거될 것이라 예상되는 제 1 데이터를 포함하는 상기 캐시 메모리(200) 내의 적어도 하나의 위치를 식별하기 위한 판정 수단(350)과, 상기 위치와 맞는 제 2 데이터로 상기 위치에서의 상기 제 1 데이터를 대체하는 프리패치 동작을 발행하기 위한 프리패치 수단(320)을 포함한다. 이에 따라, 캐시 내에서 계속 필요한 캐싱된 데이터를 덮어씀으로써 캐시 미스의 확률이 감소된다.
본 발명의 다른 측면에서, 상기 데이터 처리 시스템은 작업 및 데이터 스트림 ― 서로 다른 스트림이 공유 캐시 자원을 위해 경합함 ― 을 이용하는 데이터 흐름 애플리케이션을 처리하도록 최적화된다.
본 발명의 다른 측면에서, 특정의 사전 결정된 범위의 어드레스에 제한된 위치 식별이 수행된다.
본 발명의 바람직한 측면에서, 판정 수단은 캐시 메모리 내의 캐시 블록에서 상기 제 1 데이터의 마지막 데이터 워드가 어드레싱되었는지 판정하고, 상기 프리패치 수단은 상기 캐시 블록 내의 상기 제 1 데이터 워드를 대체하는 제 2 데이터 워드를 메모리로부터 프리패치한다.
이러한 방법이 스트리밍 데이터를 처리하도록 설계되는 데이터 처리 시스템에서 수행되면, 단일의 스트림으로부터의 후속하는 판독 동작은 메모리 내의 연속 적인 선형 범위에 대응된다. 그러므로, 캐시 블록 내의 마지막 데이터 워드가 판독 동작에 의해 액세스되었으면, 그 캐시 블록 내의 모든 데이터 워드가 사용되었고, 프로세서의 다음 동작에서 필요하지 않다고 가정할 수 있다. 이에 따라, 메모리 공간 및 캐시 블록은, 후속 동작에 사용될 주 메모리로부터의 데이터를 위해 사용될 수 있다. 이제, 메모리 내의 새로운 위치 또는 어드레스로부터 데이터 블록이 프리패치되며, 이러한 데이터 블록은 제거된 캐시 데이터의 캐시 위치에 맞아야 한다.
본 발명의 다른 측면에서, 상기 판정 수단은, 상기 캐시 블록 내의 제 1 데이터 워드 중에 존재하는 데이터 워드를 무효화하고, 상기 프리패치 수단은, 상기 캐시 블록 내의 상기 무효화된 제 1 데이터 워드에 맞는 제 2 데이터 워드를 메모리로부터 프리패치한다.
이에 따라, 프리패치된 제 2 데이터 블록이 캐시 메모리에 도착하면, 제거된 데이터의 위치에 자동으로 저장될 것이다. 스트리밍 데이터의 액세스가 선형 순서로 수행되기 때문에 가까운 장래에 이 프리패치된 데이터를 판독 동작에 의해 액세스할 것이라 예상된다.
다른 바람직한 측면에서, 상기 메모리로부터 무효화된 데이터가 다시 로딩된다. 이는, 스트리밍 데이터에서, 가까운 장래에 이 데이터를 판독 동작에 의해 액세스할 것이라 예상되기 때문에, 이는 데이터 액세스의 잠복을 감소시킬 것이다.
본 발명은 또한 복수의 캐시 블록을 포함하는 캐시 메모리 내로 데이터를 프리패치하는 방법에 관한 것이다. 패널티 없이 제거될 것이라 예상되는 제 1 데이터를 포함하는 적어도 하나의 위치가 상기 캐시 메모리(200) 내에서 식별된다. 그 후, 프리패치 동작은, 상기 제 1 위치에서의 상기 제 1 데이터를, 상기 선택된 위치에 맞는 제 2 데이터로 대체함으로써 발행된다.
또한, 본 발명은 작업 및 데이터 스트림 ― 서로 다른 스트림들이 공유 캐시 자원을 위해 경합됨 ― 을 이용하여 데이터 흐름 애플리케이션을 처리하도록 최적화된 데이터 처리 환경에서 사용하기 위한 반도체 수단에 관한 것이다. 상기 장치는 복수의 캐시 블록을 갖춘 캐시 메모리(200)와, 상기 캐시 메모리(200) 내로 데이터를 프리패치하기 위한 것으로, 상기 캐시 메모리(200)에 연관되는 캐시 제어기(300)를 포함한다. 상기 캐시 제어기(300)는, 패널티 없이 제거될 것이라 예상되는 제 1 데이터를 포함하는 적어도 하나의 위치(L)를 상기 캐시 메모리(200) 내에서 식별하는 판정 수단(350)과, 상기 위치에서의 상기 제 1 데이터를, 상기 위치에 맞는 제 2 데이터로 대체하는 프리패치 동작을 발행하는 프리패치 수단(320)을 포함한다.
본 발명의 다른 측면들은 종속항에 설정되어 있다.
도 1은 본 발명의 바람직한 실시예에 따라 데이터 객체의 스트림을 처리하는 처리 시스템을 도시한다. 본 시스템은 상이한 계층, 즉, 계산 계층(1), 통시 지원 계층(2) 및 통신 네트워크 계층(3)으로 나뉠 수 있다. 계산 계층(1)은 CPU(11) 및 2개의 프로세서 또는 코프로세서(12a, 12b)를 포함한다. 이는 예시일 뿐이며, 본 시스템 내로 보다 많은 개수의 프로세서가 포함될 수 있다는 것이 명백할 것이다. 통신 지원 계층(2)은 CPU(11)와 연관된 쉘(21)과, 프로세서(12a, 12b)와 연관된 쉘(22a, 22b)을 각각 포함한다. 통신 네트워크 계층(3)은 통신 네트워크(31) 및 메모리(32)를 포함한다.
프로세서(12, 12b)는 바람직하게는 전용 각각 제한된 범위의 처리 기능을 수행하도록 특수화된 프로세서이다. 각각의 프로세서는 스트림의 연속적인 데이터 객체에 동일한 처리 동작을 반복적으로 적용하도록 구성된다. 프로세서(12a, 12b)는 서로 다른 작업 또는 기능, 예컨대, 가변 길이 디코딩, 실행 길이 디코딩, 움직임 보상, 영상 크기 조정 또는 DCT 변환을 각각 수행할 수 있다. 동작시, 각각의 프로세서(12a, 12b)는 하나 이상의 데이터 스트림에 입각하여 동작을 실행한다. 이 동작에는, 예를 들어, 스트림을 수신하여 또 다른 스트림을 생성하거나, 새로운 스트림을 생성하지 않고 스트림을 수신하거나, 스트림을 수신하지 않고 스트림을 생성하거나, 수신한 스트림을 수정하는 것이 포함될 수 있다. 프로세서(12a, 12b)는 다른 프로세서(12b, 12a) 또는 CPU(11)에 의해 생성되는 데이터 스트림 또는 자체 생성한 스트림까지 처리할 수 있다. 스트림은 상기 메모리(32)를 통해서 프로세서(12a, 12b)로부터 그리고 프로세서로 전달되는 연속적인 데이터 객체를 포함한다.
쉘(22a, 22b)은 통신 계층인 통신 네트워크 계층에 대한 제 1 인터페이스를 포함한다. 이러한 계층은 모든 쉘에 대해 똑같거나 일반적이다. 또한, 쉘(22a, 22b)은, 쉘(22a, 22b)이 연관되어 있는 프로세서(12a, 12b)에 대한 제 2 인터페이스를 각각 포함한다. 제 2 인터페이스는 작업 레벨 인터페이스이고, 상기 프로세서(12a, 12b)의 특수 필요성을 처리할 수 있기 위하여, 연관된 프로세서(12a, 12b)에 대해 최적화된다. 이에 따라, 쉘(22a, 22b)은 제 2 인터페이스로서 프로세스 전용 인터페이스를 가지지만, 쉘의 전체 구조는 특수 애플리케이션에 대해 파라미터화 및 개조를 가능하게 하면서, 전체 시스템 구조에서 쉘의 재사용을 용이하게 하기 위해서 모든 프로세서에 대해 일반적이고 균일하다.
쉘(22a, 22b)은 데이터 전송을 위한 판독/기록 장치, 동기화 장치, 작업 교환 장치를 포함한다. 이들 3개의 장치는 마스터/슬레이브 기반의 연관된 프로세서와 통신하며, 프로세서가 마스터로서 동작한다. 이에 따라, 각각 3개의 장치는 프로세서로부터의 요청에 의해 초기화된다. 바람직하게, 프로세서와 3개 장치간의 통신은 논쟁 값을 전달하고 요청한 값이 리턴되는 것을 대기하기 위한 요청-확인 응답 핸드쉐이크 메카니즘에 의해 구현된다. 그러므로, 통신이 차단되고, 즉, 제어의 각각의 스레드가 그 완전성을 대기한다.
쉘(22a, 22b)이 분산되어서, 각각이 자신이 연관되어 있는 프로세서(12a, 12b)에 가까이 구현될 수 있게 된다. 각각의 쉘은 자싱의 프로세서에 매팽되는 작업과 함께 일어나기 쉬운 스트림에 대한 구성 데이터를 국부적으로 포함하고, 이 데이터를 적절하게 처리하기 위한 전체 제어 로직을 국부적으로 구현한다. 이에 따라, 각각의 스트림에 대한, 또는 다르게는 각각의 접속 지점에서 필드의 행을 포함하는 로컬 스트림 테이블이 쉘(22a, 22b) 내에 구현될 수 있다.
또한, 쉘(22)은 데이터 전송, 즉, 판독 동작 및 기록 동작을 위한 데이터 캐시를 프로세서(12)와, 통신 네트워크(31) 및 메모리(32) 사이에 포함한다. 쉘(22) 내의 데이터 캐시의 구현에 의해, 데이터 버스 폭의 투명한 전달, 전역 상호접속, 즉, 통신 네트워크(31) 상에서의 구성 제한의 분석, 및 전역 상호접속에서의 I/O 연산의 개수의 감소가 달성된다.
바람직하게, 쉘(22)은 판독 및 기록 인터페이스에 캐시를 포함하지만, 이러한 캐시는 애플리케이션 기능의 관점으로부터 분간이 힘들다. 캐시는 프로세서 판독 및 기록 포트를 통신 네트워크(3)의 전역 산호접속으로부터 결합 해제하는 데 중요한 역할을 한다. 이러한 캐시는 속도, 전력 및 면적에 관한 시스템 성능에 관해 주요한 영향을 미친다.
도 1에 따른 구조에 관한 세부사항들에 대해서는 2002년 7-8월, Rutten 등에 의한 "Eclipse : A Heterogeneous Multiprocessor Architecture for Flexible Media Processing", IEEE Design and Test of Computers : Embedded Systems, pp. 39-50쪽을 참조하면 된다.
도 2는 도 1에 따른 구조의 일부를 도시한다. 특히, 프로세서(12b), 쉘(22b), 버스(31) 및 메모리(32)가 도시되어 있다. 쉘(22b)은 캐시 메모리(200) 및 캐시 제어기(300)를 그 데이터 전송 장치의 부분으로서 포함한다. 캐시 제어기(300)는 판정 수단(350), 프리패치 수단(320) 및 선택적으로 마킹 수단(360)을 포함한다. 캐시 메모리(200)는 서로 다른 캐시 블록(210)으로 분할될 수 있다.
시스템 내의 프리패치 동작은 쉘(22)에 의해 제어되지만, 코프로세서(12b)로부터의 판독 요청 및 무효 요청 중 하나에 의해 개시된다. 코프로세서(12b)가 스트리밍 데이터를 처리하도록 설계되기 때문에, 단일의 스트림을 처리하는 것으로부터 나오는 코프로세서(12b)로부터의 후속 판독 요청은 연속적인, 선형 메모리 어드레스 범위에서 수행되는 것을 가정한다.
판정 수단(350)은, 캐시 블록(210) 내의 마지막 데이터 워드가 프로세서(12b)로부터의 판독 동작에 의해 액세스되었는 지를 판정한다. 마지막 데이터 워드가 액세스된 경우이면, 캐시블록(201) 내의 모든 데이터 워드가 선행 판독 동작 중에 액세스되어서, 상기 캐시 블록(210) 내의 모든 데이터 워드는 곧 나올 처리 단계에서 더 이상 필요로 하지 않는다고 가정할 수 있다. 이에 따라, 이러한 데이터 워드는 제거될 수 있고, 상기 프리패치 수단(320)은 메모리(32)로부터 데이터 블록을 프리패치한다. 새롭게 프리패치되는 데이터 블록은 캐시 블록(210)에 맞아야 하고, 즉, 프리패치되는 데이터 블록은 제거될 수 있는 데이터 블록과 동일한 크기여야 한다. 특히, 프리패치되는 데이터 블록은, 제거되는 데이터 블록의 상기 메모리(32) 내의 상기 제 1 데이터의 이전 어드레스보다 다음 높은 어드레스인 어드레스에서 상기 메모리(32) 내의 위치로부터 검색된다. 즉, 프리패치되는 데이터 블록은 캐시 블록(210)의 저장 공간 및 제거되는 데이터 블록의 공간에 맞아야 한다. 추가적으로, 프리패치 동작은 캐시 조직의 제한에 따라 수행되어야 한다.
선택적으로, 판정 수단(350)은, 캐시 블록(210) 내의 마지막 데이터 워드가 프로세서(12b)로부터 판독 동작에 의해 액세스되었다고 판단하면, 캐시 블록(210) 내의 모든 데이터 워드는 제거될 수 있고, 그러므로, 상기 마킹 수단(360)에 의해 제거되도록 표시될 수 있다. 그 후에, 상기 프리패치 수단(320)은 메모리(32)로부터 데이터 블록을 프리패치한다. 새롭게 프리패치된 데이터 블록은 캐시 블록(210) 내에 맞아야 하고, 즉, 프리패치되는 데이터 블록은, 제거되도록 표시되는 데이터 블록과 동일한 크기여야 한다. 특히, 프리패치되는 데이터 블록은 상기 메모리(32) 내의 위치 중, 상기 메모리(32) 내에서 제거되도록 표시된 상기 제 1 데이터의 이전 어드레스보다 다음으로 높은 어드레스인 어드레스에서 검색된다.
본 발명에 따른 프리패치 방법은, 상기 메모리(32)로부터 프리패치되는 데이터 블록이 검색되고, 캐시 메모리(200)에 도착하자마자, 프리패치되는 데이터 블록이 캐시 블록(210)에, 즉, 제거되는 데이터 블록의 위치에 자동으로 저장되기 때문에 유리하다. 스트리밍 데이터에 입각하여 데이터 처리가 실행되고, 대응하는 판독 동작 및 메모리 액세스가 선형으로 발생한다는 사실에 기인하여 상기 프로세서(12b)가 다음으로 나오는 처리 단계에서 프리패치된 데이터 블록을 액세스할 것이라 예상되기 때문에 이러한 프리패치 동작이 정당화된다.
상기 캐시 메모리(200) 내에서 제거될 수 있는 데이터를 결정하기 위한 다른 방법은, 무효화된 데이터에 대한 표시를 하는 것이다. 각종 프로세서를 포함하는 도 1에 따른 데이터 처리 시스템에서, 각각의 프로세서가, 공유 메모리로부터 정확하게 업데이트되는 이러한 데이터 값들만 액세스하는 것을 보장하기 위해 캐시 일관성(cache coherency)을 행하는 것이 필수적이다. 프로세서(12b)가 그 캐시 메모리(200)를 통해 메모리로부터 데이터를 액세스하면, 판독 데이터의 유효성이 확인되어야 한다. 그러나, 데이터의 무효화에 사용되는 방법은 종래 기술로부터 공지되어 있으므로, 본 발명의 요지가 아니다.
판정 수단(350)은 캐시 블록(210)에서 데이터 워드들 중에 존재하는 무효화된 데이터 워드가 있는지를 판정한다. 임의의 무효화된 데이터 워드가 판정 수단(350)에 의해 발견되면, 상기 프리패치 수단(320)은 메모리(32)로부터, 제거된 캐시 데이터, 즉, 무효화된 데이터의 어드레스에 대응하는 메모리(32)로부터 데이터 워드를 프리패치한다. 즉, 프리패치는 상기 캐시 메모리에 무효화된 데이터를 다시 로딩함으로써 수행된다. 이와 다르게, 무효화된 데이터 워드는 다시 로딩되기 전에, 표시 수단(360)에 의해 제거되도록 표시된다.
판독 프로세서가 다음 처리 단계에서, 이러한 데이터, 즉, 무효화된 데이터를 액세스할 것이라 예상되기 때문에, 프리패치 동작이 정당화된다. 또한, 프리패치는 스트림 버퍼의 어드레스 범위 내에 들어오는 캐시 위치에 대해서만 수행된다.

Claims (11)

  1. 데이터 처리 시스템으로서,
    스트리밍 데이터를 처리하기 위한 적어도 하나의 프로세서(12)와,
    복수의 캐시 블록(210)을 구비하며, 각각의 상기 프로세서(12)와 연관되는 적어도 하나의 캐시 메모리(200)와,
    각각의 상기 캐시 메모리(200)에 연관되며, 상기 캐시 메모리(200) 내로 데이터를 프리패치(prefeching)하기 위한 적어도 하나의 캐시 제어기(300)를 포함하되,
    상기 캐시 제어기(300)는,
    패널티(penalty) 없이 제거될 것이라 예상되는 제 1 데이터를 포함하는 상기 캐시 메모리(200) 내의 적어도 하나의 위치를 식별하기 위한 판정 수단(350)과,
    상기 위치에서의 상기 제 1 데이터를 상기 위치에 맞는 제 2 데이터로 대체하기 위한 프리패치 동작을 발행하는 프리패치 수단(320)을 포함하는
    데이터 처리 시스템.
  2. 제 1 항에 있어서,
    상기 데이터 처리 시스템은 작업 및 데이터 스트림을 이용하는 데이터 흐름 애플리케이션을 처리하도록 최적화되며, 여기서 서로 다른 스트림은 공유 캐시 자원을 위해 경합하는
    데이터 처리 시스템.
  3. 제 2 항에 있어서,
    상기 판정 수단(350)은 사전결정된 범위의 어드레스에 제한되는 상기 위치의 식별을 수행하는
    데이터 처리 시스템.
  4. 제 2 항 또는 제 3 항에 있어서,
    상기 판정 수단(350)은 캐시 블록(210) 내에서 상기 제 1 데이터 워드의 마지막 데이터 워드가 액세스되었는 지 판정하고,
    상기 프리패치 수단(320)은 메모리(32)로부터 상기 캐시 블록(210) 내의 상기 제 1 데이터 워드를 대체하는 제 2 데이터 워드를 프리패치하는
    데이터 처리 시스템.
  5. 제 4 항에 있어서,
    상기 프리패치 수단(320)은 상기 메모리(32) 내에서 제 2 어드레스로부터 제 2 데이터 블록의 상기 제 2 데이터 워드를 프리패치하되, 상기 제 2 어드레스는 메모리(32) 내에서 상기 제 1 데이터의 이전 어드레스에 해당되는 제 1 어드레스로보다 다음으로 높은 어드레스이고,
    상기 제 2 데이터 워드는 상기 제 1 데이터의 선택된 위치와 맞는
    데이터 처리 시스템.
  6. 제 2 항에 있어서,
    상기 판정 수단(350)은 상기 캐시 블록(210) 내의 제 1 데이터 워드 중의 데이터 워드를 무효화하고,
    상기 프리패치 수단(320)은 상기 캐시 블록(210) 내에서 상기 무효화된 제 1 데이터 워드의 위치와 맞는 제 2 데이터 워드를 메모리(32)로부터 프리패치하는
    데이터 처리 시스템.
  7. 제 6 항에 있어서,
    상기 제 1 데이터 워드는 상기 메모리(32)로부터 다시 로딩(reloaded)되는
    데이터 처리 시스템.
  8. 제 2 항에 있어서,
    상기 판정 수단(350)은, 상기 캐시 블록(210) 내의 제 1 데이터 워드가 상기 프로세서에 의해 현재 조작되는 데이터 스트림에 속하지 않는지를 판단하고,
    상기 프리패치 수단(320)은 상기 캐시 블록(201) 내의 상기 제 1 데이터 워드의 위치에 맞는 제 2 데이터 워드를 메모리(32)로부터 프리패치하는
    데이터 처리 시스템.
  9. 복수의 캐시 블록(210)을 포함하는 캐시 메모리(200) 내로 데이터를 프리패치하는 방법으로서,
    a) 패널티 없이 제거될 수 있을 것이라 예상되는 제 1 데이터를 포함하는 상기 캐시 메모리(200) 내의 적어도 하나의 위치를 식별하는 단계와,
    b) 상기 위치에 맞는 제 2 데이터로 상기 위치에서의 상기 제 1 데이터를 대체함으로써 프리패치 동작을 발행하는 단계를 포함하는
    프리패치 방법.
  10. 제 9 항에 있어서,
    상기 방법은 작업 및 데이터 스트림을 이용하는 데이터 흐름 애플리케이션을 처리하도록 최적화된 데이터 처리 환경에서 수행되며, 여기서 서로 다른 스트림은 공유 캐시 자원을 위해 경합하고, 상기 캐시 메모리(200)는 복수의 캐시 블록을 포함하는
    프리패치 방법.
  11. 작업 및 데이터 스트림 ― 공유 캐시 자원을 위해 서로 다른 스트림들이 경합함 ― 을 이용하여 데이터 흐름 애플리케이션을 처리하도록 최적화된 데이터 처리 환경에서 사용하기 위한 반도체 수단으로서,
    복수의 캐시 블록(210)을 갖춘 캐시 메모리(200)와,
    상기 캐시 메모리(200)에 연관되어 있으며, 상기 캐시 메모리(200) 내로 데이터를 프리패치하기 위한 캐시 제어기(300)를 포함하되,
    상기 캐시 제어기(300)는,
    패널티 없이 제거될 것이라 예상되는 제 1 데이터를 포함하는 상기 캐시 메모리(200) 내의 적어도 하나의 위치를 식별하기 위한 식별 수단(310)과,
    상기 위치에 맞는 제 2 데이터로 상기 위치에서의 상기 제 1 데이터를 대체하는 프리패치 동작을 발행하기 위한 프리패치 수단(320)을 포함하는
    반도체 수단.
KR1020057016537A 2003-03-06 2004-02-25 데이터 처리 시스템, 프리패치 방법 및 반도체 수단 KR20050116810A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP03100554.9 2003-03-06
EP03100554 2003-03-06

Publications (1)

Publication Number Publication Date
KR20050116810A true KR20050116810A (ko) 2005-12-13

Family

ID=32946917

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057016537A KR20050116810A (ko) 2003-03-06 2004-02-25 데이터 처리 시스템, 프리패치 방법 및 반도체 수단

Country Status (6)

Country Link
US (1) US7526613B2 (ko)
EP (1) EP1604285A2 (ko)
JP (1) JP2006520045A (ko)
KR (1) KR20050116810A (ko)
CN (1) CN1757018B (ko)
WO (1) WO2004079489A2 (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060143401A1 (en) * 2004-12-27 2006-06-29 Jacob Doweck Method and apparatus for prefetching based on cache fill buffer hits
JP2006190389A (ja) 2005-01-06 2006-07-20 Sanyo Electric Co Ltd データ処理用集積回路
US7283418B2 (en) 2005-07-26 2007-10-16 Micron Technology, Inc. Memory device and method having multiple address, data and command buses
JP4846306B2 (ja) * 2005-09-09 2011-12-28 富士通セミコンダクター株式会社 半導体記憶装置及びそれを用いた半導体集積回路システム並びに半導体記憶装置の制御方法
JP4983160B2 (ja) * 2006-09-04 2012-07-25 富士通株式会社 動画像処理装置
US7934058B2 (en) * 2006-12-14 2011-04-26 Microsoft Corporation Predictive caching of assets to improve level load time on a game console
US8433854B2 (en) * 2008-06-25 2013-04-30 Intel Corporation Apparatus and method for cache utilization
US8943273B1 (en) * 2008-08-14 2015-01-27 Marvell International Ltd. Method and apparatus for improving cache efficiency
US8918588B2 (en) * 2009-04-07 2014-12-23 International Business Machines Corporation Maintaining a cache of blocks from a plurality of data streams
US9444737B2 (en) * 2009-04-27 2016-09-13 Intel Corporation Packet data processor in a communications processor architecture
US9076239B2 (en) * 2009-04-30 2015-07-07 Stmicroelectronics S.R.L. Method and systems for thumbnail generation, and corresponding computer program product
CN103077129B (zh) * 2012-12-31 2016-07-13 上海算芯微电子有限公司 信息处理方法与装置
US9280474B2 (en) 2013-01-03 2016-03-08 Intel Corporation Adaptive data prefetching
US10042773B2 (en) * 2015-07-28 2018-08-07 Futurewei Technologies, Inc. Advance cache allocator
CN107168660B (zh) * 2016-03-08 2024-05-10 成都锐成芯微科技股份有限公司 图像处理缓存系统及方法
US10073775B2 (en) * 2016-04-01 2018-09-11 Intel Corporation Apparatus and method for triggered prefetching to improve I/O and producer-consumer workload efficiency
CN106484334A (zh) * 2016-10-20 2017-03-08 郑州云海信息技术有限公司 一种释放预读资源的方法及装置
US11294812B2 (en) * 2020-08-04 2022-04-05 International Business Machines Corporation Obtaining cache resources for expected writes to tracks in a write set after the cache resources were released for the tracks in the write set

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01230152A (ja) * 1988-03-10 1989-09-13 Mitsubishi Electric Corp キヤツシユ記憶装置
JPH02112039A (ja) * 1988-10-21 1990-04-24 Nec Corp バッファ記憶装置
EP0394642A3 (en) * 1989-04-28 1992-07-15 International Business Machines Corporation Data prefetching in caches
US5381539A (en) * 1992-06-04 1995-01-10 Emc Corporation System and method for dynamically controlling cache management
JPH06110780A (ja) * 1992-09-28 1994-04-22 Fuji Xerox Co Ltd バッファ記憶装置
JPH08272687A (ja) * 1995-04-03 1996-10-18 Nec Corp 入出力キャッシュメモリ
US5696985A (en) * 1995-06-07 1997-12-09 International Business Machines Corporation Video processor
US5787472A (en) * 1995-07-31 1998-07-28 Ibm Corporation Disk caching system for selectively providing interval caching or segment caching of vided data
US5974438A (en) * 1996-12-31 1999-10-26 Compaq Computer Corporation Scoreboard for cached multi-thread processes
TW501011B (en) * 1998-05-08 2002-09-01 Koninkl Philips Electronics Nv Data processing circuit with cache memory
US7039766B1 (en) * 2000-10-12 2006-05-02 International Business Machines Corporation Prescheduling sequential data prefetches in a preexisting LRU cache
US20030105926A1 (en) * 2001-12-03 2003-06-05 International Business Machies Corporation Variable size prefetch cache
US7089228B2 (en) * 2002-04-18 2006-08-08 International Business Machines Corporation Computer apparatus and method for caching results of a database query
US6990558B2 (en) * 2002-06-18 2006-01-24 Ip-First, Llc Microprocessor, apparatus and method for selective prefetch retire

Also Published As

Publication number Publication date
US20060190688A1 (en) 2006-08-24
EP1604285A2 (en) 2005-12-14
US7526613B2 (en) 2009-04-28
WO2004079489A2 (en) 2004-09-16
JP2006520045A (ja) 2006-08-31
CN1757018A (zh) 2006-04-05
WO2004079489A3 (en) 2005-07-28
CN1757018B (zh) 2010-09-08

Similar Documents

Publication Publication Date Title
KR20050116810A (ko) 데이터 처리 시스템, 프리패치 방법 및 반도체 수단
US6105111A (en) Method and apparatus for providing a cache management technique
US7630388B2 (en) Software defined FIFO memory for storing a set of data from a stream of source data
US7167954B2 (en) System and method for caching
US6542968B1 (en) System and method for managing data in an I/O cache
US5473764A (en) Multilevel instruction cache
US4933837A (en) Methods and apparatus for optimizing instruction processing in computer systems employing a combination of instruction cache and high speed consecutive transfer memories
US6728839B1 (en) Attribute based memory pre-fetching technique
US20080046657A1 (en) System and Method to Efficiently Prefetch and Batch Compiler-Assisted Software Cache Accesses
US5717895A (en) Associative scalar data cache with write-through capabilities for a vector processor
US8806177B2 (en) Prefetch engine based translation prefetching
US7073030B2 (en) Method and apparatus providing non level one information caching using prefetch to increase a hit ratio
US6718454B1 (en) Systems and methods for prefetch operations to reduce latency associated with memory access
KR20080097356A (ko) 프리페치 예측을 이용한 가상 메모리 번역
US8595443B2 (en) Varying a data prefetch size based upon data usage
JP4322119B2 (ja) データ処理システム
US20050015637A1 (en) Data processing system
KR100348099B1 (ko) 단일의캐쉬액세스파이프단을이용하여파이프라인저장명령을실행하기위한장치및방법과,파이프라인프로세서및,컴퓨터시스템
KR20150080568A (ko) 이미지 메모리 액세스 최적화
US6931490B2 (en) Set address correlation address predictors for long memory latencies
EP1604286B1 (en) Data processing system with cache optimised for processing dataflow applications
JP2009157612A (ja) キャッシュメモリシステム及びキャッシュメモリの制御方法
JPH0743671B2 (ja) キャッシュ・メモリ制御方式
US20010032297A1 (en) Cache memory apparatus and data processing system
JP2002108705A (ja) キャッシュ汚染減少方法および装置

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application