KR20170012254A - 캐시 액세스 모드 선택을 위한 방법 및 장치 - Google Patents

캐시 액세스 모드 선택을 위한 방법 및 장치 Download PDF

Info

Publication number
KR20170012254A
KR20170012254A KR1020167032793A KR20167032793A KR20170012254A KR 20170012254 A KR20170012254 A KR 20170012254A KR 1020167032793 A KR1020167032793 A KR 1020167032793A KR 20167032793 A KR20167032793 A KR 20167032793A KR 20170012254 A KR20170012254 A KR 20170012254A
Authority
KR
South Korea
Prior art keywords
data
access
tag
mode
cache
Prior art date
Application number
KR1020167032793A
Other languages
English (en)
Other versions
KR101757355B1 (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 KR20170012254A publication Critical patent/KR20170012254A/ko
Application granted granted Critical
Publication of KR101757355B1 publication Critical patent/KR101757355B1/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/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/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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0857Overlapped cache accessing, e.g. pipeline by multiple requestors
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • 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/60Details of cache memory
    • G06F2212/601Reconfiguration of cache memory
    • G06F2212/6012Reconfiguration of cache memory of operating mode, e.g. cache mode or local memory mode
    • 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/603Details of cache memory of operating mode, e.g. cache mode or local memory mode
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Multimedia (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Power Sources (AREA)

Abstract

특정 방법은 송출 큐에 저장된 명령들의 수, 실행 유닛의 액티브 스레드들의 수, 또는 이 둘 다에 기반하여 제 1 캐시 액세스 모드와 제 2 캐시 액세스 모드 사이에서 선택하는 단계를 포함한다. 방법은 제 1 캐시 액세스를 수행하는 단계를 더 포함한다. 제 1 캐시 액세스 모드가 선택될 때, 제 1 캐시 액세스를 수행하는 단계는 태그 액세스를 수행하는 단계 및 태그 액세스를 수행한 후 데이터 어레이 액세스를 수행하는 단계를 포함한다. 제 2 캐시 액세스 모드가 선택될 때, 제 1 캐시 액세스를 수행하는 단계는 데이터 어레이 액세스와 동시에 태그 액세스를 수행하는 단계를 포함한다.

Description

캐시 액세스 모드 선택을 위한 방법 및 장치{METHOD AND APPARATUS FOR CACHE ACCESS MODE SELECTION}
관련 출원에 대한 상호-참조
[0001] 본 출원은 2014년 5월 27일자로 출원된 공동 소유의 U.S 정식 특허 출원 제14/287,331호를 우선권으로 주장하며, 그 내용은 그 전체가 인용에 의해 본 명세서에 명백하게 통합된다.
분야
[0002] 본 개시내용은 일반적으로 재구성가능한 페치 파이프라인(reconfigurable fetch pipeline)에 관한 것이다.
[0003] 기술에 있어서의 진보는 더욱 소형이고 더욱 강력한 컴퓨팅 디바이스들을 초래해왔다. 예컨대, 소형이고, 경량이며, 사용자들에 의해 쉽게 휴대되는 무선 컴퓨팅 디바이스들, 이를테면, 휴대용 무선 전화기들 및 태블릿 컴퓨터들을 포함하는 다양한 휴대용 퍼스널 컴퓨팅 디바이스들이 현재 존재한다. 수많은 이러한 컴퓨팅 디바이스들은 그 내부에 통합된 다른 디바이스들을 포함한다. 예컨대, 무선 전화기들은 또한 디지털 정지(still) 카메라, 디지털 비디오 카메라, 디지털 레코더, 및 오디오 파일 플레이어를 포함할 수 있다. 또한, 이러한 컴퓨팅 디바이스들은, 인터넷에 액세스하는데 사용될 수 있는 웹 브라우저 애플리케이션과 같은 소프트웨어 애플리케이션들 및 정지 또는 비디오 카메라를 활용하는 멀티미디어 애플리케이션들을 포함하는 실행가능 명령들을 프로세싱할 수 있고, 그리고 멀티미디어 재생 기능(multimedia playback functionality)을 제공할 수 있다.
[0004] 컴퓨팅 디바이스는 프로세서 및 캐시를 포함할 수 있다. 캐시는 실행 동안 프로세서에 의해 사용되는 정보(예컨대, 명령들 또는 데이터)를 저장하는데 사용될 수 있다. 캐시에 있는 정보에 액세스하는 것은 프로세서의 다수의 클록 사이클들을 취할 수 있다. 캐시에 있는 정보에 더욱 빠르게 액세스될 수 있는 하나의 방식은, 캐시의 데이터 어레이에 액세스하는 것과 동시에 캐시의 태그 어레이에 액세스하는 것이다. 그러나, 태그 어레이 및 데이터 어레이에 동시에 액세스하는 것은 태그 어레이 및 데이터 어레이에 순차적으로 액세스하는 것보다 더 많은 전력을 소모할 수 있다.
[0005] 본 개시내용은 재구성가능한 페치 파이프라인의 양상들을 제시한다. 재구성가능한 페치 파이프라인은, 예컨대, 송출 큐(issue queue)에 저장된 명령들의 수, 실행 유닛의 액티브 스레드들의 수, 전력 절감 모드 표시자, 정적 모드 입력, 또는 이들의 조합에 기반하여, 병렬 로드 동작과 직렬 로드 동작 사이에서 동적으로 스위칭할 수 있다. 특정 양상에서, 실행 유닛이 송출 큐로부터 요청된 데이터를 요청하기 전에 재구성가능한 페치 파이프라인이 요청된 데이터를 송출 큐에 제공할 수 있도록 송출 큐가 특정 수의 명령들을 저장할 때, 재구성가능한 페치 파이프라인은 (예컨대, 전력을 절감하기 위해) 직렬 로드 동작을 수행한다. 따라서, 재구성가능한 페치 파이프라인을 포함하는 전자 디바이스는, 재구성가능한 페치 파이프라인이 직렬 동작 모드에서 동작할 때, 병렬 로드 동작과 비교하여, 더 적은 전력을 사용하여 데이터를 로딩할 수 있다. 실행 유닛이 송출 큐로부터 요청된 데이터를 요청하기 전에 재구성가능한 페치 파이프라인이 요청된 데이터를 송출 큐에 제공할 수 없도록 송출 큐가 다수의 명령들을 저장할 때(예컨대, 송출 큐가 텅 비고(empty) 그리고 실행 유닛이 명령에 대해 대기하는 경우, 또는 직렬 로드 동작이 요청된 데이터를 송출 큐에 제공하기 전에 송출 큐가 요청된 데이터를 요청하는 경우), 재구성가능한 페치 파이프라인은 (예컨대, 데이터를 빠르게 페칭하기 위해) 병렬 로드 동작을 수행한다. 따라서, 재구성가능한 페치 파이프라인을 포함하는 전자 디바이스는, 재구성가능한 페치 파이프라인이 병렬 동작 모드에서 동작할 때, 직렬 로드 동작과 비교하여, 데이터를 더욱 빠르게 로딩할 수 있다. 추가적으로, 재구성가능한 페치 파이프라인은, 송출 큐 내의 명령들의 수, 실행 유닛에 있는 액티브 스레드들의 수, 또는 현재의 니즈(current need)(예컨대, 속력 또는 전력 절감)에 기초한 다른 인자들에 기반하여 직렬 동작 모드와 병렬 동작 모드 사이에서 동적으로 스위칭할 수 있다.
[0006] 특정 양상에서, 방법은 송출 큐에 저장된 명령들의 수, 실행 유닛의 액티브 스레드들의 수, 또는 이 둘 다에 기반하여 제 1 캐시 액세스 모드와 제 2 캐시 액세스 모드 사이에서 선택하는 단계를 포함한다. 방법은 제 1 캐시 액세스를 수행하는 단계를 더 포함한다. 제 1 캐시 액세스 모드(예컨대, 직렬 동작 모드)가 선택될 때, 제 1 캐시 액세스를 수행하는 단계는 태그 액세스를 수행하는 단계 그리고 태그 액세스를 수행한 후 데이터 어레이 액세스를 수행하는 단계를 포함한다. 제 2 캐시 액세스 모드(예컨대, 병렬 동작 모드)가 선택될 때, 제 1 캐시 액세스를 수행하는 단계는 데이터 어레이 액세스와 동시에 태그 액세스를 수행하는 단계를 포함한다.
[0007] 다른 특정 양상에서, 장치는 액세스 모드 선택 회로, 태그 어레이, 데이터 어레이, 및 어드레스 생성 유닛을 포함한다. 액세스 모드 선택 회로는, 송출 큐에 저장된 명령들의 수, 캐시에 커플링된 실행 유닛의 액티브 스레드들의 수, 또는 이 둘 다에 기반하여 제 1 캐시 액세스 모드와 제 2 캐시 액세스 모드 사이에서 선택하고 그리고 그 선택에 기반하여 액세스 모드 신호를 생성하도록 구성된다. 어드레스 생성 유닛은, 제 1 캐시 액세스 모드(예컨대, 직렬 동작 모드)가 선택되었음을 표시하는 액세스 모드 신호에 대한 응답으로, 태그 어드레스를 태그 어레이에 송신하고, 태그 어레이로부터의 태그 어드레스에 대응하는 태그 데이터를 수신하고, 그리고 데이터 요청을 데이터 어레이에 송신하도록 구성된다. 데이터 요청은 태그 데이터 및 데이터 어드레스를 포함한다. 추가로, 어드레스 생성 유닛은, 제 2 캐시 액세스 모드(예컨대, 병렬 동작 모드)가 선택되었음을 표시하는 액세스 모드 신호에 대한 응답으로, 데이터 어드레스를 데이터 어레이에 송신하는 것과 동시에 태그 어드레스를 태그 어레이에 송신하도록 구성된다.
[0008] 다른 특정 양상에서, 비-일시적 컴퓨터 판독가능 매체는, 프로세서에 의해 실행될 때, 프로세서로 하여금, 송출 큐에 저장된 명령들의 수, 실행 유닛의 액티브 스레드들의 수, 또는 이 둘 다에 기반하여 제 1 캐시 액세스 모드와 제 2 캐시 액세스 모드 사이에서의 선택을 수행하게 하는 명령들을 저장한다. 추가로, 비-일시적 컴퓨터 판독가능 매체는, 프로세서에 의해 실행될 때, 프로세서로 하여금 제 1 캐시 액세스를 수행하게 하는 명령들을 저장한다. 제 1 캐시 액세스 모드(예컨대, 직렬 동작 모드)가 선택될 때, 제 1 캐시 액세스는 태그 액세스를 수행하는 것 그리고 태그 액세스를 수행한 후 데이터 어레이 액세스를 수행하는 것을 포함한다. 제 2 캐시 액세스 모드(예컨대, 병렬 동작 모드)가 선택될 때, 제 1 캐시 액세스는 데이터 어레이 액세스와 동시에 태그 액세스를 수행하는 것을 포함한다.
[0009] 다른 특정 양상에서, 장치는 송출 큐에 저장된 명령들의 수, 실행 유닛의 액티브 스레드들의 수, 또는 이 둘 다에 기반하여 제 1 캐시 액세스 모드와 제 2 캐시 액세스 모드 사이에서 선택하기 위한 수단을 포함한다. 장치는, 제 1 캐시 액세스 동안, 제 1 캐시 액세스 모드가 선택될 때, 태그 액세스를 수행하고 그리고 태그 액세스를 수행한 후 데이터 어레이 액세스를 수행함으로써 캐시 액세스를 수행하고; 그리고 제 2 캐시 액세스 모드가 선택될 때, 데이터 어레이 액세스와 동시에 태그 액세스를 수행하기 위한 수단을 더 포함한다.
[0010] 개시된 양상들 중 적어도 하나에 의해 제공되는 하나의 특정 장점은, 재구성가능한 페치 파이프라인을 포함하는 전자 디바이스가 동작 조건들(예컨대, 송출 큐에 저장된 명령들의 수, 실행 유닛의 액티브 스레드들의 수, 전력 절감 모드 표시자, 정적 모드 입력, 또는 이들의 조합)에 기반하여 직렬 동작 모드와 병렬 동작 모드 사이에서 스위칭할 수 있다는 점이다. 재구성가능한 페치 파이프라인이 직렬 동작 모드에서 동작할 때, 재구성가능한 페치 파이프라인은 병렬 로드 동작과 비교하여 더 적은 전력을 사용하여 데이터를 로딩할 수 있다. 재구성가능한 페치 파이프라인이 병렬 동작 모드에서 동작할 때, 재구성가능한 페치 파이프라인은 직렬 로드 동작과 비교하여 더욱 빠르게 데이터를 로딩할 수 있다. 따라서, 전자 디바이스는 직렬 로드 동작을 수행하도록 구성된 파이프라인과 연관된 그리고 병렬 로드 동작을 수행하도록 구성된 파이프라인과 연관된 이점들을 얻을 수 있다.
[0011] 본 개시내용의 다른 양상들, 장점, 및 특징들은, 이하의 섹션들: 도면의 간단한 설명, 상세한 설명, 및 청구항들을 포함하는 전체 출원서의 리뷰 이후에 명백하게 될 것이다.
[0012] 도 1은 재구성가능한 페치 파이프라인의 특정 양상을 나타내는 도면이다.
[0013] 도 2은 재구성가능한 페치 파이프라인의 다른 특정 양상을 나타내는 도면이다.
[0014] 도 3은 재구성가능한 페치 파이프라인을 동작시키는 방법을 예시하는 흐름도이다.
[0015] 도 4는 재구성가능한 페치 파이프라인을 포함하는 통신 디바이스를 예시하는 블록도이다.
[0016] 도 1을 참조로, 재구성가능한 페치 파이프라인의 특정 예시적인 양상이 개시되며 일반적으로 100으로 지정된다. 재구성가능한 페치 파이프라인은 캐시(150) 및 실행 유닛(144)을 포함한다. 캐시(150)(예컨대, 데이터 캐시 또는 명령 캐시)는, 컨트롤러(102), AGU(address generation unit)(104), 태그 어레이(106), 데이터 어레이(108), 태그 로직(126), 및 선택 로직(128)을 포함할 수 있다. AGU(104)는 AGU 메모리(132)를 포함할 수 있다. 데이터 어레이(108)는 복수의 세트들(110-116)을 포함할 수 있다. 각각의 세트(예컨대, 세트(114))는 복수의 웨이(way)들(예컨대, 웨이들(118-124))을 포함할 수 있다.
[0017] 컨트롤러(102)는 제어 데이터(142)에 기반하여 제 1 캐시 액세스 모드(예컨대, 병렬 동작 모드)와 제 2 캐시 액세스 모드(예컨대, 직렬 동작 모드) 사이에서 선택하도록 구성될 수 있다. 특정 양상에서, 제어 데이터(142)는, 송출 큐에 저장된 명령들의 수, 실행 유닛(예컨대, 실행 유닛(144) 또는 다른 실행 유닛)의 액티브 스레드들의 수, 전력 절감 모드 표시자, 정적 모드 입력, 또는 이들의 조합을 나타낸다. 예컨대, 송출 큐는 다수의 순차적 명령들을 저장할 수 있다. 이 예에서, 실행 유닛(144)은 송출 큐로부터의 명령들(예컨대, 각각의 클록 사이클마다 하나의 명령)을 주기적으로 요청할 수 있다. 송출 큐에 저장된 명령들의 수가, 직렬 동작 모드를 사용하여 로딩된 데이터가 송출 큐에 수신되기 전에 (예컨대, 실행 유닛(144)에 의해 또는 다른 실행 유닛에 의해) 요청되는 명령들의 수와 동일하거나 또는 이를 초과한다면, 실행 시간은 병렬 동작 모드가 아닌 직렬 동작 모드를 사용함으로써 증가될 수 없다. 따라서, 컨트롤러(102)는, 더 많은 수의 명령들이 송출 큐에 저장될 때(예컨대, 송출 큐에 저장된 명령들의 수가 임계치를 초과함) 캐시(150)에 대해 직렬 동작 모드를, 그리고 더 적은 수의 명령들이 송출 큐에 저장될 때(예컨대, 송출 큐에 저장된 명령들의 수가 임계치를 초과하지 않음) 병렬 동작 모드를 선택할 수 있다.
[0018] 다른 예로서, 실행 유닛(144)은 멀티스레드 동작을 위해 구성될 수 있다. 이 예에서, 각각의 스레드는 캐시(150)(예컨대, 송출 큐 또는 레지스터 파일)에 커플링된 메모리 디바이스로부터 데이터를 판독할 수 있다. 다수의 스레드들이 액티브일 때, (예컨대, 다른 스레드들이 액티브인 동안 현재의 스레드가 유휴상태(idle)일 수 있기 때문에) 각각의 스레드는 더 낮은 레이트로 메모리 디바이스로부터 데이터를 판독할 수 있다. 이에 따라, 컨트롤러(102)는, 더 많은 수의 스레드들이 액티브일 때(예컨대, 액티브 스레드들의 수가 임계치를 초과함), 캐시(150)에 대해 직렬 동작 모드를 선택할 수 있고, 그리고 더 적은 수의 스레드들이 액티브일 때(예컨대, 액티브 스레드들의 수가 임계치를 초과하지 않음), 병렬 동작 모드를 선택할 수 있다. 다른 예로서, 전자 디바이스는 캐시(150) 및 실행 유닛(144)을 포함할 수 있다. 전자 디바이스는 (예컨대, 낮은 배터리 상태로 인해, 사용자 액티비티의 부족으로 인해, 또는 사용자-특정 전력 설정으로 인해) 전력 절감 모드로 진입하도록 구성될 수 있다. 이하에 설명되는 바와 같이, 직렬 로드 동작은 병렬 로드 동작보다 전력을 덜 소모할 수 있다. 그에 따라서, 컨트롤러(102)는, 전자 디바이스가 전력 절감 모드에 있을 때, 캐시(150)에 대해 직렬 동작 모드를 선택할 수 있다. 다른 예로서, 사용자는 직렬 동작 모드와 병렬 동작 모드 사이에서 선택할 수 있다. 사용자는, (예컨대, 정적 모드 입력(예컨대, 사용자-특정 캐시 구성 설정)을 사용함으로써) 컨트롤러(102)에 선택을 제공할 수 있다. 이 예에서, 제어 데이터(142)는 선택을 표시하는 하나 또는 그 초과의 비트들을 포함할 수 있다. 그에 따라서, 컨트롤러(102)는 선택에 의해 표시된 사용자 선호도에 기반하여 캐시(150)에 대한 직렬 동작 모드 또는 병렬 동작 모드 중 하나를 선택할 수 있다.
[0019] 예시적인 양상에서, 컨트롤러(102)는, 복수의 캐시 액세스들 중 각각의 캐시 액세스를 캐시(150)에서 수행하기 전에 병렬 동작 모드와 직렬 동작 모드 사이에서 동적으로 선택하도록 구성될 수 있다. 예컨대, 이하에 설명되는 바와 같이, 제 1 캐시 액세스는 병렬 동작 모드에서 수행될 수 있고, 제 2 캐시 액세스는 직렬 동작 모드에서 수행될 수 있다. 다른 예로서, 이하에 설명된 바와 같이, 제 1 캐시 액세스는 직렬 동작 모드에서 수행될 수 있고, 제 2 캐시 액세스는 병렬 동작 모드에서 수행될 수 있다. 컨트롤러(102)가 병렬 동작 모드와 직렬 동작 모드 사이에서 선택한 후, 컨트롤러(102)는 선택된 동작 모드(예컨대, 병렬 동작 모드 또는 직렬 동작 모드)를 표시하는 제어 신호들을 AGU(104) 및 태그 로직(126)에 송신할 수 있다. 특정 양상에서, 컨트롤러(102)는 제 1 캐시 액세스의 동작 모드를 결정하기 위해 제 1 동작 조건들(예컨대, 송출 큐에 저장된 명령들의 수, 실행 유닛에 있는 액티브 스레드들의 수, 전력 절감 모드 표시자, 정적 모드 입력, 또는 이들의 조합)에 기반하여 병렬 동작 모드와 직렬 동작 모드 사이에서 선택할 수 있다. 컨트롤러(102)는 제 2 캐시 액세스의 동작 모드를 결정하기 위해 제 2 동작 조건들(예컨대, 송출 큐에 저장된 명령들의 수, 실행 유닛에 있는 액티브 스레드들의 수, 전력 절감 모드 표시자, 정적 모드 입력, 또는 이들의 조합)에 기반하여 병렬 동작 모드와 직렬 동작 모드 사이에서 선택할 수 있다. 제 1 동작 조건들은, 제 2 동작 조건들과 동일하거나 또는 제 2 동작 조건들과 상이할 수 있다.
[0020] 컨트롤러(102)로부터 병렬 동작 모드를 표시하는 제어 신호를 수신하는 것에 대한 응답으로 그리고 캐시 요청(138)(예컨대, 실행 유닛(144)에 의해 생성된 캐시 요청)을 수신하는 것에 대한 응답으로, AGU(104)는 (예컨대, 제 1 클록 사이클 동안) 데이터 어드레스를 생성할 수 있다. AGU(104)는, 동시에 (예컨대, 제 2 클록 사이클 동안), (예컨대, 데이터 어드레스의 최하위 비트들(least significant bits)의 수에 대응하는) 태그 요청(134)을 태그 어레이(106)에 그리고 (예컨대, 데이터 어드레스의 최상위 비트들(most significant bits)의 수에 대응하는) 데이터 요청(136)을 데이터 어레이(108)에 전송할 수 있다. 데이터 요청(136)은 특정 세트(예컨대, 세트(114))의 데이터 어레이(108)를 식별할 수 있다. 태그 요청(134)을 수신하는 것에 대한 응답으로, 태그 어레이(106)는 (예컨대, 제 2 클록 사이클 동안) 요청된 데이터를 포함하는 특정 세트의 데이터 어레이(108)의 특정 웨이(예컨대, 웨이(120))를 식별할 수 있다. 태그 어레이(106)는 (예컨대, 제 2 클록 사이클 동안) 특정 웨이에 대응하는 신호를 태그 로직(126)에 송신할 수 있다. 태그 어레이(106)로부터의 신호 및 컨트롤러(102)로부터 병렬 동작 모드를 표시하는 제어 신호를 수신하는 것에 대한 응답으로, 태그 로직(126)은 (예컨대, 제 2 클록 사이클 동안) 태그 신호를 선택 로직(128)에 송신할 수 있다. 태그 신호는 특정 웨이를 표시할 수 있다. 데이터 요청(136)을 수신하는 것에 대한 응답으로, 데이터 어레이(108)는 식별된 세트의 각각의 웨이(예컨대, 세트(114)의 웨이들(118-124))에 저장된 데이터를 선택 로직(128)에 (예컨대, 제 2 클록 사이클 동안) 송신할 수 있다. 선택 로직(128)은 태그 신호 및 특정 세트에 기반하여 특정 웨이(예컨대, 웨이(120))에 대응하는 선택된 데이터(130)를 (예컨대, 제 2 클록 사이클 동안) 출력할 수 있다. 선택 로직(128)은 선택된 데이터(130)를 실행 유닛(144)에, 송출 큐에, 또는 다른 디바이스에 출력할 수 있다. 특정 양상에서, 선택된 데이터(130)는 적어도 하나의 프로세서 명령을 포함한다. 다른 특정 양상에서, 선택된 데이터(130)는 적어도 하나의 프로세서 명령의 실행 동안 실행 유닛(예컨대, 실행 유닛(144))에 의해 사용될 데이터를 포함한다.
[0021] 컨트롤러(102)로부터 직렬 동작 모드를 표시하는 제어 신호를 수신하는 것에 대한 응답으로 그리고 캐시 요청(138)을 수신하는 것에 대한 응답으로, AGU(104)는 (예컨대, 제 1 클록 사이클 동안) 데이터 어드레스를 생성할 수 있다. AGU(104)는 (예컨대, 제 2 클록 사이클 동안) 태그 요청(134)을 태그 어레이(106)에 전송할 수 있다. 태그 요청(134)을 수신하는 것에 대한 응답으로, 태그 어레이(106)는 (예컨대, 제 2 클록 사이클 동안) 태그 데이터(140)를 AGU(104)에 송신할 수 있고 그리고 신호를 태그 로직(126)에 송신할 수 있다. 태그 데이터(140) 및 신호는 특정 웨이(예컨대, 웨이(120))를 식별할 수 있다. 태그 어레이(106)로부터의 신호 및 컨트롤러(102)로부터 직렬 동작 모드를 표시하는 제어 신호를 수신하는 것에 대한 응답으로, 태그 로직(126)은 (예컨대, 제 3 클록 사이클 동안) 특정 웨이를 표시하는 태그 신호를 선택 로직(128)에 송신할 수 있다. AGU(104)는 (예컨대, 제 3 클록 사이클 동안) 데이터 요청(136)을 데이터 어레이(108)에 송신할 수 있다. 데이터 요청(136)은 특정 세트(예컨대, 특정 세트(114)) 및 특정 웨이(예컨대, 웨이(120))를 식별할 수 있다. 데이터 어레이(108)는 특정 세트의 특정 웨이에 대응하는 데이터를 선택 로직(128)에 송신할 수 있다. 데이터 어레이(108)는 특정 세트가 아닌 데이터 어레이(108)의 세트들(예컨대, 세트들(110, 112, 및 116))이 (예컨대, 특정 세트가 아닌 세트들과 연관된 프리차지를 방지함으로써) 데이터 신호들을 선택 로직(128)으로 송신하는 것을 방지할 수 있다. 선택 로직(128)은 데이터 어레이(108)로부터 특정 웨이에 대응하는 데이터 및 태그 로직(126)으로부터 특정 웨이에 대응하는 입력 라인을 식별하는 태그 신호를 (예컨대, 제 3 클록 사이클 동안) 수신할 수 있다. 선택 로직(128)은 식별된 웨이에 대응하는 선택된 데이터(130)를 (예컨대, 제 3 클록 사이클 동안) 출력할 수 있다. 특정 양상에서, 선택된 데이터(130)는 적어도 하나의 프로세서 명령을 포함한다. 다른 특정 양상에서, 선택된 데이터(130)는 적어도 하나의 프로세서 명령의 실행 동안 실행 유닛(예컨대, 실행 유닛(144))에 의해 사용될 데이터를 포함한다. 직렬 동작 모드는 (예컨대, 특정 세트 이외의 세트들과 연관된 프리차지를 방지함으로써) 병렬 동작 모드보다 더 적은 전력을 사용하여 데이터를 로딩할 수 있다.
[0022] 병렬 로드 동작이 완료를 위해 2개의 클록 사이클들을 취하는 것으로 설명되었지만, 병렬 로드 동작은 완료를 위해 2개보다 더 적은 수의 클록 사이클들 또는 완료를 위해 2개보다 더 긴 클록 사이클들을 취할 수 있다. 직렬 로드 동작이 완료를 위해 3개의 클록 사이클들을 취하는 것으로 설명되었지만, 직렬 로드 동작은 완료를 위해 3개보다 더 적은 수의 클록 사이클들 또는 완료를 위해 3개보다 더 긴 클록 사이클들을 취할 수 있다. 직렬 로드 동작은 완료를 위해 병렬 로드 동작보다 더 많은 수의 클록 사이클들을 취할 수 있다.
[0023] 앞서 설명된 바와 같이, 컨트롤러(102)는, 복수의 캐시 액세스들 중 각각의 캐시 액세스를 캐시(150)에서 수행하기 전에 병렬 동작 모드와 직렬 동작 모드 사이에서 동적으로 선택하도록 구성될 수 있다. 캐시(150)가 직렬 동작 모드에서 병렬 동작 모드로 스위칭할 때, 데이터 어레이(108)에서 데이터 충돌이 발생할 수 있다. 예시를 위해, 앞서 설명된 바와 같이, 직렬 동작 모드에서, AGU(104)는 제 1 클록 사이클 동안 (예컨대, 직렬 동작 모드 요청에 대응하는) 제 1 데이터 어드레스를 생성하도록 구성될 수 있다. 태그 어레이(106)는 제 2 클록 사이클 동안 액세스될 수 있다. 데이터 어레이(108)는 제 3 클록 사이클 동안 액세스될 수 있다. 병렬 동작 모드 요청이 직렬 동작 모드 요청에 바로 후속할 때, AGU(104)는 제 2 클록 사이클 동안 (예컨대, 병렬 동작 모드 요청에 대응하는) 제 2 데이터 어드레스를 생성하도록 구성될 수 있다. 병렬 동작 모드에서, 태그 어레이(106) 및 데이터 어레이(108)는 (예컨대, 제 3 클록 사이클 동안) 동시에 액세스될 수 있다. 따라서, 제 3 클록 사이클 동안, 직렬 동작 모드 요청 및 병렬 동작 모드 요청은 데이터 어레이(108)를 사용하는 다수 회의 시도들을 초래하여 데이터 충돌을 야기할 수 있다.
[0024] 데이터 충돌을 회피하는 2가지의 방법들이 아래에서 설명된다. 데이터 충돌을 회피하는 제 1 방법에서, 병렬 동작 모드 요청은 적어도 하나의 클록 사이클 동안 (예컨대, AGU(104)에서) 지연될 수 있다. 데이터 충돌을 회피하는 제 2 방법에서, 직렬 동작 모드 요청(예컨대, 데이터 어레이(108) 액세스)은 적어도 하나의 클록 사이클 동안 (예컨대, AGU(104)에서) 지연될 수 있다.
[0025] 예컨대, 데이터 충돌을 회피하는 제 1 방법을 수행할 때, AGU(104)는, (예컨대, 제 2 클록 사이클 동안) 직렬 동작 모드에 따라 태그 어레이(106)로부터 제 1 캐시 액세스와 연관된 태그 데이터(140)를 수신할 수 있고, 그리고 제 2 캐시 액세스와 연관된 병렬 동작 모드(예컨대, 또한 제 2 클록 사이클 동안)에 따라 데이터 어드레스를 생성할 수 있다. AGU(104)는 (예컨대, AGU 메모리(132)에 병렬 동작 모드 요청에 대응하는 생성된 어드레스를 저장함으로써) 병렬 동작 모드 요청의 태그 요청(134) 및 데이터 요청(136)을 송신하는 것을 (예컨대, 제 4 클록 사이클 까지) 지연시킬 수 있다. 따라서, 직렬 동작 모드의 데이터 요청(136)이 특정 클록 사이클(예컨대, 제 3 클록 사이클) 동안 송신되고 그리고 병렬 동작 모드의 데이터 요청(136)이 다른 클록 사이클(예컨대, 제 4 클록 사이클) 동안 송신되기 때문에, (예컨대, 제 3 클록 사이클 동안) 데이터 어레이(108)에서의 잠재적인 데이터 충돌이 회피될 수 있다.
[0026] 다른 예로서, 데이터 충돌을 회피하는 제 2 방법을 수행할 때, AGU(104)는 (예컨대, 제 2 클록 사이클 동안) 직렬 동작 모드에 따라 태그 어레이(106)로부터 제 1 캐시 액세스와 연관된 태그 데이터(140)를 수신할 수 있고, AGU(104)는 제 2 캐시 액세스와 연관된 병렬 동작 모드(예컨대, 또한 제 2 클록 사이클 동안)에 따라 어드레스를 생성할 수 있다. AGU(104)는 (예컨대, AGU 메모리(132)에 직렬 동작 모드 요청에 대응하는 태그 데이터(140)를 저장함으로써) 직렬 동작 모드 요청의 태그 요청의 데이터 요청(136)을 송신하는 것을 (예컨대, 제 4 클록 사이클까지) 지연시킬 수 있다. 따라서, 병렬 동작 모드의 데이터 요청(136)이 특정 클록 사이클(예컨대, 제 3 클록 사이클) 동안 송신되고 그리고 직렬 동작 모드의 데이터 요청(136)이 다른 클록 사이클(예컨대, 제 4 클록 사이클) 동안 송신되기 때문에, 데이터 어레이(108)에서의 (예컨대, 제 3 클록 사이클 동안의) 잠재적인 데이터 충돌이 회피될 수 있다.
[0027] 캐시(150)가 병렬 동작 모드에서 직렬 동작 모드로 스위칭할 때, 캐시(150)는 병렬 동작 요청 및 직렬 동작 요청을 정상적으로 프로세싱할 수 있다. 예컨대, 제 1 클록 사이클 동안 제 2 캐시 액세스 모드(예컨대, 병렬 동작 모드)에 따라 태그 액세스를 수행(예컨대, 태그 요청(134)을 송신하고 선택 로직(128)에서 태그 신호를 수신)한 후, 태그 어레이(106)는 제 1 클록 사이클에 바로 후속하는 제 2 클록 사이클에서 제 1 캐시 액세스 모드(예컨대, 직렬 동작 모드)에 따라 제 2 캐시 액세스에 대응하는 제 2 태그 액세스를 수행할 수 있다. 이 예에서, 태그 어레이(106)는 제 1 클록 사이클 동안 병렬 동작 모드에 대응하는 제 1 태그 액세스를 수행하도록 구성될 수 있고, 태그 어레이(106)는 제 1 클록 사이클에 바로 후속하는 제 2 클록 사이클 동안 직렬 동작 모드에 대응하는 제 2 태그 액세스를 수행하도록 구성될 수 있다.
[0028] 도 1이 선택 로직(128)에 커플링된 공통의 입력 라인들에 커플링되어 있는 세트들(114 및 116)의 웨이들을 예시하지만, 세트들(110-116)의 웨이들 각각은 공통의 입력 라인들에 커플링될 수 있거나 또는 선택 로직(128)에 개별적으로 커플링될 수 있다. 도 1이 실행 유닛(144)에 직접 선택된 데이터(130)를 송신하는 선택 로직(128)을 예시하지만, 다른 양상들에서, 하나 또는 그 초과의 로직 엘리먼트들(예컨대, 버퍼들, 레지스터 파일, 또는 송출 큐)은 선택 로직(128)과 실행 유닛(144) 사이에 위치될 수 있다.
[0029] 재구성가능한 페치 파이프라인(100)을 포함하는 전자 디바이스는 동작 조건들(예컨대, 송출 큐에 저장된 명령들의 수, 실행 유닛(144)에 있는 액티브 스레드들의 수, 전력 절감 모드 표시자, 정적 모드 입력, 또는 이들의 조합)에 기반하여 병렬 동작 모드와 직렬 동작 모드 사이에서 스위칭할 수 있다. 재구성가능한 페치 파이프라인(100)이 병렬 동작 모드에서 동작할 때, 재구성가능한 페치 파이프라인(100)은 직렬 로드 동작과 비교하여 더욱 빠르게 데이터를 로딩할 수 있다. 재구성가능한 페치 파이프라인(100)이 직렬 동작 모드에서 동작할 때, 재구성가능한 페치 파이프라인(100)은 병렬 로드 동작과 비교하여 더 적은 전력을 사용하여 데이터를 로딩할 수 있다. 송출 큐에 저장된 명령들의 수가 임계치를 초과할 때 또는 실행 유닛(예컨대, 실행 유닛(144) 또는 다른 실행 유닛)에 있는 액티브 스레드들의 수가 임계치를 초과할 때, (예컨대, 데이터가 요청되기 전에 데이터가 로딩될 수 있기 때문에) 직렬 로드 동작을 사용하여 로딩된 데이터는 실행 시간을 증가시키지 않고 송신될 수 있다. 따라서, 전자 디바이스는 직렬 로드 동작을 수행하도록 구성된 파이프라인과 연관된 그리고 병렬 로드 동작을 수행하도록 구성된 파이프라인과 연관된 이점들을 얻을 수 있다.
[0030] 도 2는 도 1의 캐시(150) 및 실행 유닛(144)을 포함하는 재구성가능한 페치 파이프라인(200)의 특정 양상을 예시한다. 재구성가능한 페치 파이프라인(200)은 또한 송출 큐(202)를 포함한다. 송출 큐(202)는 캐시(150)의 일부일 수 있거나 또는 캐시(150)로부터 분리되어 있을 수 있다. 재구성가능한 페치 파이프라인(200)은 도 1의 재구성가능한 페치 파이프라인(100)과 유사하게 동작할 수 있다. 그러나, 선택된 데이터(130)가 송출 큐(202)에 제공된다. 제어 데이터(142)는 송출 큐(202) 내의 명령들의 수의 표시를 포함할 수 있다. 예컨대, 적어도 특정 수(예컨대, 4)의 명령들이 송출 큐(202)에 저장될 때, 캐시(150)는 병렬 동작 모드에서 동작하도록 구성될 수 있다. 특정 수보다 더 적은 수의 명령들이 송출 큐(202)에 저장될 때, 캐시(150)는 직렬 동작 모드에서 동작할 수 있다. 특정 양상에서, 병렬 동작 모드와 직렬 동작 모드 사이에서의 선택은, 추가적으로 또는 대안적으로, 실행 유닛(예컨대, 실행 유닛(144) 또는 다른 실행 유닛)의 액티브 스레드들의 수, 전력 절감 모드 표시자(예컨대, 디바이스들이 전력 절감 모드에 진입해야 하는지 여부를 특정하는, 캐시 외부에 있는 디바이스에 의해 설정되는 표시자), 정적 모드 입력(예컨대, 병렬 동작 모드 또는 직렬 동작 모드를 식별하는 사용자 특정 선택), 또는 (예컨대, 도 1을 참조로 앞서 설명된 것과 같은) 이들의 조합에 기반한다.
[0031] 재구성가능한 페치 파이프라인(200)을 포함하는 전자 디바이스는 동작 조건들(예컨대, 송출 큐(202)에 저장된 명령들의 수, 실행 유닛(144)에 있는 액티브 스레드들의 수, 전력 절감 모드 표시자, 정적 모드 입력, 또는 이들의 조합)에 기반하여 병렬 동작 모드와 직렬 동작 모드 사이에서 스위칭할 수 있다. 재구성가능한 페치 파이프라인(200)이 병렬 동작 모드에서 동작할 때, 재구성가능한 페치 파이프라인(200)은 직렬 로드 동작과 비교하여 더욱 빠르게 데이터를 로딩할 수 있다. 재구성가능한 페치 파이프라인(200)이 직렬 동작 모드에서 동작할 때, 재구성가능한 페치 파이프라인(200)은 병렬 로드 동작과 비교하여 더 적은 전력을 사용하여 데이터를 로딩할 수 있다. 송출 큐(202)에 저장된 명령들의 수가 임계치를 초과할 때 또는 실행 유닛(예컨대, 실행 유닛(144) 또는 다른 실행 유닛)에 있는 액티브 스레드들의 수가 임계치를 초과할 때, (예컨대, 데이터가 요청되기 전에 데이터가 로딩될 수 있기 때문에) 직렬 로드 동작을 사용하여 로딩된 데이터는 실행 시간을 증가시키지 않고 송신될 수 있다. 따라서, 전자 디바이스는 직렬 로드 동작을 수행하도록 구성된 파이프라인과 연관된 그리고 병렬 로드 동작을 수행하도록 구성된 파이프라인과 연관된 이점들을 얻을 수 있다.
[0032] 도 3은 재구성가능한 페치 파이프라인을 동작시키는 방법(300)의 특정 양상을 예시하는 흐름도이다. 방법(300)은, 302에서, 제 1 캐시 액세스 모드와 제 2 캐시 액세스 모드 사이에서 선택하는 단계를 포함한다. 다양한 양상들에서, 제 1 캐시 액세스 모드와 제 2 캐시 액세스 모드 사이에서 선택하는 단계는, 송출 큐에 저장된 명령들에 수에 기반하거나, 실행 유닛에 있는 액티브 스레드들의 수에 기반하거나, 전력 절감 모드 표시자에 기반하거나, 정적 모드 입력에 기반하거나, 또는 이들의 조합에 기반한다.
[0033] 제 1 양상에서, 도 1의 컨트롤러(102)는, (예컨대, 실행 유닛에 있는 다른 액티브 스레드들의 수로 인해) 직렬 동작 모드를 사용하여 데이터가 제공될 수 있기 전에 실행 유닛(144)의 스레드를 요청하는 데이터가 실행 시간을 수신하는지 여부에 기반하여 직렬 동작 모드와 병렬 동작 모드 사이에서 선택한다. 다른 액티브 스레드들의 수가 임계치와 동일하거나 또는 이를 초과할 때(예컨대, 직렬 동작 모드를 사용하여 데이터를 로딩하는 것과 연관된 클록 사이클들의 수를 초과할 때), 실행 시간은 병렬 로드 동작이 아닌 직렬 로드 동작을 사용함으로써 증가되지 않는다. 위에 설명된 바와 같이, 직렬 로드 동작은 병렬 로드 동작보다 전력을 덜 소모할 수 있다.
[0034] 예컨대, 직렬 로드 동작의 경우, 도 1의 실행 유닛(144)에서 3개의 스레드들이 액티브일 수 있다. 이 예에서, 액티브 스레드들은 교번할 수 있다(예컨대, 각각의 스레드는 매 3개의 클록 사이클들 마다 한 번 실행 유닛(144)을 제어할 수 있다). 이 예에서, 직렬 로드 동작은 데이터를 제공하기 위해 3개의 클록 사이클들을 취한다. 데이터 요청 스레드는, 제 1 클록 사이클 동안 데이터를 요청할 것이며, 제 4 클록 사이클이 될때까지 실행 유닛(144)을 다시 제어하지는 않을 것이다. 이 예에서, 직렬 로드 동작은 제 3 클록 사이클 동안 (예컨대, 데이터 요청 스레드가 실행 유닛(144)의 제어를 되찾기(regain) 전에) 요청된 데이터를 제공한다. 따라서, 직렬 로드 동작을 사용하는 것은, 데이터 요청 스레드를 지연시키지 않고, 그리고 도 1을 참조로 위에 설명된 바와 같이, 병렬 로드 동작보다 전력을 덜 사용한다. 액티브 스레드들의 수가 임계치와 동일하지 않거나 또는 이를 초과하지 않을 때(예컨대, 직렬 동작 모드를 사용하여 데이터를 로딩하는 것과 연관된 클록 사이클들의 수와 동일하지 않거나 이를 초과하지 않을 때), 실행 시간은 병렬 로드 동작이 아닌 직렬 로드 동작을 사용함으로써 증가될 것이다. 따라서, 이 경우에서, 병렬 로드 동작은 데이터 요청 스레드에 데이터를 더욱 빨리 제공하기 위해 (직렬 로드 동작 대신에) 사용될 수 있다.
[0035] 제 2 양상에서, 도 2의 컨트롤러(102)는, 직렬 동작 모드를 사용하여 로딩된 데이터가 송출 큐(202)에서 수신되기 전에, 송출 큐(202)에 저장된 명령들의 수가 (예컨대, 실행 유닛(144)에 의해) 요청될 명령들의 수와 동일하거나 또는 이를 초과하는지 여부에 기반하여, 직렬 동작 모드와 병렬 동작 모드 사이에서 선택할 수 있다. 직렬 동작 모드를 사용하여 로딩된 데이터가 송출 큐(202)에 수신되기 전에 요청될 수 있는 명령들의 수와 송출 큐(202)에 저장된 명령들의 수가 동일하거나 또는 이를 초과할 때, 실행 시간은 병렬 로드 동작이 아닌 직렬 로드 동작을 사용함으로써 증가되지 않는다. 도 1을 참조로 위에 설명된 바와 같이, 직렬 로드 동작은 병렬 로드 동작보다 전력을 덜 소모할 수 있다. 따라서, 직렬 로드 동작을 사용하는 것은 성능에 있어서의 어떠한 감소 없이 전력을 덜 소모할 수 있다. 대안적으로, 송출 큐(202)에 저장된 명령들의 수가 직렬 동작 모드를 사용하여 로딩된 데이터가 송출 큐(202)에 수신되기 전에 요청될 수 있는 명령들의 수와 동일하지 않거나 또는 이를 초과하지 않을 때, 실행 시간은 병렬 로드 동작이 아닌 직렬 로드 동작을 사용함으로써 증가될 것이다. 따라서, 이 경우에서, 병렬 로드 동작은 송출 큐(202)에 데이터를 더욱 빨리 제공하기 위해 (직렬 로드 동작 대신에) 사용될 수 있다.
[0036] 방법(300)은 또한, 304에서, 제 1 캐시 액세스를 수행하는 단계를 포함한다. 제 1 캐시 액세스 모드가 선택될 때, 제 1 캐시 액세스를 수행하는 단계는 태그 액세스를 수행하는 단계 및 태그 액세스를 수행한 후 데이터 어레이 액세스를 수행하는 단계를 포함한다. 제 2 캐시 액세스 모드가 선택될 때, 제 1 캐시 액세스를 수행하는 단계는 데이터 어레이 액세스와 동시에 태그 액세스를 수행하는 단계를 포함한다. 예컨대, 직렬 동작 모드가 선택될 때, 도 1의 AGU(104) 또는 도 2의 AGU(104)는 태그 어레이(106)에 태그 요청(134)을 송신할 수 있고 그리고 제 2 클록 사이클 동안 태그 데이터(140)를 수신할 수 있다. 이 예에서, AGU(104)는 제 3 클록 사이클 동안 데이터 요청(136)을 데이터 어레이(108)에 송신할 수 있다. 다른 예로서, 병렬 동작 모드가 선택될 때, 도 1의 AGU(104) 또는 도 2의 AGU(104)는 태그 요청(134)을 태그 어레이(106)에 송신할 수 있고 제 2 클록 사이클 동안 데이터 요청(136)을 데이터 어레이(108)에 송신할 수 있다. 방법(300)은, 하나 또는 그 초과의 추가적인 캐시 액세스들을 수행하는 단계 및 각각의 캐시 액세스 이전에 제 1 캐시 액세스 모드와 제 2 캐시 액세스 모드 사이에서 선택하는 단계를 포함할 수 있다.
[0037] 도 3의 방법(300)은, 프로세싱 유닛, 이를테면 CPU(central processing unit), FPGA(field-programmable gate array) 디바이스, ASIC(application-specific integrated circuit), 컨트롤러, 다른 하드웨어 디바이스, 펌웨어 디바이스, 또는 이들의 임의의 조합에 의해 개시 및/또는 수행될 수 있다. 예로서, 도 3의 방법(300)은, 도 1, 도 2, 및 도 4를 참조로 더 설명되는 바와 같이, 명령들을 실행하는 하나 또는 그 초과의 프로세서들 또는 실행 유닛들에 의해 수행될 수 있다.
[0038] 방법(300)에 따라 동작하는 전자 디바이스는 동작 조건들(예컨대, 송출 큐에 저장된 명령들의 수, 실행 유닛에 있는 액티브 스레드들의 수, 전력 절감 모드 표시자, 정적 모드 입력, 또는 이들의 조합)에 기반하여 병렬 동작 모드와 직렬 동작 모드 사이에서 스위칭할 수 있다. 전자 디바이스가 병렬 동작 모드에서 동작할 때, 전자 디바이스는 직렬 로드 동작과 비교하여 데이터를 더욱 빠르게 로딩할 수 있다. 전자 디바이스가 직렬 동작 모드에서 동작할 때, 전자 디바이스는 병렬 로드 동작과 비교하여 전력을 덜 사용하여 데이터를 로딩할 수 있다. 송출 큐에 저장된 명령들의 수가 임계치를 초과할 때 또는 실행 유닛에 있는 액티브 스레드들의 수가 임계치를 초과할 때, (예컨대, 데이터가 요청되기 전에 데이터가 로딩되기 때문에) 직렬 로드 동작을 사용하여 로딩된 데이터는 실행 시간을 증가시키지 않고 송신될 수 있다. 따라서, 전자 디바이스는 직렬 로드 동작을 수행하도록 구성된 파이프라인과 연관된 그리고 병렬 로드 동작을 수행하도록 구성된 파이프라인과 연관된 이점들을 얻을 수 있다.
[0039] 도 4를 참조로, 블록도는 재구성가능한 페치 파이프라인(464)을 포함하는 모바일 디바이스(400)의 특정 예시적인 양상을 도시한다. 모바일 디바이스(400), 또는 이의 컴포넌트들은, 디바이스, 이를테면, 통신 디바이스, 모바일 폰, 셀룰러 폰, 컴퓨터, 휴대용 컴퓨터, 태블릿, 액세스 포인트, 셋톱 박스, 엔터테인먼트 유닛, 내비게이션 디바이스, PDA(personal digital assistant), 고정 위치 데이터 유닛, 모바일 위치 데이터 유닛, 데스크탑 컴퓨터, 모니터, 컴퓨터 모니터, 텔레비전, 튜너(tuner), 라디오, 위성 라디오, 뮤직 플레이어, 디지털 뮤직 플레이어, 휴대용 뮤직 플레이어, 비디오 플레이어, 디지털 비디오 플레이어, DVD(digital video disc) 플레이어, 또는 휴대용 디지털 비디오 플레이어를 포함하거나, 이들을 구현하거나, 또는 이들 내에 포함될 수 있다.
[0040] 모바일 디바이스(400)는 프로세서(410), 이를테면, DSP(digital signal processor)를 포함할 수 있다. 프로세서(410)는, 재구성가능한 페치 파이프라인(464)을 포함할 수 있거나 또는 재구성가능한 페치 파이프라인(464)과는 별개일 수 있다. 재구성가능한 페치 파이프라인(464)은, 도 1-3을 참조로 위에 설명된 바와 같이, 제 1 캐시 액세스 모드(예컨대, 직렬 동작 모드)에서 동작하는 것과 제 2 캐시 액세스 모드(예컨대, 병렬 동작 모드)에서 동작하는 것 사이에서 동적으로 선택하도록 구성될 수 있다. 재구성가능한 페치 파이프라인(464)은, 도 1의 재구성가능한 페치 파이프라인(100) 또는 도 2의 재구성가능한 페치 파이프라인(200)에 대응할 수 있다. 프로세서(410)는 메모리(432)(예컨대, 비-일시적 컴퓨터-판독가능 매체)에 커플링될 수 있다.
[0041] 도 4는 또한 프로세서(410) 및 디스플레이(428)에 커플링된 디스플레이 컨트롤러(426)를 도시한다. 또한, 코더/디코더(CODEC)(434)가 프로세서(410)에 커플링될 수 있다. 스피커(436) 및 마이크로폰(438)이 CODEC(434)에 커플링될 수 있다. 무선 컨트롤러(440)는 프로세서(410)에 커플링될 수 있고 안테나(442)에 추가로 커플링될 수 있다.
[0042] 특정 양상에서, 프로세서(410), 디스플레이 컨트롤러(426), 메모리(432), CODEC(434), 무선 컨트롤러(440), 및 재구성가능한 페치 파이프라인(464)은 시스템-인-패키지 또는 시스템-온-칩 디바이스(422)에 포함된다. 입력 디바이스(430) 및 전력 공급부(444)는 시스템-온-칩 디바이스(422)에 커플링될 수 있다. 더욱이, 특정 양상에서, 그리고 도 4에 예시된 바와 같이, 디스플레이(428), 입력 디바이스(430), 스피커(436), 마이크로폰(438), 안테나(442), 및 전력 공급부(444)는 시스템-온-칩 디바이스(422)의 외부에 있다. 그러나, 디스플레이(428), 입력 디바이스(430), 스피커(436), 마이크로폰(438), 안테나(442), 및 전력 공급부(444) 각각은, 시스템-온-칩 디바이스(422)의 컴포넌트, 이를테면, 인터페이스 또는 컨트롤러에 커플링될 수 있다. 재구성가능한 페치 파이프라인(464)은 시스템-온-칩 디바이스(422)에 포함될 수 있거나, 도 4에 도시된 바와 같이, 하나 또는 그 초과의 별도의 컴포넌트들에 포함될 수 있다.
[0043] 설명된 양상들과 함께, 장치(이를테면, 모바일 디바이스(400))는 데이터를 리트리빙하기 위한 수단(예컨대, 도 1 또는 도 2의 캐시(150))에 커플링된 명령들을 실행시키기 위한 수단(예컨대, 도 1 또는 도 2의 실행 유닛(144))을 포함할 수 있다. 데이터를 리트리빙하기 위한 수단은, 액세스 모드를 선택하기 위한 수단(예컨대, 도 1 또는 도 2의 컨트롤러(102)), 태그 데이터를 저장하기 위한 수단(예컨대, 도 1 또는 도 2의 태그 어레이(106)), 데이터를 저장하기 위한 수단(예컨대, 도 1 또는 도 2의 데이터 어레이(108)), 및 어드레스들을 생성하기 위한 수단(예컨대, 도 1 또는 도 2의 AGU(address generation unit)(104))을 포함할 수 있다. 액세스 모드를 선택하기 위한 수단은, 명령들을 저장하기 위한 수단(예컨대, 도 2의 송출 큐(202))에 저장된 명령들의 수, 명령들을 실행하기 위한 수단의 액티브 스레드들의 수, 또는 이 둘 다에 기반하여 제 1 액세스 모드와 제 2 액세스 모드 사이에서 선택하고, 그리고 그 선택에 기반하여 액세스 모드 신호를 생성하도록 구성될 수 있다. 어드레스들을 생성하기 위한 수단은, 제 1 액세스 모드가 선택되었음을 표시하는 액세스 모드 신호에 대한 응답으로, 태그 데이터를 저장하기 위한 수단에 태그 어드레스(예컨대, 도 1 또는 도 2의 태그 요청(134))를 송신하고, 태그 데이터를 저장하기 위한 수단으로부터 태그 데이터(예컨대, 도 1 또는 도 2의 태그 데이터(140))를 수신하고, 그리고 데이터 요청(예컨대, 도 1 또는 도 2의 데이터 요청(136))을 데이터를 저장하기 위한 수단에 송신하도록 구성될 수 있다. 데이터 요청은 태그 데이터 및 데이터 어드레스를 포함할 수 있다. 어드레스들을 생성하기 위한 수단은, 제 2 액세스 모드가 선택되었음을 표시하는 액세스 모드 신호에 대한 응답으로, 데이터를 저장하기 위한 수단에 데이터 어드레스를 송신하는 것과 동시에 태그 데이터를 저장하기 위한 수단에 태그 어드레스를 송신하도록 추가로 구성될 수 있다.
[0044] 설명된 양상들과 함께, 비-일시적 컴퓨터-판독가능 매체는, 프로세서에 의해 실행될 때, 동작 조건들(예컨대, 송출 큐에 저장된 명령들의 수, 실행 유닛에 있는 액티브 스레드들의 수, 전력 절감 모드 표시자, 정적 모드 입력, 또는 이들의 조합)에 기반하여 제 1 캐시 액세스 모드와 제 2 캐시 액세스 모드 사이에서의 선택을 프로세서로 하여금 개시 또는 수행하게 하는 명령들을 저장한다. 추가로, 비-일시적 컴퓨터 판독가능 매체는, 프로세서에 의해 실행될 때, 프로세서로 하여금 제 1 캐시 액세스를 개시 또는 수행하게 하는 명령들을 저장할 수 있다. 제 1 캐시 액세스 모드가 선택될 때, 제 1 캐시 액세스를 수행하는 것은 태그 액세스를 수행하는 것 그리고 태그 액세스를 수행한 후 데이터 어레이 액세스를 수행하는 것을 포함할 수 있다. 제 2 캐시 액세스 모드가 선택될 때, 제 1 캐시 액세스를 수행하는 것은 데이터 어레이 액세스와 동시에 태그 액세스를 수행하는 것을 포함할 수 있다.
[0045] 비-일시적 컴퓨터-판독가능 매체는 도 4의 메모리(432)에 대응할 수 있다. 프로세서는, 도 1의 컨트롤러(102) 또는 실행 유닛(144), 도 2의 컨트롤러(102) 또는 실행 유닛(144), 또는 도 4의 프로세서(410)에 대응할 수 있다. 송출 큐는 도 2의 송출 큐(202)에 대응할 수 있다. 비-일시적 컴퓨터-판독가능 매체는, 프로세서에 의해 실행될 때, 도 3을 참조로 위에 설명된 동작들을 프로세서로 하여금 수행하게 하는 명령들을 저장할 수 있다.
[0046] 당업자들은, 본 명세서에 개시된 양상들과 관련하여 설명된 다양한 예시적인 로지컬 블록들, 구성들, 모듈들, 회로들, 및 알고리즘 단계들이 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이 둘의 조합으로서 구현될 수 있다는 것을 추가로 이해할 것이다. 다양한 예시적인 컴포넌트들, 블록들, 구성들, 모듈들, 회로들, 및 단계들이 이들의 기능과 관련하여 위에서 일반적으로 설명되었다. 이러한 기능이 하드웨어로서 구현되는지 또는 소프트웨어로서 구현되는지 여부는 특정한 애플리케이션 및 전체 시스템에 대하여 부과되는 설계 제약들에 따라 좌우된다. 당업자들은 각각의 특정한 애플리케이션에 대하여 다양한 방식들로 설명된 기능을 구현할 수 있으나, 이러한 구현 결정들은 본 개시내용의 범위를 벗어남을 야기하는 것으로 해석되어서는 안 된다.
[0047] 본 명세서에 개시된 양상들과 관련하여 설명된 방법 또는 알고리즘의 단계들은 직접 하드웨어로 구현되거나, 프로세서에 의해 실행되는 소프트웨어 모듈로 구현되거나, 또는 이 둘의 조합으로 구현될 수 있다. 소프트웨어 모듈은, RAM(random access memory), 플래시 메모리, ROM(read-only memory), PROM(programmable read-only memory), EPROM(erasable programmable read-only memory), EEPROM(electrically erasable programmable read-only memory), 레지스터들, 하드 디스크, 탈착식 디스크, CD-ROM(compact disc read-only memory), 또는 당업계에 알려진 저장 매체의 임의의 다른 형태로 상주할 수 있다. 예시적인 비-일시적(예컨대, 유형의) 저장 매체는, 프로세서가 저장 매체로부터 정보를 판독하고 저장 매체에 정보를 기록할 수 있도록, 프로세서에 커플링될 수 있다. 대안적으로, 저장 매체는 프로세서에 통합될 수 있다. 프로세서 및 저장 매체는 ASIC(application-specific integrated circuit) 내에 상주할 수 있다. ASIC는 컴퓨팅 디바이스 또는 사용자 단말 내에 상주할 수 있다. 대안으로서, 프로세서 및 저장 매체는 컴퓨팅 디바이스 또는 사용자 단말에서 별도의 컴포넌트들로서 상주할 수도 있다.
[0048] 개시된 양상들의 이전 설명은, 당업자로 하여금 개시된 양상들을 이행하게 하거나 또는 사용하게 하기 위해 제공된다. 이러한 양상들에 대한 다양한 수정들이 당업자들에게는 쉽게 명백할 것이며, 본 명세서에 정의된 원리들은 본 개시물의 범위를 벗어나지 않고 다른 양상들에 적용될 수 있다. 따라서, 본 개시내용은 본 명세서에 나타낸 양상들로 제한되는 것으로 의도되지는 않지만, 이하의 청구범위들에 의해 정의된 바와 같이 원리들 및 신규의 특징들에 부합하는 가능한 최광의의 범위에 따른다.

Claims (30)

  1. 방법으로서,
    직렬 캐시 액세스 모드(serial cache access mode)의 선택을 표시하는 제어 신호에 기반하여 제 1 캐시 액세스를 수행하는 단계; 및
    병렬 캐시 액세스 모드(parallel cache access mode)의 선택을 표시하는 제어 신호에 기반하여 제 2 캐시 액세스를 수행하는 단계를 포함하고,
    상기 제 1 캐시 액세스는:
    제 1 태그 액세스를 수행하는 것,
    상기 제 1 태그 액세스에 대응하는 태그 데이터를 저장하는 것, 및
    저장된 태그 데이터에 기반하여 제 1 데이터 어레이 액세스를 수행하는 것을 포함하고,
    상기 제 2 캐시 액세스는, 제 2 데이터 어레이 액세스와 동시에 제 2 태그 액세스를 수행하는 것을 포함하며,
    상기 제 1 데이터 어레이 액세스는 상기 제 2 캐시 액세스 이후에 수행되는,
    방법.
  2. 제 1 항에 있어서,
    상기 제 1 태그 액세스는 제 1 클록 사이클 동안 수행되고,
    상기 제 2 태그 액세스 및 상기 제 2 데이터 어레이 액세스는 상기 제 1 클록 사이클에 후속하는 제 2 클록 사이클 동안 수행되고,
    상기 제 1 데이터 어레이 액세스는 상기 제 2 클록 사이클에 후속하는 제 3 클록 사이클 동안 수행되는,
    방법.
  3. 제 1 항에 있어서,
    상기 제 1 데이터 어레이 액세스를 수행하는 것은:
    상기 제 1 태그 액세스에 기반하여 결정된 태그 신호에 기반하여, 데이터 어레이의 복수의 웨이들 중 특정 웨이에 대응하는 특정 데이터를 선택하는 것; 및
    상기 특정 데이터를 데이터 신호 선택 회로에 송신하는 것을 포함하는,
    방법.
  4. 제 3 항에 있어서,
    상기 제 1 데이터 어레이 액세스를 수행하는 것은:
    상기 특정 데이터가 상기 데이터 신호 선택 회로에 송신된 후, 상기 데이터 신호 선택 회로에서, 상기 태그 신호에 기반하여 상기 특정 데이터를 선택하는 것을 더 포함하는,
    방법.
  5. 제 4 항에 있어서,
    상기 제 1 데이터 어레이 액세스를 수행하는 것은:
    상기 데이터 신호 선택 회로에서 상기 특정 데이터를 선택한 후, 상기 특정 데이터를 송출 큐에 송신하는 것을 더 포함하는,
    방법.
  6. 제 1 항에 있어서,
    상기 제 2 데이터 어레이 액세스를 수행하는 것은:
    상기 제 1 데이터 어레이 액세스에 의해 액세스된 데이터 어레이의 복수의 웨이들에 대응하는 데이터를 데이터 신호 선택 회로에 송신하는 것을 포함하는,
    방법.
  7. 제 6 항에 있어서,
    상기 제 2 데이터 어레이 액세스를 수행하는 것은:
    상기 데이터가 상기 데이터 신호 선택 회로에 송신된 후, 상기 데이터 신호 선택 회로에서, 상기 제 2 태그 액세스에 기반하여 상기 복수의 웨이들 중 특정 웨이에 대응하는 특정 데이터를 선택하는 것을 더 포함하는,
    방법.
  8. 제 7 항에 있어서,
    상기 제 2 데이터 어레이 액세스를 수행하는 것은:
    상기 특정 데이터를 선택한 후, 상기 특정 데이터를 송출 큐에 송신하는 것을 더 포함하는,
    방법.
  9. 제 1 항에 있어서,
    상기 직렬 캐시 액세스 모드는, 송출 큐에 저장된 명령들의 수, 실행 유닛의 액티브 스레드들의 수, 전력 절감 모드 표시자, 정적 모드 입력, 또는 이들의 조합에 기반하여 선택되는,
    방법.
  10. 제 9 항에 있어서,
    상기 병렬 캐시 액세스 모드는, 상기 송출 큐 내의 명령들의 수, 상기 실행 유닛에 있는 액티브 스레드들의 수, 상기 전력 절감 모드 표시자, 상기 정적 모드 입력 또는 이들의 조합에 기반하여 선택되는,
    방법.
  11. 장치로서,
    태그 어레이;
    데이터 어레이; 및
    어드레스 생성 유닛을 포함하고,
    상기 어드레스 생성 유닛은:
    직렬 캐시 액세스 모드가 선택되었음을 표시하는 제어 신호에 대한 응답으로, 상기 태그 어레이에 제 1 태그 어드레스를 송신하고; 상기 태그 어레이로부터의 상기 제 1 태그 어드레스에 대응하는 태그 데이터를 저장하고; 그리고 상기 데이터 어레이에 데이터 요청을 송신하도록 구성되고 ― 상기 데이터 요청은 상기 태그 데이터 및 제 1 데이터 어드레스를 포함함 ―; 그리고
    병렬 캐시 액세스 모드가 선택되었음을 표시하는 제어 신호에 대한 응답으로, 상기 데이터 어레이에 제 2 데이터 어드레스를 송신하는 것과 동시에 상기 태그 어레이에 제 2 태그 어드레스를 송신하도록 구성되며,
    상기 어드레스 생성 유닛은 추가로, 상기 제 2 데이터 어드레스를 송신한 후 상기 데이터 요청을 송신하도록 구성되는,
    장치.
  12. 제 11 항에 있어서,
    상기 제어 신호는 액세스 모드 신호를 포함하고
    상기 장치는 액세스 모드 선택 회로를 더 포함하며,
    상기 액세스 모드 선택 회로는:
    송출 큐에 저장된 명령들의 수, 캐시에 커플링된 실행 유닛의 액티브 스레드들의 수, 또는 이 둘 다에 기반하여 상기 직렬 캐시 액세스 모드와 상기 병렬 캐시 액세스 모드 사이에서의 선택을 수행하고; 그리고
    상기 선택에 기반하여 상기 액세스 모드 신호를 생성하도록 구성되는,
    장치.
  13. 제 11 항에 있어서,
    상기 장치는 태그 로직을 더 포함하고,
    상기 태그 로직은:
    상기 태그 데이터에 기반하여 태그 신호를 출력하고; 그리고
    상기 태그 신호를 데이터 신호 선택 회로에 송신하도록 구성되는,
    장치.
  14. 제 11 항에 있어서,
    송출 큐는 상기 제 1 태그 어드레스에 대응하는 데이터를 수신하도록 구성되는,
    장치.
  15. 제 14 항에 있어서,
    상기 제 1 태그 어드레스에 대응하는 데이터는 상기 송출 큐에 저장될 적어도 하나의 명령을 포함하는,
    장치.
  16. 제 12 항에 있어서,
    상기 캐시는 명령 캐시를 포함하는,
    장치.
  17. 제 12 항에 있어서,
    상기 캐시는 상기 송출 큐를 포함하는,
    장치.
  18. 제 12 항에 있어서,
    상기 캐시는 데이터 캐시를 포함하는,
    장치.
  19. 제 12 항에 있어서,
    상기 액세스 모드 선택 회로는 추가로, 전력 절감 모드 표시자, 정적 모드 입력, 또는 이들의 조합에 기반하여 상기 직렬 캐시 액세스 모드와 상기 병렬 캐시 액세스 모드 사이에서 선택하도록 구성되는,
    장치.
  20. 명령들을 저장하는 비-일시적 컴퓨터-판독가능 매체로서,
    상기 명령들은, 프로세서에 의해 실행될 때, 상기 프로세서로 하여금:
    직렬 캐시 액세스 모드의 제어 신호에 의한 표시에 기반하여 제 1 캐시 액세스를 수행하고,
    병렬 캐시 액세스 모드의 제어 신호에 의한 표시에 기반하여 제 2 캐시 액세스를 수행하게 하며,
    상기 제 1 캐시 액세스는:
    제 1 태그 액세스를 수행하는 것;
    상기 제 1 태그 액세스에 대응하는 태그 데이터를 저장하는 것; 및
    저장된 태그 데이터에 기반하여 제 1 데이터 어레이 액세스를 수행하는 것을 포함하고,
    상기 제 2 캐시 액세스는, 제 2 데이터 어레이 액세스와 동시에 제 2 태그 액세스를 수행하는 것을 포함하며,
    상기 제 1 데이터 어레이 액세스는 상기 제 2 캐시 액세스 이후에 수행되는,
    비-일시적 컴퓨터-판독가능 매체.
  21. 제 20 항에 있어서,
    상기 제 1 태그 액세스는 제 1 클록 사이클 동안 수행되고,
    상기 제 2 태그 액세스 및 상기 제 2 데이터 어레이 액세스는 상기 제 1 클록 사이클에 후속하는 제 2 클록 사이클 동안 수행되고,
    상기 제 1 데이터 어레이 액세스는 상기 제 2 클록 사이클에 후속하는 제 3 클록 사이클 동안 수행되는,
    비-일시적 컴퓨터-판독가능 매체.
  22. 장치로서,
    태그 데이터를 저장하기 위한 수단;
    데이터를 저장하기 위한 수단; 및
    어드레스들을 생성하기 위한 수단을 포함하고,
    상기 어드레스들을 생성하기 위한 수단은, 직렬 캐시 액세스 모드 또는 병렬 캐시 액세스 모드의 제어 신호에 의한 표시에 응답하고,
    상기 어드레스들을 생성하기 위한 수단은,
    상기 직렬 캐시 액세스 모드에서:
    상기 태그 데이터를 저장하기 위한 수단에 제 1 태그 어드레스를 송신하고;
    상기 제 1 태그 어드레스에 응답하여 상기 태그 데이터를 저장하기 위한 수단으로부터 수신된 제 1 태그 데이터를 저장하고; 그리고
    상기 데이터를 저장하기 위한 수단에 데이터 요청을 송신하도록 구성되고 ― 상기 데이터 요청은 상기 제 1 태그 데이터 및 제 1 데이터 어드레스를 포함함 ―,
    상기 병렬 캐시 액세스 모드에서:
    상기 데이터를 저장하기 위한 수단에 제 2 데이터 어드레스를 송신하는 것과 동시에 상기 태그 데이터를 저장하기 위한 수단에 제 2 태그 어드레스를 송신하도록 구성되고,
    상기 어드레스들을 생성하기 위한 수단은 추가로, 상기 제 2 데이터 어드레스 이후에 상기 데이터 요청을 송신하도록 구성되는,
    장치.
  23. 제 22 항에 있어서,
    송출 큐에 저장된 명령들의 수, 실행 유닛의 액티브 스레드들의 수, 전력 절감 모드 표시자, 정적 모드 입력, 또는 이들의 조합에 기반하여 상기 직렬 캐시 액세스 모드와 상기 병렬 캐시 액세스 모드 사이에서 선택하기 위한 수단을 더 포함하는,
    장치.
  24. 데이터 어레이 충돌 회피 방법으로서,
    태그 어레이의 제 1 액세스에 기반하여 태그 데이터를 결정하는 단계 ― 상기 태그 어레이의 제 1 액세스는 직렬 동작 모드의 선택을 표시하는 제어 신호에 기반하여 직렬-모드 캐시 액세스 동작 동안 수행됨 ―;
    상기 태그 데이터를 저장하는 단계;
    병렬-모드 캐시 액세스 동작 동안 상기 태그 어레이의 제 2 액세스 및 데이터 어레이의 제 1 액세스를 동시에 수행하는 단계 ― 상기 병렬-모드 캐시 액세스 동작은 상기 직렬-모드 캐시 액세스 동작 이후에 개시되고 그리고 병렬 동작 모드의 선택을 표시하는 상기 제어 신호에 기반함 ―; 및
    상기 병렬-모드 캐시 액세스 동작 이후에, 상기 직렬-모드 캐시 액세스 동작을 완료하기 위해, 저장된 태그 데이터에 기반하여 상기 데이터 어레이의 제 2 액세스를 수행하는 단계를 포함하는,
    방법.
  25. 제 1 항에 있어서,
    상기 제어 신호는 캐시 구성 설정에 기반하는,
    방법.
  26. 제 25 항에 있어서,
    상기 캐시 구성 설정은 사용자에 의해 특정되는,
    방법.
  27. 제 1 항에 있어서,
    상기 제어 신호는 제어 데이터에 기반하는,
    방법.
  28. 제 27 항에 있어서,
    상기 제어 데이터는 컨트롤러의 동작과 연관되는,
    방법.
  29. 제 28 항에 있어서,
    상기 제어 데이터는 상기 직렬 캐시 액세스 모드 또는 상기 병렬 캐시 액세스 모드의 컨트롤러에 의한 선택을 표시하는,
    방법.
  30. 제 1 항에 있어서,
    상기 제어 신호는 상기 직렬 캐시 액세스 모드 및 상기 병렬 캐시 액세스 모드 중 하나를 표시하는 액세스 모드 신호를 포함하는,
    방법.
KR1020167032793A 2014-05-27 2015-05-01 캐시 액세스 모드 선택을 위한 방법 및 장치 KR101757355B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/287,331 2014-05-27
US14/287,331 US9529727B2 (en) 2014-05-27 2014-05-27 Reconfigurable fetch pipeline
PCT/US2015/028720 WO2015183467A1 (en) 2014-05-27 2015-05-01 Method and apparatus for cache access mode selection

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020177017861A Division KR20170081275A (ko) 2014-05-27 2015-05-01 재구성가능한 페치 파이프라인

Publications (2)

Publication Number Publication Date
KR20170012254A true KR20170012254A (ko) 2017-02-02
KR101757355B1 KR101757355B1 (ko) 2017-07-12

Family

ID=53274794

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020177017861A KR20170081275A (ko) 2014-05-27 2015-05-01 재구성가능한 페치 파이프라인
KR1020167032793A KR101757355B1 (ko) 2014-05-27 2015-05-01 캐시 액세스 모드 선택을 위한 방법 및 장치

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020177017861A KR20170081275A (ko) 2014-05-27 2015-05-01 재구성가능한 페치 파이프라인

Country Status (6)

Country Link
US (2) US9529727B2 (ko)
EP (2) EP3629184A1 (ko)
JP (1) JP6258525B2 (ko)
KR (2) KR20170081275A (ko)
CN (1) CN106462392B (ko)
WO (1) WO2015183467A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9529727B2 (en) 2014-05-27 2016-12-27 Qualcomm Incorporated Reconfigurable fetch pipeline
US10705987B2 (en) * 2016-05-12 2020-07-07 Lg Electronics Inc. Autonomous prefetch engine
US10034407B2 (en) * 2016-07-22 2018-07-24 Intel Corporation Storage sled for a data center
US10896044B2 (en) 2018-06-21 2021-01-19 Advanced Micro Devices, Inc. Low latency synchronization for operation cache and instruction cache fetching and decoding instructions
JP7070384B2 (ja) * 2018-12-10 2022-05-18 富士通株式会社 演算処理装置、メモリ装置、及び演算処理装置の制御方法
US11436144B2 (en) 2020-04-10 2022-09-06 Micron Technology, Inc. Cache memory addressing

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2297398B (en) * 1995-01-17 1999-11-24 Advanced Risc Mach Ltd Accessing cache memories
US6684298B1 (en) * 2000-11-09 2004-01-27 University Of Rochester Dynamic reconfigurable memory hierarchy
US6604174B1 (en) * 2000-11-10 2003-08-05 International Business Machines Corporation Performance based system and method for dynamic allocation of a unified multiport cache
US6452823B1 (en) * 2001-01-31 2002-09-17 Motorola, Inc. Non-volatile magnetic cache memory and method of use
JP2003242029A (ja) * 2002-02-15 2003-08-29 Hitachi Ltd 半導体集積回路
JP2004171177A (ja) 2002-11-19 2004-06-17 Renesas Technology Corp キャッシュシステムおよびキャッシュメモリ制御装置
TWI261198B (en) * 2003-02-20 2006-09-01 Samsung Electronics Co Ltd Simultaneous multi-threading processor circuits and computer program products configured to operate at different performance levels based on a number of operating threads and methods of operating
GB2410584B (en) * 2003-02-20 2006-02-01 Samsung Electronics Co Ltd Simultaneous multi-threading processor circuits and computer program products configured to operate at different performance levels
US20050268022A1 (en) 2004-05-26 2005-12-01 Pelley Perry H Cache line memory and method therefor
JP2006059068A (ja) 2004-08-19 2006-03-02 Matsushita Electric Ind Co Ltd プロセッサ装置
US7751269B2 (en) 2006-09-28 2010-07-06 Infineon Technologies Ag Coupling device for transmitting data
US8458404B1 (en) 2008-08-14 2013-06-04 Marvell International Ltd. Programmable cache access protocol to optimize power consumption and performance
US8667225B2 (en) 2009-09-11 2014-03-04 Advanced Micro Devices, Inc. Store aware prefetching for a datastream
US8762644B2 (en) * 2010-10-15 2014-06-24 Qualcomm Incorporated Low-power audio decoding and playback using cached images
US9442732B2 (en) 2012-03-19 2016-09-13 Via Technologies, Inc. Running state power saving via reduced instructions per clock operation
JP5591969B1 (ja) * 2013-03-27 2014-09-17 株式会社東芝 マルチコアプロセッサおよび制御方法
US9734080B2 (en) * 2013-08-08 2017-08-15 Nxp Usa, Inc. Cache organization and method
US9529727B2 (en) 2014-05-27 2016-12-27 Qualcomm Incorporated Reconfigurable fetch pipeline

Also Published As

Publication number Publication date
EP3149594A1 (en) 2017-04-05
EP3629184A1 (en) 2020-04-01
US20150347308A1 (en) 2015-12-03
US20160328325A1 (en) 2016-11-10
KR101757355B1 (ko) 2017-07-12
JP6258525B2 (ja) 2018-01-10
EP3149594B1 (en) 2019-11-27
WO2015183467A1 (en) 2015-12-03
KR20170081275A (ko) 2017-07-11
US9529727B2 (en) 2016-12-27
CN106462392B (zh) 2018-07-17
CN106462392A (zh) 2017-02-22
JP2017517065A (ja) 2017-06-22
US10007613B2 (en) 2018-06-26

Similar Documents

Publication Publication Date Title
KR101757355B1 (ko) 캐시 액세스 모드 선택을 위한 방법 및 장치
KR102447493B1 (ko) 랭크 단위로 메모리 장치를 트레이닝하는 전자 장치 및 그것의 메모리 트레이닝 방법
KR101503623B1 (ko) 캐싱된 이미지들을 이용하는 저전력 오디오 디코딩 및 재생
KR102011135B1 (ko) 모바일 장치 및 그것의 스왑을 통한 데이터 관리 방법
US9448609B2 (en) Multimedia processing system and method of operating the same
US8996788B2 (en) Configurable flash interface
US9043806B2 (en) Information processing device and task switching method
JP5254342B2 (ja) n−ウェイキャッシュを用いるシステムおよび方法
US20170168727A1 (en) Single-stage arbiter/scheduler for a memory system comprising a volatile memory and a shared cache
JP2016534484A (ja) 作業負荷に従ってメモリバス帯域幅を低減するためのシステムおよび方法
US20160216751A1 (en) Audio processing system
US8874884B2 (en) Selective writing of branch target buffer when number of instructions in cache line containing branch instruction is less than threshold
JP6212133B2 (ja) マルチビットウェイ予測マスクを有する命令キャッシュ
CN115033520B (zh) Iic数据传输方法、装置、单片机设备及存储介质
KR20040067063A (ko) 디지털 신호 처리장치의 저전력 소비형 캐시 메모리 장치및 이에 대한 제어방법
US20170046168A1 (en) Scalable single-instruction-multiple-data instructions
JP2006209527A (ja) コンピュータシステム
US9990142B2 (en) Mass storage system and method of storing mass data
KR20160034964A (ko) 컴퓨팅 디바이스에서의 전력 소비 감축
US9652413B2 (en) Signal processing system and integrated circuit comprising a prefetch module and method therefor
JP2008129851A (ja) 演算処理装置

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant