KR20050116811A - 데이터 처리 시스템, 반도체 장치 및 캐시 메모리 인덱싱방법 - Google Patents

데이터 처리 시스템, 반도체 장치 및 캐시 메모리 인덱싱방법 Download PDF

Info

Publication number
KR20050116811A
KR20050116811A KR1020057016628A KR20057016628A KR20050116811A KR 20050116811 A KR20050116811 A KR 20050116811A KR 1020057016628 A KR1020057016628 A KR 1020057016628A KR 20057016628 A KR20057016628 A KR 20057016628A KR 20050116811 A KR20050116811 A KR 20050116811A
Authority
KR
South Korea
Prior art keywords
cache
stream
data
cache memory
data processing
Prior art date
Application number
KR1020057016628A
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 KR20050116811A publication Critical patent/KR20050116811A/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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache

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)

Abstract

비 중첩 캐시 위치가 각각의 데이터 스트림마다 보존된다. 따라서, 각각의 스트림에 고유한 스트림 정보가 캐시 메모리를 인덱싱하는데 사용된다. 여기서 이 스트림 정보는 스트림 식별 정보에 의해 표현된다. 상세하게, 태스크 및 데이터 스트림을 사용해서 데이터플로우 애플리케이션을 처리하도록 최적화된 데이터 처리 시스템이 제공되며, 여기서 서로 다른 스트림이 공유 캐시 자원을 경합한다. 분명한 스트림 식별 정보는 데이터 스트림 각각과 관련된다. 데이터 처리 시스템은 스트림 데이터를 처리하는 적어도 하나의 프로세서(12), 복수의 캐시 블록을 가진 적어도 하나의 캐시 메모리(200) - 캐시 메모리(200) 중 하나는 프로세서(12) 각각과 관련됨 - , 캐시 메모리(200)를 제어하는 적어도 하나의 캐시 컨트롤러(300) - 캐시 컨트롤러(300) 중 하나는 캐시 메모리(200) 각각과 관련됨 - 를 포함한다. 캐시 컨트롤러(300)는 스트림 식별 정보(stream_id)에 따라서 캐시 메모리(200)의 데이터 스트림의 요소를 저장할 위치를 선택하는 선택 수단(350)을 포함한다.

Description

데이터 처리 시스템, 반도체 장치 및 캐시 메모리 인덱싱 방법{DATA PROCESSING SYSTEM WITH CACHE OPTIMISED FOR PROCESSING DATAFLOW APPLICATIONS}
본 발명은 태스크 및 데이터 스트림을 사용해서 데이터플로우 애플리케이션을 처리하도록 최적화된 데이터 처리 시스템, 태스크 및 데이터 스트림을 사용해서 데이터플로우 애플리케이션을 처리하도록 최적화된 데이터 처리 환경에 사용되는 반도체 장치, 태스크 및 데이터 스트림을 사용해서 데이터플로우 애플리케이션을 처리하도록 최적화된 데이터 처리 환경의 캐시 메모리를 인덱싱하는 방법에 관한 것이다.
특히, 고해상 디지털 TV, 타임 시프트 기능을 가진 셋톱 박스, 3D 게임, 화상회의, MPEG-4 애플리케이션 등과 같은 데이터플로우 애플리케이션에 장착되는 데이터 처리 시스템에 대한 요구가 증가함에 따라서, 이에 대한 설계 연구가 최근 증가했다.
스트림 처리에서, 한 데이터 스트림에 대한 연속 동작은 서로 다른 프로세서에 의해 수행된다. 예컨대, 제 1 스트림은 이미지의 픽셀값으로 이루어지며, 이 값은 제 1 프로세서에 의해 처리되어서 8×8 픽셀 블록의 DCT(이산 코사인 변환) 계수의 블록의 제 2 스트림을 생성할 수 있다. 제 2 스트림은 DCT 계수의 블록을 처리해서 각각의 DCT 계수의 블록을 위해, 선택되어 압축된 계수의 블록의 스트림을 생성할 수 있다.
데이터 스트림 처리를 구현하기 위해서 다수의 프로세서가 제공되며, 이들 프로세서는 각각이 특정 연산을 반복해서 수행할 수 있으며, 매번 데이터 객체의 스트림에서의 다음 데이터 객체로부터 데이터를 사용하고, 이러한 스트림의 다음 데이터 객체를 생성한다. 제 1 프로세서에 의해 생성된 스트림이 제 2 프로세서에 의해 처리될 수 있도록 스트림은 한 프로세서로부터 다음 프로세서로 이동한다. 제 1 프로세서로부터 제 2 프로세서로 데이터를 전달하는 하나의 메커니즘은 제 1 프로세서에 의해서 생성된 데이터 블록을 메모리에 기록하는 것이다. 네트워크에서의 데이터 스트림이 버퍼링된다. 각각의 버퍼는 정확히 하나의 기록기 및 하나 이상의 판독기를 사용해서 FIFO식으로 구현된다. 이러한 버퍼링 방식으로 인해서, 기록기 및 판독기가 채널 상에서 개개의 판독 및 기록 액션을 상호 동기화시킬 필요는 없다. 전형적인 데이터 처리 시스템은 완전 프로그래밍 가능 프로세서와 싱글 애플리케이션(single application) 각각에 전용인 애플리케이션 특정 서브시스템의 조합을 포함한다.
이러한 아키텍처의 예는 Rutten 등의 "Eclipse:A Heterogeneous Multiprocessor Architecture for Flexible Media Processing", IEEE Design and Test of Computers: Embedded Systems, 39-50페이지, July-August 2002에 개시되어 있다. 필요한 처리 애플리케이션은 Kahn 처리 네트워크 즉, 단방향 데이터 스트림을 사용해서 데이터를 교환하는 동시 수행 태스크의 세트로 지정된다. 각각의 애플리케이션 태스크는 특정 프로그래밍 가능 프로세서로 또는 전용 프로세서 중 하나로 매핑된다. 전용 프로세서는 코프로세서에 의해 구현되고, 이는 약하게만 프로그래밍 가능하다(weakly programmable). 각각의 코프로세서는 하나의 Kahn 네트워크로부터 또는 시간 공유 방식으로 다수의 네트워크로부터 다수의 태스크를 수행할 수 있다. 예컨대, 미디어 처리 애플리케이션의 스트리밍 성질로 인해서 기준의 높은 집약성이 나타난다. 즉, 이웃하는 데이터의 메모리 어드레스를 연속해서 기준으로 한다. 또한, 코프로세서와 통신 네트워크 사이에, 즉 버스와 주 메모리(main memory) 사이에 분산된 코프로세서 쉘(coprocessor shell)이 구현된다. 멀티태스킹, 스트림 동기화 및 데이터 전송과 같은 많은 시스템 레벨 문제를 없앴다. 그 분산 성질로 인해서, 쉘은 자신이 관련되어 있는 코프로세서에 가깝게 구현될 수 있다. 각각의 쉘에서, 그 쉘에 관련된 코프로세서에 매칭된 태스크에 일어나기 쉬운 스트림을 처리하는 데 필요한 모든 데이터는 쉘의 스트림 테이블에 저장된다.
이 쉘은 메모리를 판독하거나 메모리에 기록할 때 발생하는 데이터 액세스 지연을 감소시키기 위해서 캐시를 포함한다. 미래의 처리 단계를 수행하는 데 필요한 데이터는 캐시되며, 즉 더 작은 메모리에 저장되며, 이 메모리는 주 메모리로부터 이격되어서 저장된 데이터를 사용하는 프로세서에 가깝게 배치된다. 즉, 캐시는 중간 저장 장치로서 사용된다. 메모리 액세스 지연을 감소시킴으로써 프로세서의 프로세싱 속도가 증가될 수 있다. 데이터 워드가 주 메모리가 아닌 캐시로부터 프로세서에 의해서만 액세스되어야 하는 경우에, 주 메모리 액세스의 평균 액세스 시간 및 개수가 상당히 감소될 수 있다.
공유 메모리에 구현된 스트림 버퍼는 어드레스 태그를 저장하기 위해 캐시 라인과 제한된 수의 뱅크와 같은 공유 자원을 위해 경합한다. 코프로세서의 태스크가 입출력 집중형이기 때문에, 유효 캐시 동작은 캐시 자원의 충돌을 방지하는 데 필요하고, 이로써 태스크 수행에 지연이 나타날 수 있다.
도 1은 본 발명에 따른 스트림 기반 처리 시스템의 아키텍처의 개략 블록도,
도 2는 본 발명에 따른 캐시 컨트롤러의 블록도,
도 3은 본 발명의 제 2 실시예에 따른 캐시 구성의 개념도.
따라서, 본 발명의 목적은, 서로 다른 스트림이 공유 캐시 자원을 경쟁하는 데이터플로우 애플리케이션을 처리하도록 최적화된 환경에서 캐시 충돌 발생을 감소시키는 것이다.
이러한 목적은 청구항 1에 따른 데이터 처리 시스템, 청구항 9에 따른 태스크 및 데이터 스트림을 사용해서 데이터플로우 애플리케이션을 처리하도록 최적화된 데이터 처리 환경에 사용되는 반도체 장치 및 청구항 10에 따른 데이터플로우 애플리케이션을 처리하도록 최적화된 데이터 처리 환경의 캐시 메모리를 인덱싱하는 방법에 의해 해결된다.
본 발명은 각각의 데이터 스트림을 위해서 비중첩(non-overrapping) 캐시 위치를 보존한다는 개념에 기초하고 있다. 따라서, 각각의 스트림에 고유한 스트림 정보가 캐시 메모리를 인덱싱하는 데 사용된다. 여기서 이러한 스트림 정보는 스트림 식별 정보에 의해 표시된다.
특히, 태스크 및 데이터 스트림을 사용해서 데이터플로우 애플리케이션을 처리하도록 최적화된 데이터 처리 시스템이 제공되며, 여기서 서로 다른 스트림이 공유 캐시 자원을 경합한다. 명백한 스트림 식별 정보가 이러한 데이터 스트림 각각과 관련되어 있다. 데이터 처리 시스템은 스트림 데이터를 처리하는 적어도 하나의 프로세서(12), 복수의 캐시 블록을 가진 적어도 하나의 캐시 메모리(200) - 캐시 메모리(200) 중 하나는 프로세서(12) 각각과 관련됨 - , 캐시 메모리(200)를 제어하는 적어도 하나의 캐시 컨트롤러(300) - 캐시 컨트롤러(300) 중 하나는 캐시 메모리(200) 각각과 관련됨 - 를 포함한다. 캐시 컨트롤러(300)는 스트림 식별 정보(stream_id)에 따라서 캐시 메모리(200)의 데이터 스트림의 요소를 저장할 위치를 선택하는 선택 수단(350)을 포함한다. 따라서, 서로 다른 스트림으로부터의 데이터의 캐싱이 효율적으로 디커플링된다.
본 발명의 한 측면에 따라서, 이 선택 수단(350)은 스트림의 입출력 어드레스의 서브세트에 따라서 캐시 메모리(200)의 캐시 블록의 행 내에서부터 캐시 블록의 세트를 선택하는 서브세트 결정 수단(352)을 포함한다.
본 발명의 다른 측면에 따라서, 이러한 선택 수단(350)은 스트림 식별 정보(stream_id)에 대해서 캐시 행의 수보다 더 작은 수까지 해싱(hashing) 함수를 수행하는 해싱 함수 수단(351)을 포함한다.
본 발명의 다른 측면에 따라서, 해싱 함수 수단(351)은 모듈 동작을 수행한다. 서로 다른 태스크에 대해서 사용가능한 캐시 행을 공유함으로써 캐시 메모리(200)가 더 적게 실시될 수 있으며, 이로써 전체 시스템에서의 캐시 메모리의 비용을 제한한다.
본 발명의 다른 측면에 따라서, 선택 수단(350)은 데이터 스트림과 관련된 태스크 식별 정보(task_id) 및/또는 포트 식별 정보(port_id)에 따라서 캐시 메모리(200)의 데이터 스트림의 위치를 선택한다.
본 발명은 태스크 및 데이터 스트림을 사용해서 데이터플로우 애플리케이션을 처리하도록 최적화된 데이터 처리 환경에 사용되는 반도체 장치와 관련된 것으로, 여기서 서로 다른 태스크가 공유 캐시 자원을 경합하며, 명백한 스트림 식별 정보(stream_id)가 데이터 스트림 정보 각각과 관련된다. 장치는 복수의 캐시 블록을 가진 캐시 메모리(200)와, 캐시 메모리(200)를 제어하는 캐시 컨트롤러(300)를 포함하며, 캐시 컨트롤러(300)는 캐시 메모리(200)와 관련된다. 캐시 컨트롤러(300)는 스트림 식별 정보(stream_id)에 따라서 캐시 메모리(200)에 데이터 스트림의 요소를 저장할 위치를 선택하는 선택 수단(350)을 포함한다.
또한, 본 발명은 태스크 및 데이터 스트림을 사용해서 데이터플로우 애플리케이션을 처리하도록 최적화된 데이터 처리 환경에서 캐시 메모리(200)를 인덱싱하는 방법에 관한 것으로, 이 환경에서 서로 다른 스트림이 공유 캐시 자원을 경합한다. 캐시 메모리(200)는 복수의 캐시 블록을 포함한다. 분명한 스트림 식별 정보(stream_id)가 데이터 스트림 각각과 관련된다. 캐시 메모리(200)에 데이터 스트림의 요소를 저장하는 위치는 잠재적인 다른 stream_id의 수보다 더 적은 수의 서브세트를 캐시 메모리에서 구별하도록 스트림 식별 정보(stream_id)에 따라서 선택된다.
본 발명의 다른 측면들이 종속항에 개시된다.
본 발명의 이들 및 다른 측면이 도면을 참조로 더 상세하게 설명된다.
도 1은 본 발명의 바람직한 실시예에 따른 데이터 객체의 스트림을 처리하는 처리 시스템을 도시하고 있다. 이 시스템은 서로 다른 층들, 즉 계산층(1), 통신 지원층(2) 및 통신 네트워크층(3)으로 나눌 수 있다. 계산층(1)은 CPU(11), 2개의 프로세서(12a, 12b)를 포함한다. 이는 단지 예로, 더 많은 프로세서가 시스템에 포함될 수 있다. 계산 지원층(2)은 CPU(11)와 관련된 쉘(21) 및 프로세서(12a, 12b)와 관련된 쉘(22a, 22b)을 각각 포함한다. 계산 네트워크 층(3)은 통신 네트워크(31) 및 메모리(32)를 포함한다.
프로세서(12a, 12b)는 바람직하게는 전용 프로세서로 각각이 제한된 범위의 스트림 처리 기능을 수행하도록 지정된다. 각각의 프로세서는 스트림의 연속 데이터 객체에 같은 처리 동작을 반복해서 적용시키도록 되어 있다. 프로세서(12a, 12b)는 예컨대, 가변 길이 디코딩, 런 길이(run-length) 디코딩, 모션 보상, 이미지 스케일링 또는 DCT 변환의 수행과 같은 다른 태스크 또는 기능을 각각 수행할 수 있다. 동작시에, 각각의 프로세서(12a, 12b)는 하나 이상의 데이터 스트림에 대해서 동작을 수행한다. 이 동작은 예컨대, 스트림을 수신해서 다른 스트림을 생성하는 동작 혹은, 새로운 스트림을 생성하지 않고 스트림을 수신하는 동작 혹은 스트림을 수신하거나 수신된 스트림을 수신하지 않고 스트림을 생성하는 동작을 포함한다. 프로세서(12a, 12b)는 다른 프로세서(12a, 12b) 또는 CPU(11)에 의해 생성된 데이터 스트림 혹은 심지어 자체적으로 생성된 스트림도 처리할 수 있다. 하나의 스트림은 메모리(32)를 통해서 프로세서(12a, 12b)와 주고 받는 연속 데이터 객체를 포함한다.
쉘(22a, 22b)은 통신 층인 통신 네트워크 층으로의 제 1 인터페이스를 포함한다. 이 층은 모든 쉘에 대해서 동일하거나 포괄적이다. 또한, 쉘(22a, 22b)은 쉘(22a, 22b)이 각각 관련된 프로세서(12a, 12b)로의 제 2 인터페이스를 포함한다. 제 2 인터페이스는 태스크 레벨 인터페이스이고, 프로세서(12a, 12b)의 특정 요구를 조정하도록 관련 프로세서(12a, 12b)에 대해 커스토마이즈(customised)되어 있다. 따라서, 쉘(22a, 22b)은 제 2 인터페이스로서 프로세서 특정 인터페이스를 가지지만, 쉘의 전체 아키텍처는 모든 프로세서에 대해서 포괄적으로 균일해서, 모든 시스템 아키텍쳐의 쉘의 재사용을 용이하게 하면서도 특정 애플리케이션에 대한 파라미터화(parameterisation) 및 적용을 가능하게 한다.
쉘(22a, 22b)은 데이터 지원용 판독/기록 유닛, 동기화 유닛 및 태스크 스위칭 유닛을 포함한다. 이들 3개의 유닛은 마스터/슬레이브 기반으로 관련 프로세서와 통신하며, 여기서 프로세서는 마스터로서 동작한다. 따라서, 각각 3개의 유닛은 프로세서로부터의 요청에 의해 개시된다. 바람직하게는, 프로세서와 3개의 유닛 사이의 통신은 인수값을 전달하고 요청값이 리턴되기를 기다리도록 요청-확인 핸드쉐이크(request-acknowledge handshake) 메커니즘에 의해 구현된다. 따라서, 통신은 차단되며, 즉 각각의 제어 스레드는 완료를 대기한다.
쉘(22a, 22b)은 각각의 관련된 프로세서(12a, 12b)에 가깝게 구현될 수 있도록 분산된다. 각각의 쉘은 국부적으로는 그 프로세서로 매핑된 태스크에 부수적인 스트림의 구성 데이터를 포함하고, 국부적으로는 이러한 데이터를 적절하게 처리하도록 모든 제어 로직을 구현한다. 따라서, 로컬 스트림 테이블은 각각의 스트림에서 혹은 환언하면 각각의 액세스 지점에서 필드의 행을 포함하는 쉘(22a, 22b)에서 구현될 수 있다.
또한, 쉘(22)은 프로세서(12)와 통신 네트워크(31) 및 메모리(32) 사이의 데이터 전송, 즉 판독 동작 및 기록 동작용 데이터 캐시를 포함한다. 쉘(22)의 데이터 캐시의 구현은 데이터 버스 폭의 투명 변환(transparent translation), 전체 상호 접속부, 즉 통신 네트워크(31)에서의 정렬 제한의 분석 및 전체 상호 접속부에 대한 I/O 동작의 감소를 제공한다.
바람직하게는, 쉘(22)은 판독 및 기록 인터페이스 내의 캐시를 포함하지만, 이들 캐시는 애플리케이션 기능의 관점에서는 보이지 않는다. 캐시는 프로세서 판독 및 기록 포트를 통신 네트워크(3)의 전체 상호 접속부로부터 접속 해제하는 데 중요한 역할을 한다. 이들 캐시는 속도, 전력 및 면적과 관련된 시스템 성능에 중요한 역할을 미친다.
도 1에 따른 아키텍쳐에 관한 세부 사항은 Rutten등의 "Eclipse:A Heterogeneous Multiprocessor Architecture for Flexible Media Processing" IEEE Design and Test of Computers: Embedded Systems, 39-50페이지, July-August 2002를 참조한다.
도 2는 도 1에 따른 아키텍쳐의 일부를 도시하고 있다. 상세하게는, 프로세서(12b), 쉘(22b), 버스(31) 및 메모리(32)가 도시되어 있다. 쉘(22b)은 데이터 전송 유닛의 일부로서 캐시 메모리(200) 및 캐시 컨트롤러(300)를 포함한다. 캐시 컨트롤러(300)는 스트림 테이블(320) 및 선택 수단(350)을 포함한다. 캐시 메모리(200)는 서로 다른 캐시 블록(210)으로 나눌 수 있다.
판독 또는 기록 동작, 즉 I/O 액세스가 코프로세서(12b) 상의 태스크에 의해 수행될 때, 이는 데이터를 요청하는 특정 태스크 및 포트로부터의 어드레스 다음으로 task_id 및 port_id 파라미터를 제공한다. 이 어드레스는 공유 메모리의 스트림 버퍼 내의 한 위치를 나타낸다. 스트림 테이블(320)은 각각의 스트림 및 액세스 포인트마다 필드의 행을 포함한다. 상세하게는, 스트림 테이블은 스트림 식별자 stream_id로 인덱스되되, 이는 현재 처리되는 태스크를 나타내는 태스크 식별자 task_id 및 데이터가 수신된 포트를 나타내는 포트 식별자 port_id로부터 유도된다. port_id는 각각의 태스크의 국부적인 범위를 나타낸다.
본 발명의 제 1 실시예는 직접 어드레스 디코딩(direct address decoding)에 관련되는, 인덱싱에 의한 어드레싱에 관한 것으로, 여기서 엔트리는 디코딩으로부터 직접 결정된다. 따라서, 선택 수단(350)은 스트림 식별자 stream_id를 사용해서 캐시 메모리(200)에서 캐시 블록의 행을 선택한다. 선택된 캐시 행으로부터의 각각의 캐시 블록은 코프로세서에 의해 제공되는 어드레스의 더 하위 비트 즉, I/O 어드레스를 통해서 인덱싱된다. 다른 방안으로, 어드레스의 더 상위 비트는 인덱싱하는 데 사용될 수 있다. 이 실시예에 따른 캐시 메모리(200)의 구성은 직접 매핑 기반으로 행해지며, 즉 스트림 식별자와 어드레스의 모든 조합이 하나의 캐시 위치로만 매핑될 수 있다. 따라서, 한 행 내의 캐시 블록의 수는 2의 제곱으로 한정된다. 즉, 열이 다수의 어드레스 비트를 디코딩함으로써 선택되기 때문에, 이는 항상 열의 2제곱으로 확장할 것이다.
도 3은 본 발명의 제 2 실시예에 따른 캐시 구성의 개략도를 도시하며, 여기서 이 캐시의 구성은 직접 매핑 기반으로 행해진다. 도 2의 선택 수단은 해싱 함수 수단(351) 및 서브세트 결정 수단(352)을 포함한다. stream_id은 해싱 함수 수단(351)에 입력되고, 반면에 I/O 어드레스는 서브세트 결정 수단(352)에 입력된다. 바람직하게는, 해싱 함수 수단(351)이 캐시 행의 수만큼 모듈 연산을 수행해서 스트림 식별자 stream_id를 더 작은 수의 캐시 메모리의 각각의 캐시 행으로 변환한다. 서브세트 결정 수단(352)은 코프로세서에 의해 공급되는 하위 비트의 어드레스, 즉 I/O 어드레스를 통해서 캐시 메모리의 각각의 캐시 열을 결정한다. 다른 방안으로, 상위 비트의 어드레스는 인덱싱하는 데 사용될 수 있다. 해싱 함수 수단(351)에 의해 결정된 캐시 행 및 서브세트 결정 수단(352)에 의해 결정된 캐시 열에 따라서, 특정 캐시 블록이 인덱싱될 수 있다. 실제 데이터 워드는 어드레스에 매칭하는 태그를 통해서 위치될 수 있다.
다른 방안으로, 스트림 식별자 stream_id 대신에 포트 식별자 port_id가 해싱 함수 수단(351)의 입력으로서 사용될 수 있으며, 여기서 해싱 함수 즉, 캐시 행에 대한 모듈 연산이 포트 식별자 port_id에 대해 수행되어서, 캐시 행을 선택하도록 port_id를 더 작은 수의 캐시 행이 되게 한다. 이는 서로 다른 태스크에 대해서 사용가능한 캐시 행을 공유함으로써 더 적은 쉘(22)의 캐시 메모리(200)가 수행될 수 있고, 이로써 전체 시스템의 캐시 메모리의 비용을 제한한다. 따라서, 태스크는 하나의 캐시 행과 다수의 태스크 포트를 공유할 수 있다. 그러나, 이는 모든 데이터가 하나의 태스크 포트로부터 판독되고, 간헐적으로 제 2 태스크 포트로부터 데이터를 판독하는 경우에 유익하고, 비용 효율적이다. 따라서, 각각의 태스크 포트의 캐시 행의 하드웨어 비용이 감소될 수 있다.
다른 방안으로, 태스크 식별자 task_id가 해싱 함수 수단(351)으로의 입력으로서 사용되어서 캐시 행을 선택한다.
본 발명의 원리가 도 1에 따른 아키텍처와 관련되어 설명되었지만, 본 발명에 따른 캐시 인덱싱 방안은 더 일반적인 세트 관련 캐시 구성(set-associate cache organisation)까지 연장될 수 있으며, 여기서 stream_id는 캐시 행을 선택하고, 하위 비트의 어드레스는 캐시 블록의 세트를 선택하는 반면에 실제 데이터는 어드레스에 매칭하는 태그를 통해서 더 위치된다.

Claims (10)

  1. 태스크와 데이터 스트림을 사용해서 데이터플로우 애플리케이션을 처리하도록 최적화된 데이터 처리 시스템에 있어서 - 서로 다른 스트림이 공유 캐시 자원을 위해 경합하고, 분명한(unambiguous) 스트림 식별 정보(stream_id)가 상기 데이터 스트림 각각과 관련되어 있음 - ,
    스트림 데이터를 처리하는 적어도 하나의 프로세서(12)와,
    복수의 캐시(cache) 블록을 구비한 적어도 하나의 캐시 메모리(200) - 상기 캐시 메모리(200) 중 하나는 상기 프로세서(12) 각각과 관련됨 - 와,
    상기 캐시 메모리(200)를 제어하는 적어도 하나의 캐시 컨트롤러(300) - 상기 캐시 컨트롤러(300) 중 하나는 상기 캐시 메모리(200) 각각과 관련됨 -
    를 포함하되,
    상기 캐시 컨트롤러(300)는 상기 스트림 식별 정보(stream_id)에 따라서 상기 캐시 메모리(200)의 데이터 스트림의 요소를 저장할 위치를 선택하는 선택 수단(350)을 포함하는
    데이터 처리 시스템.
  2. 제 1 항에 있어서,
    상기 선택 수단(350)은 상기 스트림 식별 정보(stream_id)에 따라서 상기 캐시 메모리(200) 내의 캐시 블록의 서브세트를 선택하는
    데이터 처리 시스템.
  3. 제 2 항에 있어서,
    상기 선택 수단(350)은 상기 스트림의 입력/출력 어드레스의 서브세트에 따라서, 상기 캐시 메모리(200) 내의 상기 캐시 블록의 상기 서브세트로부터 캐시 블록의 세트를 선택하는 서브세트 결정 수단(352)을 포함하는
    데이터 처리 시스템.
  4. 제 3 항에 있어서,
    상기 서브세트 결정 수단(352)은 상기 스트림의 입력/출력 어드레스의 하위 비트에 따라서 캐시 블록을 선택하는
    데이터 처리 시스템.
  5. 제 3 항에 있어서,
    상기 서브세트 결정 수단(352)은 상기 입력/출력 어드레스 비트의 서브세트에 매칭하는 태그에 의해 상기 캐시 블록의 세트로부터 캐시 블록을 선택하는
    데이터 처리 시스템.
  6. 제 1 항에 있어서,
    상기 선택 수단(350)은 상기 스트림 식별 정보(stream_id)에 대해서 캐시 행의 수 보다 작은 수까지 해싱 함수를 수행하는 해싱 함수 수단(351)을 포함하는
    데이터 처리 시스템.
  7. 제 6 항에 있어서,
    상기 해싱 함수 수단(351)은 모듈 연산을 수행하는
    데이터 처리 시스템.
  8. 제 1 항에 있어서,
    상기 선택 수단(350)은 상기 데이터 스트림과 관련된 태스크 식별 정보(task_id) 및/또는 포트 식별 정보(port_id)에 따라서 상기 캐시 메모리(200) 내의 데이터 스트림의 요소의 위치를 선택하는
    데이터 처리 시스템.
  9. 태스크와 데이터 스트림을 사용해서 데이터플로우 애플리케이션을 처리하도록 최적화된 데이터 처리 환경에 사용되는 반도체 장치에 있어서 - 서로 다른 스트림이 공유 캐시 자원을 위해 경합하고, 분명한 스트림 식별 정보(stream_id)가 상기 데이터 스트림 각각과 관련되어 있음 - ,
    복수의 캐시 블록을 구비한 캐시 메모리(200)와,
    상기 캐시 메모리(200)를 제어하는 캐시 컨트롤러(300) - 상기 캐시 컨트롤러(300)는 상기 캐시 메모리(200)와 관련됨 -
    를 포함하되,
    상기 캐시 컨트롤러(300)는 상기 스트림 식별 정보(stream_id)에 따라서 상기 캐시 메모리(200) 내의 데이터 스트림의 요소를 저장할 위치를 선택하는 선택 수단(350)을 포함하는
    반도체 장치.
  10. 태스크와 데이터 스트림을 사용해서 데이터플로우 애플리케이션을 처리하도록 최적화된 데이터 처리 환경에서 캐시 메모리(200)를 인덱싱하는 방법에 있어서 - 서로 다른 스트림이 공유 캐시 자원을 위해 경합함 - ,
    상기 캐시 메모리(200)는 복수의 캐시 블록을 포함하고,
    분명한 스트림 식별 정보(stream_id)가 상기 데이터 스트림 각각과 관련되며,
    상기 방법은
    상기 스트림 식별 정보(stream_id)에 따라서 상기 캐시 메모리(200) 내의 데이터 스트림의 요소를 저장할 위치를 선택하는 단계를 포함하는
    캐시 메모리 인덱싱 방법.
KR1020057016628A 2003-03-06 2004-02-25 데이터 처리 시스템, 반도체 장치 및 캐시 메모리 인덱싱방법 KR20050116811A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP03100555 2003-03-06
EP03100555.6 2003-03-06

Publications (1)

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

Family

ID=32946918

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057016628A KR20050116811A (ko) 2003-03-06 2004-02-25 데이터 처리 시스템, 반도체 장치 및 캐시 메모리 인덱싱방법

Country Status (8)

Country Link
US (1) US20070168615A1 (ko)
EP (1) EP1604286B1 (ko)
JP (1) JP2006520044A (ko)
KR (1) KR20050116811A (ko)
CN (1) CN100547567C (ko)
AT (1) ATE487182T1 (ko)
DE (1) DE602004029870D1 (ko)
WO (1) WO2004079488A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190029270A (ko) * 2017-09-12 2019-03-20 전자부품연구원 다중 캐시 메모리를 구비한 지능형 반도체 장치 및 지능형 반도체 장치에서의 메모리 접근 방법

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5525460A (en) 1992-03-19 1996-06-11 Fuji Photo Film Co., Ltd. Silver halide photographic emulsion and light-sensitive material using the same
US7111124B2 (en) * 2002-03-12 2006-09-19 Intel Corporation Set partitioning for cache memories
US7523319B2 (en) * 2005-11-16 2009-04-21 Lenovo (Singapore) Pte. Ltd. System and method for tracking changed LBAs on disk drive
US8130841B2 (en) * 2005-12-29 2012-03-06 Harris Corporation Method and apparatus for compression of a video signal
US7876328B2 (en) * 2007-02-08 2011-01-25 Via Technologies, Inc. Managing multiple contexts in a decentralized graphics processing unit
US9076239B2 (en) * 2009-04-30 2015-07-07 Stmicroelectronics S.R.L. Method and systems for thumbnail generation, and corresponding computer program product
JP5800347B2 (ja) * 2010-03-31 2015-10-28 日本電気株式会社 情報処理装置及びデータアクセス方法
FR2958765B1 (fr) * 2010-04-09 2012-04-13 Commissariat Energie Atomique Memoire cache segmentee.
CN103729315B (zh) 2012-10-15 2016-12-21 华为技术有限公司 一种地址压缩、解压缩的方法、压缩器和解压缩器
US10073786B2 (en) 2015-05-28 2018-09-11 Micron Technology, Inc. Apparatuses and methods for compute enabled cache

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62144257A (ja) * 1985-12-19 1987-06-27 Mitsubishi Electric Corp キヤツシユメモリ
JPS6466761A (en) * 1987-09-08 1989-03-13 Fujitsu Ltd Disk cache control system
JPS6466760A (en) * 1987-09-08 1989-03-13 Fujitsu Ltd Disk cache control system
JP2846697B2 (ja) * 1990-02-13 1999-01-13 三洋電機株式会社 キャッシュメモリ制御装置
JPH04100158A (ja) * 1990-08-18 1992-04-02 Pfu Ltd キャッシュ制御方式
JPH0571948U (ja) * 1992-03-04 1993-09-28 横河電機株式会社 キャッシュ制御装置
JPH06160828A (ja) * 1992-11-26 1994-06-07 Sharp Corp 平板の貼合せ方法
US5511212A (en) * 1993-06-10 1996-04-23 Rockoff; Todd E. Multi-clock SIMD computer and instruction-cache-enhancement thereof
EP0856798B1 (en) * 1997-01-30 2004-09-29 STMicroelectronics Limited A cache system
TW501011B (en) * 1998-05-08 2002-09-01 Koninkl Philips Electronics Nv Data processing circuit with cache memory
US6389513B1 (en) * 1998-05-13 2002-05-14 International Business Machines Corporation Disk block cache management for a distributed shared memory computer system
JP2000339220A (ja) * 1999-05-27 2000-12-08 Nippon Telegr & Teleph Corp <Ntt> キャッシュブロック予約方法およびキャッシュブロック予約機能付きコンピュータシステム
US6360299B1 (en) * 1999-06-30 2002-03-19 International Business Machines Corporation Extended cache state with prefetched stream ID information
JP2001282617A (ja) * 2000-03-27 2001-10-12 Internatl Business Mach Corp <Ibm> 共有されたキャッシュを動的に区分するための方法及びシステム
US6567900B1 (en) * 2000-08-31 2003-05-20 Hewlett-Packard Development Company, L.P. Efficient address interleaving with simultaneous multiple locality options
US6487643B1 (en) * 2000-09-29 2002-11-26 Intel Corporation Method and apparatus for preventing starvation in a multi-node architecture
US6754776B2 (en) * 2001-05-17 2004-06-22 Fujitsu Limited Method and system for logical partitioning of cache memory structures in a partitoned computer system
US6965982B2 (en) * 2001-06-29 2005-11-15 International Business Machines Corporation Multithreaded processor efficiency by pre-fetching instructions for a scheduled thread
US6883084B1 (en) * 2001-07-25 2005-04-19 University Of New Mexico Reconfigurable data path processor
US6820170B1 (en) * 2002-06-24 2004-11-16 Applied Micro Circuits Corporation Context based cache indexing

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190029270A (ko) * 2017-09-12 2019-03-20 전자부품연구원 다중 캐시 메모리를 구비한 지능형 반도체 장치 및 지능형 반도체 장치에서의 메모리 접근 방법

Also Published As

Publication number Publication date
EP1604286B1 (en) 2010-11-03
CN1757017A (zh) 2006-04-05
DE602004029870D1 (de) 2010-12-16
CN100547567C (zh) 2009-10-07
US20070168615A1 (en) 2007-07-19
JP2006520044A (ja) 2006-08-31
WO2004079488A3 (en) 2005-07-28
WO2004079488A2 (en) 2004-09-16
ATE487182T1 (de) 2010-11-15
EP1604286A2 (en) 2005-12-14

Similar Documents

Publication Publication Date Title
CN107657581B (zh) 一种卷积神经网络cnn硬件加速器及加速方法
US9323672B2 (en) Scatter-gather intelligent memory architecture for unstructured streaming data on multiprocessor systems
US7321958B2 (en) System and method for sharing memory by heterogeneous processors
US20050268048A1 (en) System and method for using a plurality of heterogeneous processors in a common computer system
US20040258147A1 (en) Memory and array processor structure for multiple-dimensional signal processing
US9280464B2 (en) System and method for simultaneously storing and reading data from a memory system
US5586256A (en) Computer system using multidimensional addressing between multiple processors having independently addressable internal memory for efficient reordering and redistribution of data arrays between the processors
CN1311348C (zh) 数据处理***
US8341344B2 (en) Techniques for accessing a resource in a processor system
US11366752B2 (en) Address mapping between shared memory modules and cache sets
KR20050116811A (ko) 데이터 처리 시스템, 반도체 장치 및 캐시 메모리 인덱싱방법
CN1757018B (zh) 具有预取装置的数据处理***、数据预取方法
CN1605065A (zh) 数据处理***
KR100960413B1 (ko) 데이터 처리 시스템, 통신 수단 및 데이터 처리 방법
KR20220048460A (ko) 가상화 및 계층 메모리가 있는 가속기를 위한 시스템, 방법, 및 장치
KR20150080568A (ko) 이미지 메모리 액세스 최적화
US5668975A (en) Method of requesting data by interlacing critical and non-critical data words of multiple data requests and apparatus therefor
CN114116533A (zh) 利用共享存储器存储数据的方法
US8350865B2 (en) Method and system for efficiently organizing data in memory
Kuusilinna et al. Configurable parallel memory architecture for multimedia computers
Hilgenstock et al. Parallel DSP architecture for object-based video signal processing
US20090282199A1 (en) Memory control system and method
CN116263752A (zh) 用于芯片间通信的处理单元、处理***及方法

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