KR20190135549A - 스플리트-인덱스를 사용한 캐시 어드레싱 시스템 및 방법 - Google Patents

스플리트-인덱스를 사용한 캐시 어드레싱 시스템 및 방법 Download PDF

Info

Publication number
KR20190135549A
KR20190135549A KR1020197035123A KR20197035123A KR20190135549A KR 20190135549 A KR20190135549 A KR 20190135549A KR 1020197035123 A KR1020197035123 A KR 1020197035123A KR 20197035123 A KR20197035123 A KR 20197035123A KR 20190135549 A KR20190135549 A KR 20190135549A
Authority
KR
South Korea
Prior art keywords
bits
cache
address
index
memory
Prior art date
Application number
KR1020197035123A
Other languages
English (en)
Other versions
KR102173474B1 (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 KR20190135549A publication Critical patent/KR20190135549A/ko
Application granted granted Critical
Publication of KR102173474B1 publication Critical patent/KR102173474B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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/0877Cache access modes
    • G06F12/0884Parallel mode, e.g. in parallel with main memory or CPU
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/455Image or video data

Abstract

캐시 메모리 매핑 기술이 제공된다. 캐시는 인덱스 구성 레지스터를 포함할 수 있다. 인덱스 구성 레지스터는 메모리 어드레스의 상위 인덱스 부분과 하위 인덱스 부분의 로케이션들을 구성할 수 있다. 다른 애플리케이션들 중에서 구성가능 스플리트-인덱스 어드레싱 구조가 사용되어, 비디오 프레임을 동시에 디코딩하는 복수의 프로세서들 간에 발생하는 캐시 충돌률을 감소시킬 수 있다.

Description

스플리트-인덱스를 사용한 캐시 어드레싱 시스템 및 방법{SYSTEMS AND METHODS FOR ADDRESSING A CACHE WITH SPLIT-INDEXES}
관련 특허 출원에 대한 교차 참조
본 출원은 "SYSTEMS AND METHODS FOR ADDRESSING A CACHE WITH SPLIT-INDEXES" 라는 명칭으로 2015년 5월 19일에 출원된 미국 특허 출원 제14/716,588호의 우선권을 주장하며 그 내용은 그 전체가 참조로 본 명세서에 포함된다.
본 출원은 일반적으로 스플리트-인덱스(split-index) 어드레스 구조를 이용하여 구성가능 중앙 처리 장치(CPU) 캐시를 어드레싱하는 것에 관한 것이다.
컴퓨터 프로세서의 성능은 과거 반세기 동안 지수함수적으로 증가해왔다. 처리 성능의 지속적인 개선은 새로운 기술 및 방법의 지속적인 개발을 필요로 한다. 하나의 알려진 성능 개선 기술은 프로세서 캐시의 사용과 관련된다. 프로세서 캐시는 메인 메모리에 걸쳐 매우 개선된 데이터 액세스 시간을 제공하지만, 그 저장 용량에서는 제한이 있다. 캐시가 제공하는 성능 개선점으로 인해, 캐시는 그 분야에서 거의 일정한 채택을 보여왔다.
프로세서 성능을 개선하는 데 사용되는 다른 기술은 다수의 프로세서들을 병렬로 사용하는 것이다. 이러한 시나리오에서, 시스템이 다수의 프로세서를 사용할 경우, 다양한 처리 코어들은 단일 캐시에 대한 액세스를 공유할 수 있다. 이는 유익하게도 각각의 프로세서가 다른 프로세서에 의해 캐시되었던 데이터를 판독할 수 있게 한다. 그러나, 다수의 프로세서들의 각각이 한 파일의 상이한 부분들에 동시에 액세스한다면, 각각의 프로세서에 의해 액세스되는 메모리는 공간적으로 이격되는 것으로 보인다(즉, 서로로부터 멀리 이격된 메모리의 행 및 열에 위치하는 것으로 보인다). 이러한 이유로 인해, 그러한 시나리오에서는 프로세서들이 동일한 캐시 라인에 대해 매핑되는 데이터를 요청할 수 있어 충돌을 일으킬 가능성이 상당히 높다. 캐시 충돌은 고비용으로 프로세서가 메인 메모리로부터 판독할 수 있게 하지만, 대신에 상당히 감소된 성능을 초래하게 한다. 따라서, 다수의 병렬 프로세서들이 메모리 내의 한 파일의 공간적으로 이격된 부분들에 액세스할 가능성이 있을 경우 다수의 프로세서를 병렬로 사용하기 위한 캐시 성능을 개선시킬 필요가 있다.
개시된 발명의 대상에 따라, 스플리트-인덱스를 사용하여 구성가능 캐시(configurable cache)를 어드레싱하는 시스템 및 방법이 제공된다. 일부 실시예에서, 메인 메모리로부터 캐시 내로 엘리먼트들을 저장하기 위한 방법은 캐시 메모리로부터의 복수의 캐시 라인들의 각각을 복수의 인덱스들 중 상이한 인덱스와 연관시키는 단계 - 상기 복수의 인덱스들 중의 하나의 인덱스는 제1 결합 인덱스를 포함함 - 와, 상기 메인 메모리로부터의 제1 메모리 로케이션(location)과 연관된 제1 어드레스로부터의 제1 세트의 비트들을 제1 인덱스 부분으로서 그리고 상기 제1 어드레스로부터의 제2 세트의 비트들을 제2 인덱스 부분으로서 정의하는 단계와, 상기 제1 인덱스 부분과 상기 제2 인덱스 부분을 연결(concatenating)시킴으로써 상기 제1 결합 인덱스를 생성하는 단계와, 상기 제1 결합 인덱스에 기초하여 상기 복수의 캐시 라인들 중 제1 캐시 라인에 적어도 상기 제1 메모리 로케이션을 매핑시키는 단계를 포함한다.
이 방법은 상기 제1 어드레스로부터의 제3 세트의 비트들을 오프셋으로 정의하는 단계를 더 포함할 수 있으며, 이 오프셋은 상기 제1 메모리 로케이션의 제1 캐시 라인 내의 포지션(position)을 결정한다. 이 방법은 상기 복수의 캐시 라인들 내에, 상기 메인 메모리에 저장된 고선명 비디오의 프레임으로부터의 복수의 데이터 블럭들을 저장하는 단계를 더 포함할 수 있다. 이 방법은 상기 캐시 메모리에 대한 제1 프로세서 및 제2 프로세서로부터의 판독 요청 및 기입 요청을 스케줄링하는 단계를 더 포함할 수 있다. 이 방법은 제1 프로세서를 통해, 상기 메인 메모리의 제1 열 내에 위치한 제1 데이터 블럭을 판독하는 단계와, 제2 프로세서를 통해 상기 메인 메모리의 제1 열 내에 위치한 제2 데이터 블럭을 동시에 판독하는 단계와, 상기 캐시 메모리 내로 상기 제1 데이터 블럭 및 상기 제2 데이터 블럭을 저장하는 단계를 더 포함할 수 있다.
일부 실시예에서, 메인 메모리로부터의 데이터 엘리먼트들을 저장하는 캐시는 복수의 인덱스들 중의 상이한 인덱스에 의해 각각이 참조되는 복수의 캐시 라인을 포함한 캐시 메모리 - 상기 복수의 인덱스들 중의 하나의 인덱스는 제1 결합 인덱스를 포함함 - 와, 상기 메인 메모리로부터의 제1 메모리 로케이션과 연관된 제1 어드레스로부터의 제1 세트의 비트들을 제1 인덱스 부분으로서 그리고 상기 제1 어드레스로부터의 제2 세트의 비트들을 제2 인덱스 부분으로서 정의하도록 구성되는 인덱스 구성 레지스터(index configuration register)와, 상기 인덱스 구성 레지스터에 의해 정의되는 상기 제1 인덱스 부분과 상기 제2 인덱스 부분을 수신하고 상기 제1 인덱스 부분과 상기 제2 인덱스 부분을 연결시킴으로써 상기 제1 결합 인덱스를 생성하도록 구성되는 인덱스 생성 모듈과, 상기 제1 결합 인덱스에 기초하여 복수의 캐시 라인들 중 제1 캐시 라인에 적어도 상기 제1 메모리 로케이션을 매핑시키는 메모리 어드레스 매핑 모듈을 포함한다.
상기 인덱스 구성 레지스터는 상기 제1 어드레스로부터의 제3 세트의 비트들을 오프셋으로 정의하도록 더 구성될 수 있으며, 이 오프셋은 상기 제1 메모리 로케이션의 제1 캐시 라인 내의 포지션을 결정한다. 상기 복수의 캐시 라인들은, 상기 메인 메모리에 저장된 고선명 비디오의 프레임으로부터의 복수의 데이터 블럭들을 저장하도록 구성될 수 있다. 상기 메모리 어드레스 매핑 모듈은 상기 고선명 비디오의 프레임의 하나의 행으로부터의 복수의 데이터 블럭들 중 적어도 두 개의 데이터 블럭을 상기 복수의 캐시 라인 중 하나의 캐시 라인에 매핑하도록 더 구성될 수 있다. 캐시는 상기 캐시 메모리에 대한 제1 프로세서 및 제2 프로세서로부터의 판독 요청 및 기입 요청을 스케줄링하도록 구성되는 액세스 중재 모듈을 더 포함할 수 있다. 상기 액세스 중재 모듈은 상기 복수의 캐시 라인들 중 상이한 캐시 라인들에 대한 상기 제1 프로세서 및 상기 제2 프로세서에 의한 동시적인 판독 요청 및 기입 요청을 허용하도록 더 구성될 수 있다.
일부 실시예에서, 컴퓨터 시스템에 의해 실행될 경우 상기 컴퓨터 시스템으로 하여금 메인 메모리로부터의 엘리먼트들을 캐시 내로 저장하기 위한 방법을 수행하게 하는 컴퓨터 실행가능 명령어를 저장한 비일시적 컴퓨터 판독가능 저장 매체가 제공되며, 상기 방법은 캐시 메모리로부터의 복수의 캐시 라인들의 각각을 복수의 인덱스들 중 상이한 인덱스와 연관시키는 단계 - 상기 복수의 인덱스들 중의 하나의 인덱스는 제1 결합 인덱스를 포함함 - 와, 상기 메인 메모리로부터의 제1 메모리 로케이션과 연관된 제1 어드레스로부터의 제1 세트의 비트들을 제1 인덱스 부분으로서 그리고 상기 제1 어드레스로부터의 제2 세트의 비트들을 제2 인덱스 부분으로서 정의하는 단계와, 상기 제1 인덱스 부분과 상기 제2 인덱스 부분을 연결시킴으로써 상기 제1 결합 인덱스를 생성하는 단계와, 상기 제1 결합 인덱스에 기초하여 상기 복수의 캐시 라인들 중 제1 캐시 라인에 적어도 상기 제1 메모리 로케이션을 매핑시키는 단계를 포함한다.
개시된 발명의 대상의 다양한 목적, 특징, 및 이점은 유사한 엘리먼트들에 대해 유사한 참조 번호들이 부여된 아래의 도면과 관련하여 고려될 경우 개시된 발명의 대상의 아래의 상세한 설명을 참조하여 보다 완전하게 이해될 수 있다. 첨부된 도면들은 개략적인 것들이며 축척대로 도시되는 것은 아니다. 명료성을 위해, 모든 도면에서 모든 컴포넌트들이 라벨링되는 것은 아니다. 개시된 발명의 대상의 각각의 실시예의 모든 컴포넌트가 도시되는 것은 아니며, 도시된 것은 당업자가 개시된 발명의 대상을 이해할 수 있게 할 필요는 없다.
도 1은 예의 컴퓨터 메모리 및 관련된 어드레싱 체계를 도시하고 있다.
도 2는 도 1과 관련된 예의 캐시 입력 어드레스 구조를 도시하고 있다.
도 3은 추가적인 캐시 입력 어드레스 구조를 도시하고 있다.
도 4는 메모리 상에 캐시를 매핑하는 예를 도시하고 있다.
도 5는 일부 실시예에 따라 스플리트-인덱스 어드레스 구조를 갖는 캐시와 함께 이용될 수 있는 예의 처리 시스템을 도시하고 있다.
도 6은 일부 실시예에 따른 예의 컴퓨팅 및 저장 시스템을 도시하고 있다.
도 7a 내지 도 7c는 일부 실시예에 따라 예의 스플리트-인덱스 캐시 입력 어드레스 구조를 도시하고 있다.
도 8a 내지 도 8c는 일부 실시예에 따른 이미지 프레임 내의 블럭의 처리를 도시하고 있다.
도 9a 및 도 9b는 일부 실시예에 따른 이미지 블럭 상에 캐시의 매핑을 도시하고 있다.
도 10은 일부 실시예에 따른 이미지 프레임 상의 예의 캐시 매핑 체계를 도시하고 있다.
아래의 기술에서, 개시된 발명의 대상의 완벽한 이해를 제공하기 위해, 개시된 발명의 대상의 시스템 및 방법 및 그 시스템 및 방법이 동작할 수 있는 환경에 관한 다양한 특징 세부사항이 기술된다. 그러나, 개시된 발명의 대상이 그러한 특정의 세부사항 없이도 실시될 수 있고 당해 분야에서 널리 알려진 소정의 특징이 개시된 발명의 대상의 복잡성을 피하기 위해 상세하게 기술되지 않는다는 것은 당업자에게는 자명할 것이다. 또한, 아래에 제공되는 실시예는 예시적인 것이며 개시된 발명의 대상의 범위 내에는 다른 시스템 및 방법이 존재한다는 것이 예상된다고 이해될 것이다.
개시된 실시예는 병렬 처리 시스템에 대한 개선된 캐시 성능에 관한 것이다. 캐시 메모리는 수십년 동안 성능을 개선하기 위해 프로세서들에 의해 이용되어 왔다. 일반적으로, 캐시 메모리는 메인 메모리로부터의 판독 시간보다 적어도 한 차수의 크기만큼 더 적은 고속의 판독 시간을 가능하게 하는 소형 메모리이다. 트레이드오프(trade-off)로서, 이러한 고속 실행 캐시 메모리는 성능 향상을 가능하게 할 정도로 소형이어야 한다. 그러한 이유로 인해, 캐시 메모리에 데이터를 저장하기 위한 로케이션(location)을 선택하기 위한 효율적인 방법을 사용하는 것이 중요하다.
병렬 프로세서들이 하나의 캐시를 공유할 경우, 그 프로세서들은 그 캐시의 라인들에 대해 각각의 판독 및 기입을 병렬로 수행할 수 있다. 이러한 체계는 병렬 프로세서들이 그 캐시의 오버랩핑 영역에 매핑하는 데이터를 판독할 가능성이 없는 한 유익하다. 그러나, 공유된 캐시를 이용하게 되면, 두 개의 프로세서가 그 캐시의 동일 라인에 매핑하도록 된 메모리의 상이한 라인들로부터 판독을 시도할때마다(즉, 충돌이 존재할 경우) 성능의 감소가 야기될 것이다. 만약 병렬 프로세서들의 각각이 메모리 내의 상이한 라인들에 대한 액세스를 수행하는 것으로 알려져 있다면, 소정의 캐시 어드레싱 체계는 다수의 프로세서들로부터의 액세스로 인한 캐시 충돌의 가능성을 제거하는 데 이용될 수 있다. 스플리트-인덱스 어드레스 구조로 지칭되는 그러한 한가지 기술은 소정의 캐시 액세스 패턴들로 인해 발생하는 충돌을 경감하는 데 특히 잘 작동되며 아래에서 기술된다.
그러한 체계에 의해 개선될 수 있는 캐시 메모리를 이용하는 하나의 처리 형태는 고선명 비디오의 디코딩이다. 오늘날 많은 포맷들이 여전히 사용중에 있지만, 이 분야에서 널리 채택되어 온 한 포맷은 H.264/MPEG-4 Part 10, Advanced Video Coding(H.264 or MPEG-4 AVC)이다. 고선명 비디오 재생을 위한 코딩 시간을 개선하기 위해 복수의 처리 코어들 각각은 코어들 간에 공유되는 단일 캐시에 기입을 행할 수 있다. H.264 비디오에 관한 일반적인 논쟁이 여전히 남아 있지만, 비디오 압축의 다른 형태 또는 비디오 압축에 관련되지 않은 다른 처리 형태는 본 명세서에 개시된 저장 방법으로부터 이점을 가질 수 있다.
고선명 비디오 및 특히 H.264 비디오의 한가지 특징은, 비디오 프레임이 메모리 내에 버퍼링될 경우, 전체 프레임이 연속하는 어드레스 블록으로서 메모리에 저장되어 버퍼 내의 하나의 라인 상의 제1 바이트의 어드레스가 비디오 프레임 내의 한 라인의 제1 바이트가 된다는 것이다. 즉, 메모리 버퍼가 비디오 프레임의 폭보다 더 넓다고 하더라도, 비디오 프레임의 한 라인은 메모리 버퍼의 한 라인 상에 저장된다. 이러한 버퍼 충진 체계(buffer filling scheme)는 메모리 내로의 "타일링(tiling)"으로 지칭되며 그리고 메모리의 수평의 "스트라이드(stride)"(메모리의 행들의 폭)가 비디오 프레임의 수평 해상도보다 클 경우에 이용될 수 있다. 이는 미사용된 메모리의 각각의 라인의 엔드(end)를 넘어서 일부의 간격(space)을 남겨 놓을 수 있어서 그 라인들을 외부로 일부의 물리적 바운더리로까지 패딩할 수 있다.
메모리 내로 타일링된 비디오 프레임을 디코딩할 경우, 상이한 프로세서들이 비디오 프레임의 상이한 라인들을 병렬로 디코딩할 수 있다. 가령, 제1 프로세서는 제1 라인을 디코딩할 수 있는 반면 제2 프로세서는 제2 라인을 디코딩할 수 있다. 캐시 라인들은 전형적으로 매핑되어, 캐시 내의 연속하는 라인들은 메모리의 행 내의 연속하는 열들에 매핑되며, 복수의 프로세서들의 각각은 특정 시간에, 다른 프로세서들과 동일한 캐시 라인에 매핑하도록 된 데이터 블럭을 사용할 수 있다. 이러한 상황에서, 충돌이 생성되는데, 그 이유는 캐시의 하나의 라인이 두 개의 상이한 블럭을 저장할 수 없기 때문이다. 따라서, 복수의 프로세서들에 의해 액세스되는 블럭들 중의 적어도 하나는 메인 메모리로부터 검색되어야 한다. 복수의 프로세서들 간에서 공유되는 캐시의 미스 레이트(miss rate)를 감소시키기 위해, 본 개시된 실시예는 H.264 고선명 비디오와 관련된 저장 방법에 특정된 기술, 또는 MPEG 또는 MPEG2와 같은 블럭 기반 비디오 알고리즘을 제안하고 있다. 그러나, 이러한 기술들은 다른 병렬화된 고선명 비디오 처리, 또는 적당한 데이터 처리에서 캐시 성능을 개선시키도록 확장될 수 있다는 것이 이해되어야 한다.
H.264 비디오 포맷은 아래에서 기술되는 스플리트-인덱스 캐시 입력 어드레스 구조와 관련하여 사용될 수 있는 다수의 고유의 특징들을 포함하고 있다. H.264에서 비디오를 나타내는 데이터는 일련의 개개 프레임으로서 저장된다. 저장된 프레임은 다시 아래에서 보다 상세하게 논의되는 "매크로블럭"으로서 알려진 대형의 이산 정보 블럭으로 세분화된다. 압축된 비디오 스트림을 재구성할 경우, "참조 프레임"으로서 알려진 소정의 프레임들이 저장되고 시간상으로 참조 프레임들 간에 존재하는 중간 프레임들을 재구성하는 데 사용된다. 이 중간 프레임들은 렌더링될 프레임과 메모리 내의 최근접 참조 프레임 간의 차이로서 재구성된다. 이러한 현재의 프레임과 참조 프레임 간의 차이에 기반하여 비디오 프레임을 생성하는 방법은 "움직임 보상(motion compensation)"으로서 알려지며 그리고 이 방법은 상당한 압축을 제공하지만 또한 추가적인 처리 능력(processing power)을 필요로 한다.
아래의 실시예는 캐시 라인들에 대한 메인 메모리의 매핑에 관한 배경을 제공한다. 도 1은 전형적인 캐시의 소정의 엘리먼트들을 도시하기 위한 예의 메인 메모리(100)를 제공한다. 도 1은 32 바이트의 전체 용량을 가진 단순한 메인 메모리를 나타낸다. 메인 메모리(100)는 전체 16개의 셀에 대한 4 개의 행 및 4 개의 열로 구성된다. 도 1은 추가로 예의 열(102), 예의 행(104) 및 예의 셀(106)을 나타낸다.
도 1의 메인 메모리의 각각의 행, 가령 행(104)은 8개의 바이트를 포함하며, 각각의 열, 가령 열(102)은 4개의 바이트를 포함한다. 행들 및 열들 간의 교차부들은 전체 16개의 셀을 정의하며, 그 셀의 각각은 2개의 바이트를 포함한다. 가령, 셀(106)은 2개의 바이트의 데이터를 포함하며 그 셀은 열(102)과 행(104) 간의 교차부를 나타낸다. 도 1에서 볼 수 있는 바와 같이, 메인 메모리의 각각의 바이트에는 고유의 이진 어드레스(binary address)가 할당된다. 이 어드레스는 단지 메인 메모리 내의 특정 바이트의 어드레스의 로케이션(location)을 나타내는 이진수에 불과하다. 도 1의 32-바이트 메인 메모리의 경우, 각각의 이용가능 메모리 로케이션을 고유하게 나타내는 데 전체 5 비트가 필요하다.
메인 메모리(100)에서, 어드레스들은 좌측에서 우측으로, 상부에서 하부로의 접근법을 사용하여 할당된다. 도 1에 도시된 바와 같이, 좌측에서 우측으로 이동하는 행(104) 내의 각각의 어드레스는 이전의 어드레스보다 1 더 크다. 이러한 구성을 사용하게 되면, 메인 메모리(100) 내의 하나의 바이트를 나타내는 5 비트 메모리 어드레스에서, 2개의 최상위 비트(비트 3 및 4)는 메인 메모리 내의 행의 개수를 나타낸다. 가령, 도 1에서, 제1 행(104)의 두 개의 최상위 비트는 메인 메모리의 제1 행을 나타내는 "00"이다. 마찬가지로, 그 다음 행의 두 개의 최상위 비트는 메인 메모리의 제2 행, 제3 행, 및 제4 행을 제각기 나타내는 "01", "10", 및 "11"이다.
그 다음 두 개의 최상위 비트(비트 1 및 2)는 메인 메모리 내의 열의 개수를 나타낸다. 가령, 도 1에서, 제1 열(102)의 비트 1 및 2는 메모리 내의 제1 열을 나타내는 "00"이다. 마찬가지로, 그 다음 열의 비트 1 및 2는 메인 메모리의 제2 열, 제3 열, 및 제4 열을 제각기 나타내는 "01", "10", 및 "11"이다. 최종적으로, 최하위 비트(비트 0)는 메인 메모리 셀 내의 특정의 바이트를 나타낸다. 이러한 메모리 구성을 참조하여, 이 메모리와 관련하여 사용될 수 있는 단순한 캐시 메모리가 기술될 것이다.
32 바이트 메인 메모리를 도시하는 도 1을 참조하여, 메인 메모리와 관련될 수 있는 8바이트 캐시가 고려될 것이다. 32 바이트 메인 메모리와 관련된 입력들을 저장하는 8 바이트 캐시의 경우, 그 캐시는 특정의 시간 포인트에서 메인 메모리 내의 입력들의 1/4을 보유할 수 있다. 이 방법에 의해, 캐시에 저장되고 그 캐시로부터 제거될 입력들이 선택되며 이는 아래에서 보다 상세하게 기술될 것이다. 메인 메모리(100)와는 달리, 캐시는 행 및 열로 구성되지 않으며, 대신에 캐시는 전형적으로 메인 메모리가 저장할 수 있는 메인 메모리의 워드당 하나의 입력을 가질 것이다. 도 1을 참조하여 고려되고 있는 8 바이트 캐시의 경우, 각각의 워드는2 바이트이며(그 이유는 행들과 열들 간의 교차부에서 각각의 셀이 2 바이트를 포함하기 때문임), 따라서 캐시는 4개의 행을 가질 것이다.
도 2는 메인 메모리(100)에 입력들을 저장하기 위한 8바이트 캐시용의 일 예의 캐시 입력 어드레스 구조를 제공한다. 캐시 입력 어드레스 구조(200)는 태그(202), 인덱스(204), 및 오프셋(206)을 포함하고 있다. 이 실시예에서, 캐시 입력 어드레스 구조(200)는 그 길이가 5비트이며, 이는 메모리(100) 내의 각각의 바이트에 대한 고유의 어드레스와 동일한 길이가 된다. 캐시 입력 어드레스 구조는 메인 메모리가 어드레싱하는 메인 메모리의 사이즈에 따라 임의의 길이를 가질 수 있지만, 그 길이는 일반적으로 메인 메모리 내의 어드레스의 길이와 동일해야 한다는 것이 이해되어야 한다. 이 실시예에서, 태그(202)는 2 비트이며, 인덱스(204)는 2 비트이며, 오프셋(206)은 1 비트이다. 캐시 입력 어드레스 구조(200)가 가질 수 있는 각각의 값은 태그(202), 인덱스(204), 및 오프셋(206)을 사용하여 캐시 내의 단일 바이트에 대한 고유의 매핑을 제공한다.
캐시 입력 어드레스 구조(200)의 인덱스(204)는 캐시 입력 어드레스 구조(200)가 매핑되는 캐시의 행을 나타낸다. 인덱스(204)는 2 비트를 포함하기 때문에, 그 캐시 내에는 최대 22=4 개의 행이 존재할 수 있다. 캐시 입력 어드레스 구조(200)의 오프셋(206)은 캐시 입력 어드레스 구조(200)가 나타내는 캐시 행 내의 특정의 바이트를 나타낸다. 오프셋(206)이 1 비트를 포함하기 때문에, 각각의 캐시 행은 정확히 21=2 개의 바이트의 데이터를 포함한다. 따라서, 이 캐시는 임의의 소정 시간에 4*2=8 개의 바이트의 데이터를 저장할 수 있다. 또한, 이 실시예에서, 메인 메모리의 모든 8 개의 바이트(가령, 메인 메모리 로케이션 00000 내지 00111, 01000 내지 01111, 10000 내지 10111, 등)는 캐시 내의 고유의 로케이션에 매핑된다. 최종적으로 태그(202)는 그 캐시에 매핑되는 메인 메모리 로케이션의 상위 비트들을 포함하는 고유의 식별자이다. 이 실시예에서, 태그(202)는 2개의 비트이다(전술한 예에서 지속하면, 상위 비트들은 어드레스 00000의 처음 두 개의 자리이다). 이러한 구조의 결과로서, 동일한 3개의 최하위 비트를 공유하는 모든 메인 메모리 로케이션들(가령, 메인 메모리 로케이션 00011, 01011, 10011, 및 11011)은 그 캐시의 동일한 로케이션에 매핑될 것이다. 태그(202)는 필요한 추가의 정보를 저장하여 위 네 개의 가용 입력들 중 어떤 것이 그 캐시에 현재 저장되어 있는지를 결정한다. 이러한 단순한 캐시 및 메인 메모리는 예시적인 목적으로 제공되며 고선명 비디오를 처리하기 위해 훨씬 더 큰 캐시들 및 메인 메모리들이 사용된다. 추가적으로, 도 1 및 도 2를 참조하여 기술되는 이 단순한 캐시는 아래에서 상세히 기술될 이유로 인해 다수의 프로세서를 사용하여 비디오를 처리하기에는 부적합하다.
이제, 일부 실시예에 따라 보다 대형의 캐시 입력 어드레스 구조가 제공될 것이다. 도 3은 전형적인 캐시에 대한 일 예의 캐시 입력 어드레스 구조를 제공한다. 캐시 입력 어드레스 구조(300)는 태그(302), 인덱스(304) 및 오프셋(306)을 포함한다. 이 실시예에서, 캐시 입력 어드레스 구조(300)의 길이는 18 비트이다. 그러나, 캐시 입력 어드레스 구조는 캐시의 사이즈에 따라 임의의 길이일 수 있다. 이 실시예에서, 태그(302)는 10비트, 인덱스(304)는 5비트, 오프셋(306)은 3비트이다. 캐시 입력 어드레스 구조(300)가 취할 수 있는 각각의 값은 태그(302), 인덱스(304) 및 오프셋(306)을 사용하여 캐시 내의 단일 바이트에 고유의 매핑을 제공한다.
캐시 입력 어드레스 구조(300)의 인덱스(304)는 캐시 입력 어드레스 구조(300)가 매핑되는 캐시의 행을 나타낸다. 인덱스(304)가 5비트를 포함하기 때문에, 그 캐시 내에는 최대 25=32개의 행이 존재할 수 있다. 캐시 입력 어드레스 구조(300)의 오프셋(306)은 캐시 입력 어드레스 구조(300)가 참조하는 캐시 행 내의 특정의 바이트를 나타낸다. 오프셋(306)이 3비트를 포함하기 때문에, 각각의 캐시 행은 정확히 23=8 바이트의 데이터를 포함한다. 따라서, 이 캐시는 임의의 소정의 시간에 32*8=256 바이트의 데이터를 저장할 수 있다. 또한, 이 실시예에서, 메인 메모리의 모든 256 바이트(메인 메모리 로케이션 0x00000 내지 0x000FF, 0x00000 내지 0x001FF, 0x00000 내지 0x002FF, 등)는 그 캐시 내의 고유의 로케이션에 매핑된다. 최종적으로, 태그(302)는 그 캐시에 매핑된 메인 메모리 로케이션의 상위 비트들을 포함하는 고유 식별자이다. 이 실시예에서, 태그(302)는 10비트를 포함한다(이전의 실시예에 지속해서, 상위 비트들은 어드레스 0x00000의 처음 세 개의 자리이다).
캐시 입력에서 고유하게 매핑될 수 있는 전체 바이스들의 개수는 그 캐시 입력 어드레스 구조 내의 비트들의 개수와 관련된다(가령, 캐시 입력 어드레스 구조(300)는 218=256 킬로바이트(kB)의 데이터를 고유하게 매핑할 수 있다). 이 캐시 입력 어드레스 구조는 당해 분야에서 다양한 캐시 타입의 캐시 입력들을 어드레싱하는 데 공통으로 사용된다.
도 3의 캐시 입력 어드레스 구조를 사용하여 캐시 내로의 메모리 입력들을 매핑하는 개념을 추가적으로 예시하기 위해 아래의 실시예가 고려된다. 도 4는 도 3에서와 같이 구성된 캐시 입력을 가진 캐시 내로 복사될 수 있는 단순한 메인 메모리 구조(400)를 제공한다. 메인 메모리(400)는 수평의 폭(402)과 수직의 높이(404)를 포함할 수 있다. 추가로, 메모리 내의 단일 셀의 폭은 406으로 표시될 수 있다.
일 실시예에서, 도 4의 메인 메모리(400)의 수평의 폭(402)은 512개의 바이트이다. 이 실시예에 지속해서, 256개 바이트의 캐시가 메모리에 매핑된다. 도 3에서 개시된 캐시 입력 어드레스 구조를 이용하는 전형적인 캐시에서, 그 캐시는 아래의 방식으로 각기 8개 바이트의 32개의 행으로 구성된다. 도 4의 실시예에서, 그 캐시는 순차적으로 매핑되어 각각의 연속하는 인덱스는 인접한 열의 메모리 입력에 매핑된다. 따라서, 그 캐시의 각각의 행은 특정의 행 메인 메모리(400) 내의 연속하는 열들에 직접 매핑된다. 그 캐시가 이러한 방식으로 매핑될 경우, 오프셋 비트의 상위에 존재하는 최하위 비트들(도 3의 비트 3 내지 7)은 메인 메모리(400)의 행 내의 연속하는 열들을 나타낸다. 행 내의 연속적인 입력들이 캐시의 연속하는 라인들에 매핑되는 이러한 구성은 캐시 입력 어드레스 구조(300)의 구조의 결과가 된다. 특히, 캐시 입력 어드레스 구조(300)의 인덱스 비트들은 그 입력의 최하위 부분에 위치하게 된다. 메인 메모리 어드레스들의 해당 부분은 메인 메모리 내의 행들을 지칭한다. 이러한 구조를 사용하여, 캐시는 전술한 메인 메모리에 매핑되어야 한다.
본 실시예는 캐시 입력 어드레스가 위의 도 3의 캐시 입력 어드레스 구조(300)와는 상이한 포맷으로 저장되어 있는 캐시들의 사용을 제공한다. 이러한 캐시들은 캐시 입력의 인덱스가 상위 부분 및 하위 부분으로 분리되는 어드레스 구조를 이용한다. 이러한 구조는 "스플리트-인덱스"로 지칭될 것이며 아래에서 보다 상세하게 기술될 것이다. 캐시 입력들의 인덱스를 분리하는 것은 고선명 비디오 또는 다른 데이터를 병렬 프로세서들을 사용하여 디코딩할 때의 캐시 충돌의 가능성을 크게 감소시킬 수 있다. 가령, 전술한 문맥 및 기타의 문맥에서, 인덱스를 분리시키게 되면 비디오 프레임으로의 병렬 액세스들의 집약성(locality)을 증가시킬 수 있다.
도 5는 일부 실시예에 따라 이용될 수 있는 일 예의 처리 시스템(500)을 도시하고 있다. 도 5에서, 처리 시스템(500)은 프로세서들(502A, 502B, 502C, 및 502D)과, 레벨2(L2) 캐시(504)를 포함하고 있다.
프로세서들(502A, 502B, 502C, 및 502D)은 컴퓨터 명령어들을 처리할 수 있는 중앙 처리 장치(CPU)를 가진 임의의 하드웨어일 수 있다. 이 프로세서들(502A, 502B, 502C, 및 502D)은 또한 주문형 집적 회로(ASIC), 프로그램가능 로직 어레이(PLA), 디지털 신호 처리기(DSP), 필드 프로그램가능 게이트 어레이(FPGA), 또는 임의의 다른 집적 회로로 구현될 수도 있다. 컴퓨터 프로그램의 실행에 적합한 프로세서들(502A, 502B, 502C, 및 502D)은 예로서 특수 목적 마이크로프로세서, 디지털 신호 프로세서, 및 특수 목적 디지털 컴퓨터의 임의의 하나 이상의 프로세서를 포함한다. 일반적으로, 프로세서들(502A, 502B, 502C, 및 502D)은 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 이들 모두로부터 명령어 및 데이터를 수신한다.
L2 캐시(504)는 프로세서들(502A, 502B, 502C, 및 502D) 중의 임의의 프로세서로부터의 입력들을 캐싱할 수 있는 고속 실행 메모리를 포함한다. 일 실시예에서, L2 캐시(504)는 프로세서들(502A, 502B, 502C, 및 502D)에 의한 동시적인 액세스들을 가능하게 하는 공유된 캐시이다. 일 실시예에서, L2 캐시(504)는 아래에서 보다 상세하게 기술되는 스플리트-인덱스 어드레스 구조를 이용하여 어드레싱될 수 있다.
도 6은 일부 실시예에 따라 이용될 수 있는 일 예의 컴퓨팅 및 저장 시스템(600)을 제공한다. 도 6에서, 컴퓨팅 및 저장 시스템(600)은 저장 모듈(602) 및 컴퓨팅 시스템(604)을 포함한다. 저장 모듈(602)은 고용량 스토리지(606)를 포함한다. 컴퓨팅 시스템(604)은 메인 메모리(608) 및 처리 시스템(500)을 포함한다.
저장 모듈(602) 내의 고용량 스토리지(606)는 컴퓨팅 시스템(604) 내의 메인 메모리(608)에 직접 연결될 수 있다. 일 실시예에서, 고용량 스토리지(606)는 대량의 데이터를 저장할 수 있는 비휘발성 물리적 저장 매체일 수 있다. 일 실시예에서, 메인 메모리(608)는 데이터 입력을 동적으로 저장 및 액세싱할 수 있는 임의의 메모리일 수 있다. 일 구현예에서, 메인 메모리(608)는 고용량 스토리지(606)로부터의 입력을 저장할 수 있는 랜덤 액세스 메모리(RAM)일 수 있다. 처리 시스템(500)은 메인 메모리(608)와 직접적으로 통신할 수 있다. L2 캐시(504)는 메인 메모리(608)에 저장된 입력들을 추가로 캐싱할 수 있다. 일 실시예에서, L2 캐시(504)는 후술되는 스플리트-인덱스 어드레스 구조를 이용하여 입력들을 저장할 수 있다.
도 7a 내지 도 7c는 일부 실시예에 따른 스플리트-인덱스 캐시 입력들의 예를 제공한다. 도 7a 내지 도 7c에서, 캐시 입력 어드레스 구조는 오프셋, 상위 및 하위 태그, 및 상위 및 하위 인덱스를 포함한다.
도 7a는 소정의 실시예에 따른 소형 캐시를 위한 일 예의 캐시 입력 어드레스 구조를 제공한다. 캐시 입력 어드레스 구조(700A)는 상위 태그(702A), 상위 인덱스(704A), 하위 태그(706A), 하위 인덱스(708A), 및 오프셋(710A)을 포함한다. 이 실시예에서, 캐시 입력 어드레스 구조(700A)는 18 비트의 길이를 갖는다. 그러나, 캐시 입력 어드레스 구조는 캐시의 사이즈에 따라 임의의 길이를 가질 수 있다는 것이 이해되어야 한다. 이 실시예에서, 상위 태그(702A)는 5비트이며, 상위 인덱스(704A)는 4비트이며, 하위 태그(706A)는 5비트이며, 하위 인덱스(708A)는 1 비트이며, 오프셋(710A)은 3비트이다. 주목할 것은, 인텍스 및 태그가 상위 부분 및 하위 부분으로 분리되었다하더라도, 그것은 전통적인 캐시 입력 어드레스의 대응하는 태그 및 인덱스와 전체적인 길이가 동일하게 유지된다는 것이다.
캐시 입력 어드레스 구조(700A)의 상위 인덱스(704A) 및 하위 인덱스(708A)의 조합은 여전히 캐시 입력 어드레스 구조(700A)가 매핑되는 캐시의 행을 나타낸다. 상위 인덱스(704A) 및 하위 인덱스(708A)가 함께 5비트를 포함하기 때문에, 그 캐시 내에는 최대 25=32개의 행이 존재할 수 있다. 캐시 입력 어드레스 구조(700A)의 오프셋(710A)은 여전히 캐시 입력 어드레스 구조(700A)가 참조하는 캐시 행 내의 특정의 바이트를 나타낸다. 오프셋(710A)이 3비트를 포함하기 때문에, 각각의 캐시 행은 정확히 23=8개 바이트의 데이터를 포함한다. 따라서, 이 캐시는 임의의 소정의 시간에 32*8=256개 바이트의 데이터를 저장할 수 있다. 이전의 예와 마찬가지로, 메모리의 256개 바이트의 청크들(chunks)은 캐시 내의 고유의 로케이션들에 매핑된다. 최종적으로, 상위 태그(702A) 및 하위 태그(706A)의 결합(concatenation)은 캐시에 매핑된 메모리 로케이션에 대한 고유 식별자를 포함한다. 이 실시예에서, 결합된 태그는 10 비트를 포함한다.
인덱스의 상위 부분(704A) 및 하위 부분(708A)에 대해 선택된 특정의 비트들은 캐시 입력들의 매핑에 대한 특수한 의미(significance)를 갖는다. 하위 부분(708A)은 매핑되는 메모리의 열을 나타내도록 선택된다. 인덱스(708A)의 하위 부분은 그 길이가 오직 1비트일 뿐이고, 따라서 그 하위 부분은 두 개의 열 중 하나의 열만을 나타낼 수 있다. 인덱스의 나머지, 즉 상위 부분(704A)은 매핑되는 메모리의 행을 나타내도록 선택된다. 이 실시예에서, 인덱스의 상위 부분(704A)은 그 길이가 4비트이며, 따라서 그 상위 부분은 16개 열 중의 하나를 나타낼 수 있다. 따라서 캐시 입력들의 이러한 구성은 캐시 내의 메모리 엘리먼트들의 로케이션들을 크게 변경한다.
주목할 것은 도 2 및 3의 실시예에서 인덱스 비트들만이 캐시 입력 어드레스 구조 내의 그 로케이션들로 인한 특정 행의 상이한 열을 나타낸다는 것이다(도 2에서, 비트 1 및 2는 열을 나타내며 비트 3 및 4는 행을 나타낸다). 태그 및 인덱스를 나타내는 비트들이 도 2에서 교환되어 있다면, 캐시 입력들은 동일한 열 내의 상이한 행을 나타낼 것이다. 도 7a를 참조하면, 스플리트-인덱스의 로케이션들은 메모리 내의 행 및 열 어드레스의 최하위 비트를 나타내므로 조심스럽게 선택된다.
도 7a 및 도 7b는 일부 실시예에 따른 대형의 메모리에 대응하는 캐시 입력 어드레스 구조를 나타낸다. 도 7b에서, 캐시 입력 어드레스 구조(700B)는 상위 태그(702B), 상위 인덱스(704B), 하위 태그(706B), 하위 인덱스(708B), 및 오프셋(710B)을 포함한다. 이 실시예에서, 캐시 입력 어드레스 구조(700B)는 그 길이가 32 비트이다. 그러나, 캐시 입력 어드레스 구조는 그 캐시의 사이즈에 따라 임의의 길이일 수 있다는 것이 이해되어야 한다. 이 실시예에서, 상위 태그(702B)는 12비트이며, 상위 인덱스(704B)는 9비트이며, 하위 태그(706B)는 4비트이며, 하위 인덱스(708B)는 1비트이며, 오프셋(710B)은 6비트이다.
2-웨이 세트 연관성 캐시(2-way set associative cache)를 가정하면, 이 입력 어드레스 구조에 의해 표시되는 캐시는 다음과 같이 결정된다. 오프셋이 6비트이기 때문에, 이 캐시의 각각의 행은 26=64개의 바이트를 포함한다. 또한, 스플리트-인덱스의 하위 부분(708B)은 1비트이고 상위 부분은 9비트이기 때문에, 캐시 내로 매핑되는 메모리의 각각의 '블럭'은 21=2 개의 열의 폭과 29=512개의 행의 높이를 가지며 64kB의 사이즈를 갖는다는 것을 알 수 있다. 캐시는 2-웨이 세트 연관성 캐시이기 때문에, 그 캐시의 전체 사이즈는 26*21*29*21=217=128 kB이다.
도 7c에서, 캐시 입력 어드레스 구조(700C)는 상위 태그(702C), 상위 인덱스(704C), 하위 태그(706C), 하위 인덱스(708C), 및 오프셋(710C)을 포함한다. 이 실시예에서, 캐시 입력 어드레스 구조(700C)는 그 길이가 32비트이다. 이 실시예에서, 상위 태그(702C)는 13비트이며, 상위 인덱스(704C)는 8비트이며, 하위 태그(706C)는 3비트이며, 하위 인덱스(708C)는 2비트이며, 오프셋(710C)은 6비트이다.
2-웨이 세트 연관성 캐시(2-way set associative cache)를 가정하면, 이 입력 어드레스 구조에 의해 표시되는 캐시는 다음과 같이 결정된다. 오프셋이 6비트이기 때문에, 이 캐시의 각각의 행은 26=64개의 바이트를 포함한다. 또한, 스플리트-인덱스의 하위 부분(708B)은 2비트이고 상위 부분은 8비트이기 때문에, 캐시 내로 매핑되는 메모리의 각각의 '블럭'은 22=4개의 열의 폭과 28=256개의 행의 높이를 가지며 64kB의 사이즈를 갖는다는 것을 알 수 있다. 캐시는 2-웨이 세트 연관성 캐시이기 때문에, 그 캐시의 전체 사이즈는 26*21*29*21=217=128 kB이다. 도 7a 내지 도 7c에 기술되는 포맷을 사용하면, 캐시는 하나의 메모리에 걸쳐 임의의 블럭 배치에 매핑되도록 구성될 수 있다.
도 8a 내지 도 8c와 도 9a 및 도 9b는 다수의 프로세서들을 병렬로 사용하는 비디오 디코딩 시스템에 대한 스플리트-인덱스 어드레스 구조의 적용을 도시하고 있다. 특히, 도 8a 내지 도 8c는 H.264 비디오 포맷 또는 다른 데이터 포맷에 따라 디코딩되는 일 예의 이미지를 제공한다. 도 8a는 매크로블럭의 구성요소로 쪼개진 이미지(가령, 렌치(wrench))의 프레임을 도시하고, 도 8b 및 도 8c는 디코딩 프로세스의 상이한 스테이지들 동안의 동일한 이미지를 도시하고 있다.
도 8a는 일부 실시예에 따라 샘플 이미지의 상부 상에 중첩된 그리드를 제공한다. 도 8a에서, 그리드는 전체 128개이 블럭에 대해 8개의 행 및 16개의 열로 구성된다. 이 실시예는 예시 목적용으로만의 이미지를 구성하는 128개의 블럭을 도시하고, 고선명 비디오의 프레임은 실제로 보다 많은 개수의 매크로블럭으로 구성될 것이라는 것이 이해되어야 한다. 프로세서들(502A(P1), 502B(P2), 502C(P3), 502D(P4))의 각각은 이미지 프레임의 상이한 행을 디코딩한다. 가령, 도 8a에서, 프로세서(502A)는 제1 행(행 0)을 디코딩하고, 프로세서(502B)는 제2 행(행 1)을 디코딩하고, 프로세서(502C)는 제3 행(행 2)을 디코딩하고, 프로세서(502D)는 제4 행(행 3)을 디코딩한다. 한 행의 처리를 마무리하게 되면, 각각의 프로세서는 네 개의 행에 앞서 진행하여 처리를 지속한다. 따라서, 프로세서(502A)는 제5 행(행 4)을 디코딩하고, 프로세서(502B)는 제6 행(행 5)을 디코딩하고, 프로세서(502C)는 제7 행(행 6)을 디코딩하고, 프로세서(502D)는 제8 행(행 7)을 디코딩한다.
도 8b는 처리를 개시한 후의 한 스테이지에서의 이미지 프레임의 디코딩을 도시하고 있다. 도 8b에서, 처리중에 있는 블럭들은 그레이로 강조된 박스들로 표시된다. 이 스테이지에서, 프로세서(502A)는 이미지 프레임의 행 0의 열 5-8 내의 블럭을 처리하고, 프로세서(502B)는 이미지 프레임의 행 1의 열 4-7 내의 블럭을 처리하고, 프로세서(502C)는 이미지 프레임의 행 2의 열 3-6 내의 블럭을 처리하고, 프로세서(502D)는 이미지 프레임의 행 3의 열 2-5 내의 블럭을 처리한다. 전형적인 프로세서는 고선명 비디오를 디코딩할 때 네 개의 블럭을 동시에 디코딩할 것이라는 것을 이해해야 한다. 그러나, 프로세서들은 속도 및 메모리 제약에 따라 보다 크거나 보다 작은 개수의 블럭 및 행을 동시에 디코딩할 수 있다. 추가로, 전형적인 것은 프로세서들이 도 8b에 도시된 바와 같이 이미지 프레임의 상이한 열들의 블럭들을 동시에 디코딩할 것이라는 것이지만, 이는 필수적인 것은 아니다.
도 8c는 처리의 나중 스테이지에서의 이미지 프레임의 디코딩을 도시하고 있다. 이 스테이지에서, 프로세서(502A)는 이미지 프레임의 행 0의 열 16 내의 블럭과 이미지 프레임의 행 4의 열 0-2 내의 블럭을 처리하고, 프로세서(502B)는 이미지 프레임의 행 1의 열 14-15 내의 블럭과 이미지 프레임의 행 5의 열 0-1 내의 블럭을 처리하고, 프로세서(502C)는 이미지 프레임의 행 2의 열 13-15 내의 블럭과 이미지 프레임의 행 6의 열 0 내의 블럭을 처리하고, 프로세서(502D)는 이미지 프레임의 행 3의 열 12-15 내의 블럭을 처리한다. 도 8a 내지 도 8c에 도시된 바와 같은 상이한 프로세서들을 통해 이미지 프레임의 행을 동시에 처리하는 것은 전술한 바와 같이, 이미지 프레임을 메모리 내로 타일링(tiling)함으로써 가능해진다.
도 9a 및 도 9b는 일부 실시예에 따라 도 8a 내지 도 8c의 이미지 프레임의 블럭들 상으로의 캐시 라인들의 매핑을 도시하고 있다. 도 9a는 전형적인 캐시에 따른 캐시 라인 매핑을 도시하지만, 도 9b는 전술한 스플리트-인덱스 캐시 어드레스 구조를 이용하는 캐시 라인 매핑을 도시하고 있다.
도 9a에서, 전형적인 16 바이트 캐시의 캐시 라인의 매핑이 도시된다. 예시용으로, 이미지 프레임 내의 각각의 블럭은 1바이트로 구성된다고 가정된다. 도 9a는 전형적인 캐시의 경우, 이미지 프레임의 각각의 행 내의 각각의 블럭은 캐시의 상이한 행에 매핑될 것이라는 것을 나타내고 있다. 도 9a로부터 볼 수 있는 바와 같이, 네 개의 블럭이 상이한 프로세서들의 각각에 의해 동시에 처리될 경우, 이는 하나 초과의 프로세서가 캐시의 동일 로케이션에 매핑되는 블럭을 사용하는 충돌을 초래할 수 있다. 가령, 도 9a에서, 프로세서들(502A, 502B 및 502C)의 각각은 캐시의 라인 5에 매핑되는 블럭들에 대한 동시적인 판독을 행한다. 따라서, 이러한 액세스 요청들 중의 적어도 두개는 캐시 미스(cache miss)를 초래하여 성능 감소를 초래할 것이다. 이와 같은 충돌은 이전에 디코딩된 이미지가 기준 이미지로서 다수의 병렬 프로세서들에 의해 병렬적으로 동시에 액세스될 때 발생한다. 병렬 프로세서들의 각각이 이미지의 공간상으로 인접한 블럭들에 대해 작용하기 때문에, 그 프로세서들이 필요로 하는 기준 이미지의 부분들이 중첩할 가능성이 높아진다. 도 9a의 캐시 레이아웃으로 인해, 각각의 프로세서가 필요로 하는 기준 이미지의 상이한 부분은 캐시 내의 동일한 로케이션에 매핑될 것이다.
도 9b에서, 일부 실시예에 따라 스플리트-인덱스 구조로 매핑된 캐시의 캐리 라인의 매핑이 제공된다. 도 9b는 이미지 프레임의 각각의 행 내의 블럭들이 반복 방식으로 캐시 라인에 매핑될 수 있다는 것을 나타낸다. 가령, 이미지 프레임의 행 1의 처음 네 개의 블럭은 도 9a에서와 같이 캐시 라인 0-3에 매핑된다. 그러나, 도 9a에서와는 달리, 행 1 내의 그 다음 네 개의 블럭은 또한 캐시 라인 0-3에 매핑된다. 행 1 내의 이미지 프레임 내의 모든 네 개의 블럭들은 도 9b에 도시된 바와 같이 동일한 세트의 캐시 라인에 매핑된다. 그 이미지로부터 볼 수 있듯이, 프로세서(502A)에 의해 디코딩되는 모든 행의 모든 블럭은 캐시 라인 0-3에만 매핑될 수 있다. 마찬가지로, 프로세서(502B)에 의해 디코딩되는 모든 행의 모든 블럭은 오직 캐시 라인 4-7에만 매핑된다. 이러한 방식으로 캐시를 이미지 프레임에 매핑할 경우, 분명한 것은 프로세서들(502A-502D)이 또 다른 프로세서와 동일한 캐시 라인에 매핑되는 블럭에 액세스할 수 없다는 것이다. 따라서, 이러한 구성은 상이한 프로세서들로부터의 동시적인 액세스들로부터 발생하는 캐시 충돌을 제거한다.
충돌을 회피하기 위한 이미지 프레임 상으로의 캐시 라인들의 특정 매핑은 프로세서들의 개수 및 단일 프로세서에 의해 병렬로 처리되는 블럭들의 개수에 의존적이다. 캐시는 소정의 프로세서에 의해 동시에 처리되는 것 만큼의 이미지 프레임의 행 내의 블럭들에 고유하게 매핑되어야 한다. 도 9b에서, 네 개의 블럭은 동시에 처리될 수 있으며, 따라서 이미지 프레임의 한 행당 캐시의 적어도 네 개의 행이 필요하다. 추가로, 네 개의 프로세서들이 사용되므로, 블럭의 적어도 네 개의 공유의 세트는 각각의 프로세서에 대해 하나의 세트가 이용가능해야 한다. 이러한 제약은 도 9b의 16바이트 캐시에 대해 선택된 캐시 라인의 구성을 초래한다. 주목해야 할 것은, 만약 캐시가 필요한 것보다 크다면, 전술한 요건을 유지하는 임의의 매핑 체계는 멀티프로세서 시스템으로부터 발생하는 충돌을 회피하는 데 적합하다는 것이다. 이와 같이, 전술한 체계를 사용하게 되면, 데이터는 메인 메모리 내로 타일링될 수 있고 애플리케이션 소프트웨어의 특정 요건에 따라 캐시 라인들에 매핑될 수 있다.
도 10은 일부 실시예에 따른 병렬 프로세서에 의해 디코딩되는 H.264 이미지 프레임(1000)의 특정 구성을 도시하고 있다. 도 10은 행(1002) 및 열(1004)을 포함하고 있다. 각각의 행은 H.264 비디오의 이미지 프레임과 연관된 임의의 개수의 매크로블럭을 저장하되, 그 단서 조항은 메모리의 각각의 행은 이미지 프레임 내의 데이터의 단일 행과 관련된 매크로블럭만을 저장한다는 것이다.
이러한 구성에 기초하여, 캐시 입력 어드레스들이 구성되어, 모든 제5의 매크로블럭이 동일한 캐시 입력에 매핑된다(가령, 도 6a 내지 도 6c의 전술한 논의에서, 인덱스의 하위 부분은 2 비트이어서 4개의 열에 매핑될 수 있다). 따라서, 행(1002) 내의 모든 제5의 매크로블럭은 캐시의 동일한 행에 매핑될 것이며, 행(1004) 내의 모든 제5의 매크로블럭은 캐시의 동일한 행에 매핑될 것이다. 그러나, 행(1002) 내의 매크로블럭들은 행(1004) 내의 매크로블럭과 동일한 캐시 라인들 중 어느 것에도 매핑되지 않을 것이며, 행(1004) 내의 매크로블럭들은 행(1002) 내의 매크로블럭과 동일한 캐시 라인들 중 어느 것에도 매핑되지 않을 것이다. 중요하게도, 일 실시예에서, 이미지 프레임의 상이한 행들은 상이한 프로세서들에 의해 병렬로 디코딩된다. 이러한 방식으로 캐시를 구성함으로써, 공유된 캐시를 사용하는 다양한 프로세서들은 다른 프로세서들에 의해 사용중인 캐시의 부분들에 오버라이팅(overwrite)하도록 시도하지는 않을 것이다. 이는 프로세서들이 캐시 공간을 차지하려고 다투는 것을 차단함으로써 캐시 미스 레이트를 크게 감소시켜 캐시 히트 레이트(cache hit rate)를 전반적으로 효과적으로 증가시키는 효과를 가진다.
본 명세서에서 수 개의 상이한 구성들이 개시되었지만, 각각의 특징이 다양한 형태에서 함께 효과적으로 결합되어 이점을 달성할 수 있다는 것이 이해될 것이다.
전술한 설명에서, 본 출원은 특정의 실시예를 참조하여 기술되었다. 그러나, 분명한 것은 첨부된 특허청구범위에서 열거되는 본 발명의 보다 넓은 사상 및 범주를 벗어나지 않고 다양한 변형 및 수정이 가해질 수 있다는 것이다. 가령, 커넥션은 가령 중간의 디바이스들을 경유하여 제각기의 노드, 유닛들 또는 디바이스들에 대해 신호를 교환하는 데 적합한 임의의 타입의 커넥션일 수 있다. 따라서, 달리 의미되거나 언급되지 않는 이상, 이 커넥션은 가령 다이렉트 커넥션 또는 인다이렉트 커넥션일 수 있다.
본 명세서에 도시된 아키텍처들은 단지 예시적인 것에 불과하며 사실상 동일한 기능을 수행하는 다른 많은 아키텍처들이 구현될 수 있다는 것을 이해해야 한다. 추상적이지만 여전히 명확한 의미에서, 동일한 기능을 수행하는 컴포넌트들의 임의의 구성이 효과적으로 연관되어 원하는 기능이 달성된다. 따라서, 특정의 기능을 달성하도록 결합되는 임의의 두 개의 컴포넌트는 서로 '연관된 것'으로서 보여질 수 있어서 아키텍처들 또는 중간의 컴포넌트들과는 무관하게 원하는 기능이 달성될 수 있다. 마찬가지로, 그렇게 연관된 임의의 두 개의 컴포넌트들은 또한 원하는 기능을 달성하도록 서로에 대해 '동작가능하게 연결된 것' 또는 '동작가능하게 결합된 것'으로 간주될 수 있다.
또한, 당업자는 전술한 동작들의 기능들 간의 경계는 예시적인 것에 불과하다는 것을 인식할 것이다. 다수의 동작들의 기능은 단일 동작으로 결합될 수 있고/있거나 단일 동작의 기능은 추가의 동작들에 배포될 수 있다. 또한, 대안의 실시예들은 특정의 동작의 다수의 사례를 포함할 수 있고, 이들 동작들의 순서는 다양한 다른 실시예에서 변경될 수 있다.
그러나, 다른 수정, 변경, 및 대안이 또한 가능하다. 따라서, 상세한 설명 및 도면은 제한적인 의미보다는 예시적인 의미로 간주되어야 한다.
청구범위에서, 괄호 내에 위치한 임의의 참조 부호는 청구범위를 제한하는 요소로서 해석되지 않는다. '포함'의 용어는 청구항에 열거된 엘리먼트들 외의 다른 엘리먼트들 또는 단계들의 존재를 배제하는 것이 아니다. 본 명세서에 사용되는 단수의 용어는 하나 또는 그 하나를 초과하는 것으로서 정의된다. 또한, 청구범위에서의 "적어도 하나" 및 "하나 이상"의 구문의 사용은 단수 용어에 의한 다른 청구항의 엘리먼트의 도입이 그 도입된 청구항의 엘리먼트를 포함한 임의의 특정의 청구항을 그러한 단일의 엘리먼트만을 포함하는 발명으로 제한하는 것을 의미하는 것으로 해석되지 않아야 하며, 이는 비록 동일한 청구항이 "하나 이상" 또는 "적어도 하나"의 구문 및 단수 용어를 포함한다고 하더라도 마찬가지로 적용된다. 이는 정관사를 사용하는 경우에도 마찬가지로 적용된다. 달리 언급되지 않는한, '제1' 및 '제2'와 같은 용어는 그러한 용어가 기술하는 엘리먼트들 간을 임의로 구별하는 데 사용된다. 따라서, 이러한 용어는 전적으로 그러한 엘리먼트들의 임시적인 우선순위 또는 다른 우선순위를 나타내는 것으로 의미되는 것은 아니다. 소정의 조치들이 서로 상이한 청구항들에서 열거된다는 단순한 사실은 이들 조치들의 조합이 이점이 되도록 사용될 수 없다는 것을 나타내는 것이 아니다.

Claims (20)

  1. 프로세서 서브시스템으로서,
    메모리와 통신하는 하나 이상의 프로세서 코어와,
    복수의 캐리 라인을 포함하는 캐시를 포함하되,
    상기 캐시는
    상기 메모리의 제1 로케이션(first location)과 연관된 제1 어드레스의 제1 세트의 비트들(a first set of bits)로부터 제1 인덱스를 결정하고,
    상기 제1 어드레스의 제2 세트의 비트들로부터 제2 인덱스를 결정하며- 상기 제1 어드레스의 상기 제2 세트의 비트들은 상기 제1 어드레스의 제3 세트의 비트들에 의해 상기 제1 어드레스의 상기 제1 세트의 비트들로부터 분리됨 -,
    상기 메모리의 상기 제1 로케이션으로부터의 데이터를, 결합 인덱스(a combined index)에 의해 참조되는 상기 캐시 라인들 중의 제1 캐시 라인에 저장하되, 상기 결합 인덱스는 상기 제1 인덱스와 상기 제2 인덱스의 결합에 기초하는
    프로세서 서브시스템.
  2. 제1항에 있어서,
    상기 캐시는 상기 제1 인덱스와 상기 제2 인덱스를 연결(concatenating)하여 상기 결합 인덱스를 결정하는
    프로세서 서브시스템.
  3. 제1항 또는 제2항에 있어서,
    상기 캐시는 또한 상기 제1 어드레스의 상기 제3 세트의 비트들과 상기 제1 어드레스의 제4 세트의 비트들을 결합하여, 상기 메모리의 상기 제1 로케이션을 식별하는 식별자를 결정하는
    프로세서 서브시스템.
  4. 제3항에 있어서,
    상기 캐시는 상기 제1 어드레스의 상기 제3 세트의 비트들과 상기 제1 어드레스의 상기 제4 세트의 비트들을 연결하여 상기 식별자를 결정하는
    프로세서 서브시스템.
  5. 제3항에 있어서,
    상기 캐시는 상기 캐시 라인들 중 상기 제1 캐시 라인 내에서 상기 메모리의 상기 제1 로케이션이 매핑되는 위치를 결정하고, 상기 캐시는 상기 제1 어드레스의 제5 세트의 비트들에 기초하여 상기 위치를 결정하는
    프로세서 서브시스템.
  6. 제1항 또는 제2항에 있어서,
    상기 제1 어드레스의 상기 제1 세트의 비트들, 상기 제1 어드레스의 상기 제2 세트의 비트들, 또는 상기 제1 어드레스의 상기 제3 세트의 비트들 중 적어도 하나의 세트는 1 비트의 크기를 갖는
    프로세서 서브시스템.
  7. 제1항 또는 제2항에 있어서,
    상기 하나 이상의 프로세서 코어는 적어도 2개의 프로세서 코어를 포함하고, 상기 적어도 2개의 프로세서 코어 각각은 상기 캐시 라인들 중 서로 다른 캐시 라인을 동시에 액세스하는
    프로세서 서브시스템.
  8. 장치로서,
    인덱스들에 의해 참조되는 캐시 라인들과,
    메모리의 제1 로케이션과 연관된 제1 어드레스의 제1 세트의 비트들 및 제2 세트의 비트들 제각각으로부터 제1 인덱스 부분 및 제2 인덱스 부분을 결정하는 수단- 상기 제1 어드레스의 상기 제1 세트의 비트들과 상기 제2 세트의 비트들은 상기 제1 어드레스의 제3 세트의 비트들에 의해 분리됨 -과,
    상기 메모리의 상기 제1 로케이션을, 상기 인덱스들 중 제1 인덱스에 의해 참조되는 상기 캐시 라인들 중의 제1 캐시 라인에 매핑하는 수단을 포함하되,
    상기 매핑하는 수단은 상기 제1 인덱스 부분과 상기 제2 인덱스 부분의 결합에 기초하여 상기 인덱스들 중 상기 제1 인덱스를 결정하고, 캐시가 상기 메모리의 상기 제1 로케이션으로부터의 데이터를 상기 캐시 라인들 중 상기 제1 캐시 라인에 저장하는
    장치.
  9. 제8항에 있어서,
    상기 매핑하는 수단은 상기 제1 인덱스 부분과 상기 제2 인덱스 부분을 연결하여 상기 인덱스들 중 상기 제1 인덱스를 결정하는
    장치.
  10. 제8항 또는 제9항에 있어서,
    상기 결정하는 수단은 상기 제1 어드레스의 상기 제3 세트의 비트들과 상기 제1 어드레스의 제4 세트의 비트들을 결합하여, 상기 메모리의 상기 제1 로케이션을 식별하는 식별자를 결정하는
    장치.
  11. 제10항에 있어서,
    상기 결정하는 수단은 상기 제1 어드레스의 상기 제3 세트의 비트들과 상기 제1 어드레스의 상기 제4 세트의 비트들을 연결하여 상기 식별자를 결정하는
    장치.
  12. 제10항에 있어서,
    상기 결정하는 수단은 상기 캐시 라인들 중의 상기 제1 캐시 라인 내에서 상기 메모리의 상기 제1 로케이션이 매핑되는 위치를 결정하고, 상기 위치는 상기 제1 어드레스의 제5 세트의 비트들에 기초하여 결정되는
    장치.
  13. 제8항 또는 제9항에 있어서,
    상기 제1 어드레스의 상기 제1 세트의 비트들, 상기 제1 어드레스의 상기 제2 세트의 비트들, 또는 상기 제1 어드레스의 상기 제3 세트의 비트들 중 적어도 하나의 세트는 1 비트의 크기를 갖는
    장치.
  14. 제8항 또는 제9항에 있어서,
    상기 캐시 라인들 중 서로 다른 캐시 라인을 동시에 액세스하도록 적어도 2개의 프로세서 코어를 스케줄링하는 수단을 더 포함하는
    장치.
  15. 방법으로서,
    로직 회로를 통해, 메모리의 제1 로케이션과 연관된 제1 어드레스의 제1 세트의 비트들로부터 제1 인덱스를 결정하는 단계와,
    상기 로직 회로를 통해, 상기 제1 어드레스의 제2 세트의 비트들로부터 제2 인덱스를 결정하는 단계- 상기 제1 어드레스의 상기 제2 세트의 비트들은 상기 제1 어드레스의 제3 세트의 비트들에 의해 상기 제1 어드레스의 상기 제1 세트의 비트들로부터 분리됨 -와,
    상기 메모리의 상기 제1 로케이션으로부터의 데이터를, 결합 인덱스에 의해 참조되는 복수의 캐시 라인 중의 제1 캐시 라인에 저장하는 단계- 상기 결합 인덱스는 상기 제1 인덱스와 상기 제2 인덱스의 결합에 기초함 -를 포함하는
    방법.
  16. 제15항에 있어서,
    상기 제1 인덱스와 상기 제2 인덱스를 연결하여 상기 결합 인덱스를 결정하는 단계를 더 포함하는
    방법.
  17. 제15항 또는 제16항에 있어서,
    상기 메모리의 상기 제1 로케이션을 식별하는 식별자를 결정하기 위해 상기 제1 어드레스의 상기 제3 세트의 비트들과 상기 제1 어드레스의 제4 세트의 비트들을 결합하는 단계를 더 포함하는
    방법.
  18. 제17항에 있어서,
    상기 제1 어드레스의 상기 제3 세트의 비트들과 상기 제1 어드레스의 제4 세트의 비트들을 결합하는 단계는 상기 식별자를 결정하기 위해 상기 제1 어드레스의 상기 제3 세트의 비트들과 상기 제1 어드레스의 상기 제4 세트의 비트들을 연결하는 것을 포함하는
    방법.
  19. 제17항에 있어서,
    상기 캐시 라인들 중 상기 제1 캐시 라인 내에서 상기 메모리의 상기 제1 로케이션이 매핑되는 위치를 결정하는 단계를 더 포함하되, 상기 위치를 결정하는 단계는 상기 제1 어드레스의 제5 세트의 비트들에 기초하는
    방법.
  20. 제15항 또는 제16항에 있어서,
    상기 제1 어드레스의 상기 제1 세트의 비트들, 상기 제1 어드레스의 상기 제2 세트의 비트들, 또는 상기 제1 어드레스의 상기 제3 세트의 비트들 중 적어도 하나의 세트는 1 비트의 크기를 갖는
    방법.
KR1020197035123A 2015-05-19 2016-05-11 스플리트-인덱스를 사용한 캐시 어드레싱 시스템 및 방법 KR102173474B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/716,588 US9916252B2 (en) 2015-05-19 2015-05-19 Systems and methods for addressing a cache with split-indexes
US14/716,588 2015-05-19
PCT/IB2016/000709 WO2016185272A1 (en) 2015-05-19 2016-05-11 Systems and methods for addressing a cache with split-indexes

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020177033282A Division KR102052256B1 (ko) 2015-05-19 2016-05-11 스플리트-인덱스를 사용한 캐시 어드레싱 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20190135549A true KR20190135549A (ko) 2019-12-06
KR102173474B1 KR102173474B1 (ko) 2020-11-04

Family

ID=56178393

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020177033282A KR102052256B1 (ko) 2015-05-19 2016-05-11 스플리트-인덱스를 사용한 캐시 어드레싱 시스템 및 방법
KR1020197035123A KR102173474B1 (ko) 2015-05-19 2016-05-11 스플리트-인덱스를 사용한 캐시 어드레싱 시스템 및 방법

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020177033282A KR102052256B1 (ko) 2015-05-19 2016-05-11 스플리트-인덱스를 사용한 캐시 어드레싱 시스템 및 방법

Country Status (6)

Country Link
US (3) US9916252B2 (ko)
EP (1) EP3298496A1 (ko)
KR (2) KR102052256B1 (ko)
CN (2) CN108139975B (ko)
DE (1) DE112016002247T5 (ko)
WO (1) WO2016185272A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9916252B2 (en) 2015-05-19 2018-03-13 Linear Algebra Technologies Limited Systems and methods for addressing a cache with split-indexes
US10565115B2 (en) * 2017-03-30 2020-02-18 Western Digital Technologies, Inc. Calculating the optimal number of LBNS to prefetch per CPU
CN111372038B (zh) * 2018-12-26 2021-06-18 厦门星宸科技有限公司 多串流影像处理装置及方法
US20210065758A1 (en) * 2019-08-29 2021-03-04 Advanced Micro Devices, Inc. Adaptable allocation of sram based on power

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5687350A (en) * 1995-02-10 1997-11-11 International Business Machines Corporation Protocol and system for performing line-fill address during copy-back operation
US6339822B1 (en) * 1998-10-02 2002-01-15 Advanced Micro Devices, Inc. Using padded instructions in a block-oriented cache
US6477613B1 (en) * 1999-06-30 2002-11-05 International Business Machines Corporation Cache index based system address bus
KR20110127733A (ko) * 2009-03-03 2011-11-25 콸콤 인코포레이티드 구성가능한 캐시 및 그 구성 방법
US20120210069A1 (en) * 2009-10-25 2012-08-16 Plurality Ltd. Shared cache for a tightly-coupled multiprocessor
US20140040541A1 (en) * 2012-08-02 2014-02-06 Samsung Electronics Co., Ltd. Method of managing dynamic memory reallocation and device performing the method
US20140089344A1 (en) * 2012-09-25 2014-03-27 Samsung Electronics Co., Ltd Method and apparatus for url address search in url list

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5136697A (en) 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
US6230231B1 (en) 1998-03-19 2001-05-08 3Com Corporation Hash equation for MAC addresses that supports cache entry tagging and virtual address tables
US6941421B2 (en) * 2002-10-29 2005-09-06 International Business Machines Corporation Zero delay data cache effective address generation
US7475219B2 (en) 2004-08-27 2009-01-06 Marvell International Ltd. Serially indexing a cache memory
US20070233961A1 (en) 2006-03-31 2007-10-04 Banning John P Multi-portioned instruction memory
US7860882B2 (en) * 2006-07-08 2010-12-28 International Business Machines Corporation Method and system for distributed retrieval of data objects using tagged artifacts within federated protocol operations
US8122216B2 (en) * 2006-09-06 2012-02-21 International Business Machines Corporation Systems and methods for masking latency of memory reorganization work in a compressed memory system
US8621187B2 (en) * 2008-02-11 2013-12-31 Nxp, B.V. Method of program obfuscation and processing device for executing obfuscated programs
CN102439580A (zh) * 2009-03-20 2012-05-02 普林斯顿大学托管委员会 用于网络加速以及对高速缓存文件系统进行高效索引编制的系统及方法
JP5440067B2 (ja) 2009-09-18 2014-03-12 富士通株式会社 キャッシュメモリ制御装置およびキャッシュメモリ制御方法
JP5482197B2 (ja) * 2009-12-25 2014-04-23 富士通株式会社 演算処理装置、情報処理装置及びキャッシュメモリ制御方法
CN107391397B (zh) * 2011-09-30 2021-07-27 英特尔公司 支持近存储器和远存储器访问的存储器通道
US9652230B2 (en) 2013-10-15 2017-05-16 Mill Computing, Inc. Computer processor employing dedicated hardware mechanism controlling the initialization and invalidation of cache lines
US9916252B2 (en) 2015-05-19 2018-03-13 Linear Algebra Technologies Limited Systems and methods for addressing a cache with split-indexes

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5687350A (en) * 1995-02-10 1997-11-11 International Business Machines Corporation Protocol and system for performing line-fill address during copy-back operation
US6339822B1 (en) * 1998-10-02 2002-01-15 Advanced Micro Devices, Inc. Using padded instructions in a block-oriented cache
US6477613B1 (en) * 1999-06-30 2002-11-05 International Business Machines Corporation Cache index based system address bus
KR20110127733A (ko) * 2009-03-03 2011-11-25 콸콤 인코포레이티드 구성가능한 캐시 및 그 구성 방법
US20120210069A1 (en) * 2009-10-25 2012-08-16 Plurality Ltd. Shared cache for a tightly-coupled multiprocessor
US20140040541A1 (en) * 2012-08-02 2014-02-06 Samsung Electronics Co., Ltd. Method of managing dynamic memory reallocation and device performing the method
US20140089344A1 (en) * 2012-09-25 2014-03-27 Samsung Electronics Co., Ltd Method and apparatus for url address search in url list

Also Published As

Publication number Publication date
US10585803B2 (en) 2020-03-10
WO2016185272A1 (en) 2016-11-24
KR20180046917A (ko) 2018-05-09
CN108139975B (zh) 2022-05-31
DE112016002247T5 (de) 2018-03-01
US20160342521A1 (en) 2016-11-24
EP3298496A1 (en) 2018-03-28
KR102052256B1 (ko) 2019-12-04
KR102173474B1 (ko) 2020-11-04
CN114924996A (zh) 2022-08-19
US20190251032A1 (en) 2019-08-15
US20180260333A1 (en) 2018-09-13
CN108139975A (zh) 2018-06-08
US10198359B2 (en) 2019-02-05
US9916252B2 (en) 2018-03-13

Similar Documents

Publication Publication Date Title
US10585803B2 (en) Systems and methods for addressing a cache with split-indexes
US10303596B2 (en) Read-write control method for memory, and corresponding memory and server
JP6505132B2 (ja) メモリ容量圧縮を利用するメモリコントローラならびに関連するプロセッサベースのシステムおよび方法
KR102333297B1 (ko) 압축 데이터 및 태그가 있는 캐시
US8627041B2 (en) Efficient line and page organization for compression status bit caching
US20100138614A1 (en) Compression Status Bit Cache And Backing Store
JP2017516234A (ja) 次の読取りアドレスプリフェッチングによるメモリ容量圧縮および/またはメモリ帯域幅圧縮を利用するメモリコントローラ、ならびに関連するプロセッサベースシステムおよび方法
US10275358B2 (en) High-performance instruction cache system and method
JP4753549B2 (ja) キャッシュメモリおよびシステム
JPH08272692A (ja) 仮想アドレス変換方法
CN107111461A (zh) 在基于中央处理单元(cpu)的系统中通过经压缩存储器控制器(cmc)使用背靠背读取操作来提供存储器带宽压缩
CN101292227B (zh) 具有高访问存储带宽的高速缓冲存储器
TWI473014B (zh) 增強型微處理器或微控制器
CN104808950B (zh) 对嵌入式存储器元件的模式依赖性访问
KR101645003B1 (ko) 메모리 제어기 및 그 메모리 제어기가 탑재된 컴퓨팅 장치
EP2453360B1 (en) Method and apparatus for translating memory access address
US8581918B2 (en) Method and system for efficiently organizing data in memory
KR100463205B1 (ko) 시퀀셜 버퍼를 내장하여 디에스피의 데이터 억세스 성능을향상시키는 컴퓨터 시스템 및 그 컴퓨터 시스템의 데이터억세스 방법
TW201301032A (zh) 高性能緩存方法和裝置
WO2015067195A1 (zh) 一种可重构缓存组织结构
US10802712B2 (en) Information processing apparatus and method of processing information
JP2001128108A (ja) ビデオ処理装置
CN203102260U (zh) 信息处理装置
JP2016048424A (ja) キャッシュメモリ

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant