KR102661483B1 - 멀티 스레드 모드에서 전력 감소를 위한 방법 및 장치 - Google Patents

멀티 스레드 모드에서 전력 감소를 위한 방법 및 장치 Download PDF

Info

Publication number
KR102661483B1
KR102661483B1 KR1020197006518A KR20197006518A KR102661483B1 KR 102661483 B1 KR102661483 B1 KR 102661483B1 KR 1020197006518 A KR1020197006518 A KR 1020197006518A KR 20197006518 A KR20197006518 A KR 20197006518A KR 102661483 B1 KR102661483 B1 KR 102661483B1
Authority
KR
South Korea
Prior art keywords
virtual address
thread
comparators
address
valid
Prior art date
Application number
KR1020197006518A
Other languages
English (en)
Other versions
KR20190032585A (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 KR20190032585A publication Critical patent/KR20190032585A/ko
Application granted granted Critical
Publication of KR102661483B1 publication Critical patent/KR102661483B1/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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3215Monitoring of peripheral devices
    • G06F1/3225Monitoring of peripheral devices of memory devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • 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/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/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/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
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1063Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
    • 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/30098Register arrangements
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/14Power supply arrangements, e.g. power down, chip selection or deselection, layout of wirings or power grids, or multiple supply levels
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7452Multiple parallel or consecutive lookup operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/74591Address table lookup; Address filtering using content-addressable memories [CAM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90339Query processing by using parallel associative memories or content-addressable memories
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • 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/60Details of cache memory
    • G06F2212/6032Way prediction in set-associative cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/683Invalidation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2207/00Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
    • G11C2207/22Control and timing of internal memory operations
    • G11C2207/2263Write conditionally, e.g. only if new data and old data differ
    • 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

Abstract

멀티 스레드 내용 주소화 메모리에서 동적 전력 소비를 감소시키기 위한 방법 및 장치가 설명된다. 상기 장치는 제1 스레드에 대응하는 제1 가상 주소를 수신하도록 구성된 제1 입력, 제2 스레드에 대응하는 제2 가상 주소를 수신하도록 구성된 제2 입력, 복수의 물리적 주소 중 하나에 맵핑되는 바이너리 워드를 저장하도록 각각 구성된 복수의 레지스터를 포함하는 레지스터 뱅크, 완전 연관 구성의 복수의 레지스터 중 연관된 레지스터에 각각 접속되는 제1 복수의 비교기를 포함하는 제1 비교기 뱅크, 및 완전 연관 구성의 복수의 레지스터 중 연관된 레지스터에 각각 접속되는 제2 복수의 비교기를 포함하는 제2 비교기 뱅크를 포함한다. 각 비교기 뱅크로 입력된 가상 주소는 대응하는 스레드가 선택되지 않을 동안 그것의 이전 값을 유지한다.

Description

멀티 스레드 모드에서 전력 감소를 위한 방법 및 장치
관련 출원 상호 참조
본 출원은 2016년 8월 17일자로 출원된 미국 가 출원 번호 15/238,920의 이익을 주장하며, 이는 본원에 전체가 설명된 것처럼 참조로 인용된다.
가상 메모리는 컴퓨팅 시스템이 컴퓨팅 시스템에 의해 액세스 가능한 실제 메모리를 관리하는 것으로 제한되는 경우보다 컴퓨팅 시스템들이 메모리를 보다 양호하게 관리할 수 있게 한다. 예를 들어, 메모리 맵핑 메커니즘으로서의 가상 어드레싱은 컴퓨팅 시스템이 비-연속적인 영역들을 특정 어플리케이션에 할당하면서, 어플리케이션에 하나의 인접한 메모리 영역이 할당된 모습을 부여할 수 있게 한다. 또한, 가상 메모리 기능은 컴퓨팅 시스템이 실제로 컴퓨팅 시스템에서 이용 가능한 것보다 어 많은 메모리를 어플리케이션에 할당할 수 있게 한다. 어플리케이션이 가상 메모리를 구현하는 시스템상의 메모리 주소(예를 들어, 가상 주소(VA, virtual address))를 참조할 때마다, 주소는 실제 메모리 위치를 가리키는 물리적 주소(PA, physical address)로 변환된다. 어플리케이션들은 메모리와 자주 상호 작용하기 때문에, 가상 메모리 시스템 내 비효율성 및 유연성 부족은 성능 저하를 유발할 수 있다.
프로세서들은 가상 어드레싱을 사용하여, 가상 주소에서 물리적 주소 변환으로 생성된 물리적 주소를 사용하여 메모리에 액세스할 수 있다. 가상 주소 대 물리적 주소 변환 프로세스를 가속화하기 위해, 프로세서들은 변환 색인 버퍼들(TLB, Translation Lookaside Buffers)을 사용할 수 있으며, 이것들은 가상 주소 대 실제 주소 변환들을 캐싱하는 내용 주소화 메모리(CAM, Content Addressable Memory) 플러스 랜덤 액세스 메모리(RAM, random access memory) 구조이다.
따라서, TLB들은 가상 대 물리적 주소 변환들 및 운영 체제(OS)-페이지-단위의 메타데이터(예를 들어, 판독/기입 권한)를 캐싱하기 위해 컴퓨팅 시스템들에 사용되는 하드웨어 구조들이다. TLB는 모든 메모리 액세스에서 색인되고, 최상 경로(critical path)에 있으며, 각 프로세서 코어 또는 가속기가 자체 TLB를 갖기 때문에 TLB는 컴퓨팅 시스템의 성능 확장성에 중요하다.
마이크로프로세서들은 셀 카운트를 줄이기 위해 다중 스레드를 구현하여 마이크로프로세서에서 "데드(dead)" 사이클들일 수 있는 것의 이점을 활용하여 시스템에 더 많은 프로세서가 있는 것처럼 보이게 만든다. 마이크로프로세서의 많은 곳에서, 파이프 상태들은 스레드 식별자(ID)와 태깅되고 프로세서의 기존 자원들은 스레드들 간에 공유된다. 이러한 자원들의 공유는 셀 카운트는 줄이지만 전력 관련 비용이 높을 수 있는데, 특히 특히 한 스레드에서 다른 스레드로 변경하는 데 많은 회로 활동량이 있는 경우 그렇다.
예를 들어, 도 1은 CAM(102)을 구현하는 멀티 스레드 시스템(100)의 블록도를 도시한다. CAM(102)은 기입 및 색인 동작들을 수행하기 위해 비교기들의 단일 뱅크(106)에 결합되고 그에 대응하는 레지스터들의 단일 뱅크(104)를 포함한다. 멀티 스레드 시스템(100)은 각각 CAM(102)에 입력할 주소 또는 태그를 저장하는 자체 탐색 데이터 레지스터들(111 및 112)을 포함하는 스레드 0(T0) 및 스레드 1(T1)을 더 포함한다. 각 스레드에 대해 저장된 태그는 멀티플렉서(114)에 입력되며, 이는 "T1 활성" 비트에 기초하여 CAM(102)에 입력할 태그들 중 하나를 선택한다. 입력 주소(116)(즉, 선택된 태그)는 그 다음 CAM(102)에 제공된다. CAM(102)은 입력 주소(116)를 사용하여 색인 동작을 수행할 때, 레지스터들의 뱅크(104)에 저장된 CAM 엔트리들에 기초하여 매치 결과(117)(예를 들어, "적중" 또는 "부적중")을 출력한다. 마지막으로, 매치 결과(117)는 AND 게이트(118)에 의해 "임의의 스레드 유효" 비트와 AND 연산되며, 이는 매치 결과(117)를 출력(119)으로 출력하기 전에 스레드들 중 하나(예를 들어, 스레드 0 또는 1)가 유효함을 보장한다.
멀티 스레드 시스템(100)의 통상적인 동작에서, 입력 주소(116)는 스레드 0과 스레드 1 사이에서 왔다갔다 사이클링된다. 각각의 스레드가 동일한 비교기들의 뱅크(106)를 공유하기 때문에, 탐색 데이터 레지스터들(111 및 112)에 의해 제공되는 주소 내용에 의존하여 매 사이클마다 비교기들의 뱅크(106)의 구성에서 토글링이 발생할 수 있다. 비교기의 구성요소(예를 들어, 구현에 따라 XOR, XNOR, OR 또는 AND 게이트)에 대한 입력의 토글링은 전력을 소비한다. 따라서, 더 많은 수의 비교기, 또는 그것들의 구성요소들이 토글링될 때, 과다 상태가 발생하여, 동적 전력 소비가 증가된다. 이는 특히 스레드들이 완전히 독립적인 것으로 인해 하나의 스레드로부터의 입력 주소의 다수의 비트가 제2 스레드로부터의 입력 주소의 비트들과 상이할 때 발생할 수 있다. 사이클 간 토글링이 발생하면 전력 소비가 높아질 수 있다. 따라서, 멀티 스레드 구성으로 구현된 TLB CAM의 전력 소비를 줄여야 할 필요가 있다.
첨부 도면들과 관련하여 예로서 주어진 이하의 설명으로부터 보다 상세하게 이해될 수 있으며, 도면들에서:
도 1은 종래 내용 주소화 메모리(CAM)를 구현하는 멀티 스레드 시스템의 블록도이다;
도 2는 하나 이상의 개시된 실시예가 구현될 수 있는 예시적인 디바이스의 블록도이다;
도 3은 하나 이상의 실시예에 따른 TLB CAM에 구현되는 다중 비트 논리 비교기의 개략도를 도시한다;
도 4는 하나 이상의 실시예에 따른 멀티 스레드 TLB CAM의 블록도이다;
도 5는 하나 이상의 실시예에 따른 도 4의 TLB CAM을 구현하는 멀티 스레드 프로세서의 블록도이다; 그리고
도 6은 하나 이상의 실시예에 따른 멀티 스레드 CAM 방법의 흐름도이다.
도 2는 하나 이상의 개시된 실시예가 구현될 수 있는 예시적인 디바이스(200)의 블록도이다. 디바이스(200)는 예를 들어, 컴퓨터, 게임 디바이스, 핸드헬드 디바이스, 셋톱 박스, 텔레비전, 이동 전화 또는 태블릿 컴퓨터를 포함할 수 있다. 디바이스(200)는 프로세서(202), 메모리(204), 스토리지(206), 하나 이상의 입력 장치(208) 및 하나 이상의 출력 장치(210)를 포함한다. 디바이스(200)는 또한 입력 드라이버(212) 및 출력 드라이버(214)를 선택적으로 포함할 수 있다. 디바이스(200)가 도 2에 도시되지 않은 부가적인 구성요소들을 포함할 수 있음이 이해된다.
프로세서(202)는 중앙 처리 장치(CPU), 그래픽 처리 장치(GPU), 동일한 다이 상에 위치한 CPU 및 GPU, 또는 각 프로세서 코어가 CPU 또는 GPU일 수 있는 하나 이상의 프로세서 코어를 포함할 수 있다. 메모리(204)는 프로세서(202)와 동일한 다이 상에 위치될 수 있거나, 또는 프로세서(202)와 별도로 위치될 수 있다. 프로세서(202)는 프로세서(202)가 스레드 들 간에 실행 자원들을 전환하여 동시에 실행하게 되는 변환 색인 버퍼(TLB) 내용 주소화 메모리(CAM)를 사용하여 멀티 스레드 프로세스를 구현할 수 있다. 공유 메모리 멀티 프로세서 환경의 동일한 멀티 스레드 프로세스에서, 프로세스의 각 스레드는 동시에 별도의 프로세서에서 실행될 수 있어, 병렬로 실행되게 된다.
메모리(204)는 예를 들어, 랜덤 액세스 메모리(RAM), 동적 RAM 또는 캐시와 같은 휘발성 또는 비-휘발성 메모리를 포함할 수 있다.
스토리지(206)는 예를 들어, 하드 디스크 드라이브, 고체 상태 드라이브, 광 디스크 또는 플래시 드라이브와 같은 고정식 또는 착탈식 스토리지를 포함할 수 있다. 입력 디바이스들(208)은 키보드, 키패드, 터치 스크린, 터치 패드, 검출기, 마이크로폰, 가속도계, 자이로스코프, 생체 인식 스캐너 또는 네트워크 연결(예를 들어, 무선 IEEE 802 신호들의 송신 및/또는 수신을 위한 무선 근거리 통신망 카드)을 포함할 수 있다. 출력 디바이스들(210)은 디스플레이, 스피커, 프린터, 촉각 피드백 디바이스, 하나 이상의 라이트, 안테나 또는 네트워크 연결(예를 들어, 무선 IEEE 802 신호들의 송신 및/또는 수신을 위한 무선 근거리 통신망 카드)을 포함할 수 있다.
입력 드라이버(212)는 프로세서(202) 및 입력 디바이스들(208)과 통신하고, 프로세서(202)가 입력 디바이스들(208)로부터 입력을 수신하게 한다. 출력 드라이버(214)는 프로세서(202) 및 출력 디바이스들(210)과 통신하고, 프로세서(202)가 출력 디바이스들(210)로 출력을 전송하게 한다. 입력 드라이버(212) 및 출력 드라이버(214)는 선택적 구성요소들이고, 입력 드라이버(212) 및 출력 드라이버(214)가 존재하지 않더라도 디바이스(200)는 동일한 방식으로 동작할 것이라는 점에 유의해야 한다.
"가상 주소", "입력 주소", "탐색 주소", "입력 탐색 데이터" 및 "태그"라는 용어들은 달리 명시하지 않는 한 통용되고, 하나의 용어는 하나 이상의 측면에서 다른 용어로 대체되거나 조합될 수 있는 것으로 이해될 것이다. 본원에서 사용되는 이러한 용어들은 임의의 바이너리 색인 워드가 CAM에 의해 탐색되는 것을 나타내고, 페이지 크기, 스레드 ID(적용 가능할 경우) 및 유효 예/아니오 비트를 포함할 수 있다.
시스템 메모리는 본원에 설명될 때 운영 체제에 의해 관리되고, 필요에 따라 상이한 소프트웨어 어플리케이션들에 할당된다. 상이한 소프트웨어 어플리케이션들은 하나 이상의 파티션에서 실행될 수 있고, 하나 이상의 파티션은 상이한 운영 체제들(OS들)을 실행할 수 있다. 전술한 바와 같이, 가상 메모리 기술들은 상기한 컴퓨터 시스템에서 많은 프로세스 및 어플리케이션 간에 컴퓨팅 시스템의 물리적 메모리를 공유하기 위해 사용될 수 있다. 그에 따라 소프트웨어 어플리케이션들이 가상 메모리 공간 내 유효 주소들을 다루며, 이는 어플리케이션들이 동작들이 일어나는 실제 물리적 메모리 위치들과 관련없이, 하나 이상의 프로세스(예를 들어, 판독, 기입 및/또는 실행)를 요청될 때 수행할 수 있게 한다. 어플리케이션들은 어플리케이션에 의해 사용되는 유효 주소로부터 컴퓨터 메모리 내 물리적 주소로의 맵핑을 수행하기 위해 각 어플리케이션의 기저가 되는 운영 체제에 의존적이다. 주소 변환은 가상 메모리를 참조하는 실제 주소가 실제 메모리 주소들로 변환되는 메커니즘이다. 주소 변환은 잘 구현되지 않으면, 프로세서의 클록 사이클을 결정하는 최상 경로로 끝날 수 있는 복잡한 절차이다.
멀티 스레드 프로세서를 이용하면, 다수의 실행 스레드가 각 프로세스의 상황 정보(context) 내에 존재한다. 특정 프로세스의 스레드들은 프로세서가 상이한 스레드들 간을 빠르게 전환하여 스레드들이 동시에 실행되고 있는 것처럼 보이게 되도록 하는 것과 같은 방식으로 실행된다. 단순한 유형의 멀티 스레딩은 칩 밖의 메모리에 액세스해야 하는 캐시 부적중과 같은 이벤트가 발생할 때까지 하나의 스레드가 실행되는 경우이며, 이는 긴 레이턴시를 야기할 수 있다. 프로세서는 기다리는 대신, 실행할 준비가 된 다른 스레드로 전환한다. 이전 스레드에 대한 데이터가 도착하면, 이전 스레드는 실행할 준비가 된 스레드 목록에 다시 놓인다. 다른 유형의 멀티 스레딩에서, 프로세서는 매 CPU 사이클마다 스레드들을 전환한다.
각 프로세스에는 운영 체제에 의해, 프로세서, 레지스터들 기타 같은 종류의 것과 같은 자원들을 할당 받고, 그러한 자원들은 각 스레드가 그 자체의 자원들을 "소유"하도록 프로세스의 스레드들에 할당되며, 이것들은 스레드가 명령을 실행하기 위해 채용될 때 사용된다. 프로세스가 생성될 때, 그것은 주 메모리에 저장된다. 커널이 프로세스를 프로세서에 할당하면, 프로세스는 프로세서에 로딩되고 프로세서는 그것의 자원들을 사용하여 스레드의 명령들을 실행한다.
스레드 아비터 및/또는 스레드 우선 순위는 명령 실행에 사용할 실행 스레드를 결정하고, 그것의 다양한 실행 상태를 통해 스레드 식별자(ID)가 명령과 연관되고 그 명령을 따른다. 명령은 스레드 ID에 대응하는 스레드의 레지스터들과 같은 자원들을 사용하여 실행된다. 복수의 스레드를 프로세싱할 때, 스레드 아비터 또는 스레드 우선 순위는 채용할 다음 스레드를 결정하고, 그것의 다양한 실행 상태를 통해 다음 스레드의 스레드 ID가 다음 명령과 연관되고 그 명령을 따른다. 마찬가지로, 명령은 다음 스레드의 스레드 ID에 대응하는 스레드의 자원들을 사용하여 실행된다.
TLB는 가상 주소 변환 속도를 향상시키기 위해 메모리 관리 하드웨어가 사용하는 캐시이다. TLB는 가상 메모리 주소를 물리적 메모리 주소들에 맵핑하는 주소 변환 데이터(엔트리들)를 포함하는 고정된 수의 슬롯을 갖는다. TLB들은 내용 주소화 메모리이며, 이때 탐색 키가 가상 메모리 주소이고 탐색 결과가 물리적 메모리 주소이다. TLB들은 단일 메모리 캐시이거나, 또는 대안적으로 TLB들은 해당 기술분야에 알려져 있는 바와 같은 계층 구조(hierarchy)로 조직된다. TLB들이 어떻게 실현되는지에 관계없이, 요청된 가상 주소가 TLB에 존재하면(즉, "TLB 적중"), 색인은 성공한 것으로 여겨지고 탐색은 매치를 빠르게 생성하며 메모리 액세스를 위한 물리적 메모리 주소가 반환된다. 요청된 주소가 TLB에 없다면(즉, "TLB 부적중"), 변환은 통상적으로 "페이지 워크(page walk)" 또는 "페이지 테이블 워크(page table walk)"로 지칭되는 프로세스로 페이지 테이블을 조사함으로써 진행된다. 물리적 메모리 주소가 결정된 후, 가상 메모리 주소 대 물리적 메모리 주소 맵핑은 잘못된 가상 주소를 정확한 물리적 주소에 맵핑하기 위해 각각의 TLB에 로딩되고(즉, 주소 맵핑을 요청 프로세서 유형(CPU 또는 가속기)에 따라), 프로그램이 재개된다.
캐시들과 같이, 명령 및 데이터 스트림들에 대한 별도의 TLB들이 많은 최신 프로세서 상에 제공되어 왔다. 명령어 변환 색인 버퍼(ITLB, Instruction Translation Lookaside Buffer)는 명령들의 주소만 핸들링한다. TLB들은 여러 레벨(예를 들어, L1, L2 등)을 가질 수 있다. 예를 들어, 매우 빠른 작은 "L1" TLB(완전 연관) 및 다소 느린 더 큰"L2" TLB(세트 연관). ITLB들 및 데이터 TLB들(DTLB들)이 사용될 때, CPU는 셋 또는 네 개의 TLB(예를 들어, ITLB1, DTLB1, TLB2)를 가질 수 있다. L1TLB는 일반적으로 작고 완전 연관 캐시이므로, 로드, 스토어 및 명령어 추출과 같은 저장 장치 액세스는 동일한 클록 주기에서 모든 페이지 크기의 L1TLB에 액세스할 수 있다. 그러나, L2TLB는 그 크기가 상대적으로 크기 때문에, 완전 연관 구조가 아닐 수 있다. 결과적으로, L2LTB는 예를 들어, RAM 어레이들에 액세스할 필요성으로 인해 단일 클록 사이클에서 모든 엔트리에 걸쳐 액세스(예를 들어, 탐색)되지 않을 수 있다.
L1TLB의 각 캐시는 단일 사이클 판독, 및 액세스의 순차성에 따라 1 또는 2 사이클 기입을 지원하는 적어도 하나의 완전 연관 2n 바이트 세그먼트를 포함한다. 각 캐시 세그먼트는 예를 들어, 64개의 CAM 로우로 구성되며 각각 64개의 RAM 라인 중 하나를 선택한다. L1TLB 액세스 동안, 입력 주소는 CAM 내 64개의 태그와 비교된다. 매치가 발생하면("적중"), CAM의 매칭된 라인이 이네이블되고 데이터가 액세스될 수 있다. 어느 태그도 매칭되지 않으면("부적중"), 보다 상위 레벨 TLB 또는 외부 메모리에 액세스된다. 캐싱 가능 메모리 영역으로부터 저장 장치 액세스가 부적중되면, 새로운 데이터가 2n 바이트 세그먼트의 64개의 로우 라인 중 하나에 로딩된다. 64개의 CAM 로우 및 RAM 라인의 수는 단지 예시를 위한 것이고 그 수는 제한적인 것으로 여겨지지 않는 것으로 이해될 것이다.
전술한 바와 같이, TLB는 입력된 탐색 데이터를 저장된 데이터 테이블과 비교하고 매칭되는 데이터의 주소를 반환하기 위해 CAM을 포함한다. CAM은 특정 초고속 탐색 어플리케이션들에 사용되는 특수 유형의 컴퓨터 메모리이다. 그것은 입력된 탐색 데이터(즉, 태그)를 저장된 데이터 테이블과 비교하고, 매칭되는 데이터의 주소(또는 연관 메모리의 경우, 매칭되는 데이터)를 반환한다. 그에 따라, CAM들은 탐색-집중 어플리케이션들에 대한 알고리즘 방식보다 훨씬 더 빠른 하드웨어 탐색 엔진들이다. CAM들은 종래의 반도체 메모리(예를 들어, 정적 RAM(SRAM))에 단일 클록 사이클에서 탐색 동작을 완료할 수 있게 하는 비교 회로가 추가되어 구성된다.
바이너리 CAM은 전체가 1들 및 0들로 구성된 데이터 탐색 워드들을 사용하는 가장 단순한 유형의 CAM이다. 터너리 CAM(TCAM)은 저장된 데이터 워드의 1 이상의 비트에 대해 "X" 또는 "상관 없음"의 제3의 매칭 상태를 허용함에 따라, 탐색에 유연성을 더한다. 예를 들어, 터너리 CAM은 "10000", "10010", "10100" 또는 "10110"의 네 개의 탐색 워드 중 임의의 워드와 매칭될 "10XX0"이라는 저장된 워드를 가질 수 있다. 이제는 내부 메모리 셀이 바이너리 CAM의 2개가 아닌 3개의 가능한 상태를 인코딩해야 하므로 더해진 탐색 유연성은 바이너리 CAM에 비해 대가를 치른다. 이 추가 상태는 통상적으로 모든 메모리 셀에 마스크 비트("상관" 또는 "상관 없음" 비트)를 추가하여 구현된다.
상술한 측면들 중 하나 이상의 측면은 후술될 추가 예들로 구현된다.
일례에 따르면, 멀티 스레드 CAM 디바이스가 제공된다. CAM은 제1 스레드에 대응하는 제1 가상 주소를 수신하도록 구성된 제1 입력, 제2 스레드에 대응하는 제2 가상 주소를 수신하도록 구성된 제2 입력, 복수의 물리적 주소 중 하나에 맵핑되는 바이너리 워드를 저장하도록 각각 구성된 복수의 레지스터를 포함하는 레지스터 뱅크, 완전 연관 구성의 복수의 레지스터 중 하나에 각각 접속되는 제1 복수의 비교기를 포함하는 제1 비교기 뱅크, 및 완전 연관 구성의 복수의 레지스터 중 하나에 각각 접속되는 제2 복수의 비교기를 포함하는 제2 비교기 뱅크를 포함한다.
특히, 제1 복수의 비교기의 각각은 제1 매치가 존재하는지 여부를 결정하기 위해 제1 가상 주소를 그와 연관된 레지스터에 저장된 바이너리 워드와 비교하도록 구성되고, 제1 비교기 뱅크는 제1 복수의 비교기의 제1 비교 결과들을 출력하도록 구성된다. 유사하게, 제2 복수의 비교기의 각각은 제2 매치가 존재하는지 여부를 결정하기 위해 제2 가상 주소를 그와 연관된 레지스터에 저장된 바이너리 워드와 비교하도록 구성되고, 제2 비교기 뱅크는 제2 복수의 비교기의 제2 비교 결과들을 출력하도록 구성된다.
또한, 제1 복수의 비교기의 각각은 제1 스레드가 비활성화되거나 유효하지 않다는 조건에 제1 비교기 뱅크에 입력된 이전 제1 가상 주소에 대응하는 제1 입력 상태를 유지하고, 제2 복수의 비교기의 각각은 제2 스레드가 비활성화되거나 유효하지 않다는 조건에 제2 비교기 뱅크에 입력된 이전 제2 가상 주소에 대응하는 제2 입력 상태를 유지한다.
다른 예에 따르면, 멀티 스레드 CAM 방법이 제공된다. 상기 방법은 제1 비교기 뱅크에 의해, 제1 스레드에 대응하는 제1 가상 주소를 수신하는 단계, 및 제2 비교기 뱅크에 의해, 제2 스레드에 대응하는 제2 가상 주소를 수신하는 단계를 포함한다. 제1 비교기 뱅크는 완전 연관 구성의 레지스터 뱅크의 복수의 레지스터 중 하나에 각각 접속되는 제1 복수의 비교기를 포함하고, 제2 비교기 뱅크는 완전 연관 구성의 레지스터 뱅크의 복수의 레지스터 중 하나에 각각 접속되는 제2 복수의 비교기를 포함한다.
상기 방법은 제1 복수의 비교기의 각각에 의해, 제1 매치가 존재하는지 여부를 결정하기 위해 제1 가상 주소를 그와 연관된 레지스터에 저장된 바이너리 워드와 비교하는 단계, 제1 복수의 비교기의 각각에 의해 제1 스레드가 비활성화되거나 유효하지 않다는 조건에 제1 비교기 뱅크에 입력된 이전 제1 가상 주소에 대응하는 제1 입력 상태를 유지하는 단계, 및 제1 비교기 뱅크에 의해, 제1 복수의 비교기로부터의 제1 비교 결과들을 출력하는 단계를 더 포함한다.
상기 방법은 제2 복수의 비교기의 각각에 의해, 제2 매치가 존재하는지 여부를 결정하기 위해 제2 가상 주소를 그와 연관된 레지스터에 저장된 바이너리 워드와 비교하는 단계, 제2 복수의 비교기의 각각에 의해 제2 스레드가 비활성화되거나 유효하지 않다는 조건에 제2 비교기 뱅크에 입력된 이전 제2 가상 주소에 대응하는 제2 입력 상태를 유지하는 단계, 및 제2 비교기 뱅크에 의해, 제2 복수의 비교기로부터의 제2 비교 결과들을 출력하는 단계를 더 포함한다.
도 3은 하나 이상의 실시예에 따른 CAM에 구현되는 다중 비트 논리 비교기(300)의 개략도를 도시한다. 비교기(300)는 2개의 바이너리 워드를 비교하고 그것들이 동등한지를 나타낸다. 이 예에서, 비교기(300)는 4개의 병렬 XOR 게이트(302a, 302b, 302c 및 302d) 및 OR 게이트(304)를 포함하는 4-비트 상등 비교기이다. 비교기(300)는 TLB 엔트리에 대응하는 TLB 레지스터(308)에 저장된 바이너리 워드와 비교 될 주소 레지스터(306)에 의해 제공되는 4-비트 바이너리 워드 ADDR(예를 들어, 입력 주소 또는 태그)을 수신한다.
주소 레지스터(306)는 멀티 스레드 구현에서 스레드들 중 하나(예를 들어, 스레드 0 또는 스레드 1)에 대응하는 저장 유닛(예를 들어, 탐색 데이터 레지스터 또는 로드 스토어 유닛)이다. 따라서, 멀티 스레드 구현을 위해서는 다수의 주소 레지스터(306)가 존재한다.
각각의 XOR 게이트(302a, 302b, 302c 및 302d)는 2개의 워드(ADDR 및 TLB 엔트리)의 단일 대응 비트를 비교하고 비트들이 매칭되면 0을 출력한다. 그 다음 XOR 게이트들(302a, 302b, 302c 및 302d)의 출력들은 OR 게이트(304)에서 조합되고, 이의 출력(305)은 모든 XOR 게이트(302a, 302b, 302c 및 302d)가 매칭되는 입력들 나타낼 때에만 0("적중")일 것이다. 따라서, 1로 반전되는(구현 설계에 기초하여) 출력(305)은 그 비교기에 대해 적중이 있는지 여부를 나타내는 CAM의 하나의 매치 라인이다.
다른 유형들의 로직 요소들이 다중 비트 논리 비교기를 구현하기 위해 사용될 수 있는 것으로 이해될 것이다. 예를 들어, 다중 비트 논리 비교기는 대안적으로 바이너리 워드들을 수신하는 병렬 XNOR 게이트들 및 모든 비트가 매칭되는 경우 1("적중")을 출력하는 AND 게이트를 포함한다.
요소들 중 하나(예를 들어, XOR 게이트 또는 OR 게이트)로의 입력 상태가 변할 때마다(예를 들어, 0에서 1로 또는 1에서 0으로), 요소에 의해, 그리고 궁극적으로는 비교기(300)에 의해 전력이 소비된다. 더 많은 수의 비교기, 또는 그것들의 요소들이 상태들을 변경할 때 전력 소비는 높을 수 있다. 이는 하나의 스레드로부터의 입력 주소 또는 태그의 다수의 비트가 제2 스레드로부터의 입력 주소 또는 태그의 비트들과 상이할 때(이는 사이클마다 변할 수 있음) 발생할 수 있다. 따라서, 각 스레드에 대한 전력 소비를 최소화해야 한다.
도 4는 멀티 스레드 프로세서의 각 스레드에 대한 비교기들의 중복된(예를 들어, 동일한) 세트를 갖는 TLB CAM 구조(400)의 블록도이다. TLB CAM 구조(400)는 멀티 스레드 환경에서 프로세서(예를 들어, 프로세서(202))에 의해 구현된다. 프로세서는 명령을 실행할 때 하나 이상의 실행 스레드를 사용하고 TLB CAM 구조는 L1ITLB로 구현된다. 예를 들어, 프로세서는 N개의 스레드 중 하나만 활성화된 단일 스레드 모드에서 실행될 수 있다. 다른 예로, 프로세서는 2 내지 N개의 스레드가 활성화되는 멀티 스레드 모드에서 실행될 수 있다. 활성 스레드들은 명령을 실행할 때 그것들의 각각의 자원들 뿐만 아니라 비활성 스레드들의 자원들을 사용한다.
TLB CAM 구조(400)는 레지스터들의 세트(402) 및 레지스터들의 세트(402)에 접속되는 각 스레드에 대한 비교기들의 세트(404, 406)를 포함한다. 본원에서 사용되는 레지스터들의 세트는 "레지스터들의 뱅크" 또는 "레지스터 뱅크"로 지칭되고, 비교기들의 세트는 "비교기들의 뱅크" 또는 "비교기 뱅크"로 지칭된다.
레지스터 뱅크(402)는 TLB 선형 가상 주소 저장 유닛인 RAM 또는 다른 메모리 로직이다. 레지스터 뱅크(402)는 예를 들어, 64 개의 레지스터 또는 저장 유닛을 포함하며, 이것들은 슬롯들 또는 CAM 로우들로 지칭될 수도 있다. 각 레지스터는 물리적 메모리 주소에 맵핑되는 주소 변환 데이터(즉, TLB 엔트리)를 포함한다.
TLB CAM 구조(400)는 레지스터 뱅크(402)를 공유하고, 그것과 완전 연관되는 2개의 비교기 뱅크(404 및 406)를 더 포함한다. 즉, 레지스터 뱅크(402)의 각 레지스터는 일대일로 비교기 뱅크(404)의 비교기에 대응하고, 일대일로 비교기 뱅크(406)의 비교기에 대응한다. 각각의 비교기 뱅크(404 및 406)는 스레드의 주소 레지스터로부터 가상 주소를 수신하기 위한 입력(예를 들어, 스레드 0 입력(405) 및 스레드 1 입력(407))을 포함한다.
각각의 비교기 뱅크(404 및 406)는 예를 들어, 64개의 비교기(예를 들어, 비교기(300))를 포함한다. 레지스터 뱅크(402)에 저장된 각각의 TLB 엔트리는 비교기 뱅크(404 또는 406)의 관련 비교기(어느 스레드가 활성인지에 따라)에 의해, 스레드 0 또는 스레드 1(어느 스레드가 활성인지에 따라)에 의해 입력되는 가상 주소 입력과 비교된다. 매치 라인들(408 및 409)은 대응하는 비교기 번호들 중 하나에 매치가 존재하는지 여부를 나타내고, 매치 라인들(408 및 409)은 각각 로직 유닛(411 및 412)(예를 들어, 구현에 따라 OR 또는 NOR 게이트)에 접속된다. 논리 유닛들(411 및 412)은 각각, 매치 라인들(408 및 409)로부터의 그것의 입력들 중 하나가 매칭 또는 적중을 나타내는지 여부를 나타내는 요약 적중 표시(413 및 414)를 출력한다.
도 5는 도 4의 TLB CAM 구조(400)를 구현하는 멀티 스레드 프로세서(500)의 블록도이다. 2개의 스레드가 도시되어 있지만, 멀티 스레드 프로세서(500)는 본원에 설명될 바와 같이, 각 스레드에 대해 중복되는 비교기 뱅크가 있고 비교기 뱅크가 단일 레지스터 뱅크를 공유하는 한 2개보다 많은 스레드를 구현할 수 있는 것으로 이해될 것이다. 또한, 도 3 내지 도 5에 도시된 CAM 구현 예들은 단지 예들일 뿐이고 CAM은 매우 다양한 구성 및 변형을 특징으로 할 수 있다. 예를 들어, CAM 엔트리들의 수는 CAM 로우의 수를 바꿈으로써 달라질 수 있다. 또한, 바이너리 워드들의 길이가 달라질 수 있다(예를 들어, 태그 길이는 상이한 수의 RAM 블록을 사용하거나, 상이한 주소 공간을 갖는 RAM 블록들을 사용하거나 그리고/또는 상이한 수의 병렬 게이트를 갖는 다중 비트 비교기들을 사용함으로써 달라질 수 있다).
바이너리 워드 비교를 수행하고, 매치 적중을 출력하고, 요약 적중 표시를 출력하며, 최종 출력 결과를 출력하기 위해 사용되는 논리 요소들의 유형을 포함하여, 많은 다른 변형 예들이 가능하며, 이는 도면들을 보아 쉽게 명백해질 것이다. 또한, 본원에서 설명되는 메모리 구조들, 주소 로드 및 획득 회로 및 로직, 및 입력 선택 회로 및 로직 등에 대하여 다른 변형 예들이 가능하며, 이는 또한 도면들을 보아 쉽게 명백해질 것이다.
도 5에 따르면, TLB CAM(예를 들어, L1ITLB CAM)에서의 스레드 0 및 스레드 1은 각각 그것들 자체의 비교기 뱅크들을 포함한다. 그렇게 함으로써, 이는 스레드들이 완전히 독립적인 것으로 인해 입력 주소가 사이클마다 변하는 다수의 비트를 가질 때 동시 멀티 스레드(SMT, simultaneous multithread) 동작 동안 비교기 상태들의 스래싱을 감소시킨다. 그에 따라, 각 스레드 0 및 1이 비교기 뱅크를 공유하는 대신, 스레드마다 전용 비교기 뱅크가 있고 스레드가 선택되지 않는 동안 각 비교기 뱅크에 대한 입력 주소는 그것의 이전 값을 유지한다(예를 들어, 각 스레드에 대한 획득 레지스터를 통해). 이런 식으로, 각 스레드에 대한 비교기 뱅크는 스레드가 메모리의 한 페이지에서 다른 페이지로 이동할 때 상태를 변경하기만 하면 되어, 전력을 덜 소비한다. 따라서, 동적 전력 소비가 감소된다.
스레드 0은 주소 레지스터(address register)(501), 주소 획득 회로(503)(예를 들어, 주소 획득 플립-플롭), 비교기 뱅크(404)의 입력(405)에 연결된 멀티플렉서(multiplexer)(505) 및 요약 적중 표시(413)에 연결된 AND 게이트(507)를 포함한다. 스레드 1은 주소 레지스터(502), 주소 획득 회로(504)(예를 들어, 주소 획득 플립-플롭), 비교기 뱅크(406)의 입력(407)에 연결된 멀티플렉서(506) 및 요약 적중 표시(414)에 연결된 AND 게이트(508)를 포함한다. AND 게이트들(507 및 508)의 출력들은 OR 게이트(510)의 입력들에 제공되고, OR 게이트(510)는 "적중" 또는 "부적중"을 나타내는 최종 출력(511)을 출력한다. 도 4에서 상술한 바와 같이, 비교기 뱅크들(404 및 406)은 완전 연관 방식으로 레지스터 뱅크(402)에 접속된다.
가상 주소들은 동시에 또는 상이한 시간에 주소 레지스터(501 및 502)로 로딩되고 그것들로부터 출력된다. 가상 주소들은 주소 레지스터들(501 및 502)로부터 출력되고 주소 획득 회로들(503 및 504)에 의해 획득되어 스레드(즉, 스레드 0 또는 스레드 1)가 선택되지 않을 때 각각의 비교기 뱅크(404 및 406)로의 입력이 그것의 이전 값에 유지되게 된다. 그에 따라, 각각의 비교기 뱅크(404 및 406)에 대한 입력 상태는 대응하는 활성 및 유효 입력(예를 들어, T0 활성 및 유효 입력 또는 T1 활성 및 유효한 입력)에 의해 나타내어진 바와 같이, 스레드가 활성 및/또는 유효하지 않을 때 그것의 이전 값에 유지된다.
대응하는 활성 및 유효 입력은 후술될 바와 같이, 단일 비트이지만, 이에 제한되는 것은 아니다. 대안적으로, 대응하는 활성 및 유효 입력은 두 개의 별개의 입력으로 제공되는 두 개의 개별 비트로 나타나며, 하나의 비트는 스레드의 활성 상태를 나타내고 다른 비트는 스레드의 유효 상태를 나타낸다.
따라서, T0 활성 및 유효 입력이 0일 때, 스레드 0은 비활성이고 주소 획득 회로(503)에 저장된 가상 주소가 멀티플렉서(505)에 의해 선택되고 비교기 뱅크(404)로 입력된다. 다른 한편, T0 활성 및 유효 입력이 1일 때에는, 주소 레지스터(501)에 저장된 가상 주소가 멀티플렉서(505)에 의해 선택되고 비교기 뱅크(404)로 입력된다. 그 다음은 비교기 뱅크(404)가 멀티플렉서(505)에 의해 입력된 가상 주소에 기초하여 레지스터 뱅크(402)에 의해 제공되는 각 TLB 엔트리에 대한 비교를 수행한다. 마지막으로, 요약 적중 표시(413)가 출력되고 AND 게이트(507)로 공급된다. AND 게이트(507)는 적중 결과를 출력하기 전에, T0 활성 및 유효 입력을 통해, 스레드 0이 활성 및 유효함을 보장한다. 그에 따라, 요약 적중 표시(413)에 의해 표시되는 적중이 있더라도, 스레드 0이 활성/유효하지 않으면 AND 게이트(507)의 출력은 0(즉, 부적중)이 될 것이다. 요약 적중 표시(413)에 의해 표시된 적중이 있고 스레드 0이 활성/유효할 때(T0 활성 및 유효 입력으로 표시됨)에만 AND 게이트(507)는 적중 표시를 출력할 것이다.
유사하게, T1 활성 및 유효 입력이 0일 때, 스레드 1은 비활성이고 주소 획득 회로(504)에 저장된 가상 주소가 멀티플렉서(506)에 의해 선택되고 비교기 뱅크(406)로 입력된다. 다른 한편, T1 활성 및 유효 입력이 1일 때에는, 주소 레지스터(502)에 저장된 가상 주소가 멀티플렉서(506)에 의해 선택되고 비교기 뱅크(406)로 입력된다. 그 다음은 비교기 뱅크(406)가 멀티플렉서(506)에 의해 입력된 가상 주소에 기초하여 레지스터 뱅크(402)에 의해 제공되는 각 TLB 엔트리에 대한 비교를 수행한다. 마지막으로, 요약 적중 표시(414)가 출력되고 AND 게이트(508)로 공급된다. AND 게이트(508)는 적중 결과를 출력하기 전에, T1 활성 및 유효 입력을 통해, 스레드 1이 활성 및 유효함을 보장한다. 그에 따라, 요약 적중 표시(414)에 의해 표시되는 적중이 있더라도, 스레드 1이 활성/유효하지 않으면 AND 게이트(508)의 출력은 0(즉, 부적중)이 될 것이다. 요약 적중 표시(414)에 의해 표시된 적중이 있고 스레드 1이 활성/유효할 때(T1 활성 및 유효 입력으로 표시됨)에만 AND 게이트(508)는 적중 표시를 출력할 것이다.
AND 게이트들(507 및 508) 각각은 그것들의 결과를 OR 게이트(510)에 출력하고, OR 게이트(510)는 AND 게이트(507) 또는 AND 게이트(508) 중 어느 하나에 의해 표시되는 활성/유효 적중이 존재하는지 여부에 기초하여 최종 출력(511)(즉, 적중 또는 부적중)을 출력한다. 또한, AND 게이트들(507 및 508) 및 OR 게이트(510)는 TLB CAM 구조(400)로 편입될 수 있거나 그 외부에 있을 수 있는 것으로 이해될 것이다.
도 6은 하나 이상의 실시예에 따른 멀티 스레드 CAM 방법(600)의 흐름도이다. 흐름도가 일련의 순차적인 동작을 도시하고 있지만, 명시적으로 언급하지 않는 한, 동작들 또는 그 부분들의 수행이 동시에 또는 겹치는 방식으로가 아니라 순차적인, 또는 동작들의 수행이 중간 또는 사이에 오는 동작들이 나타나지 않게만 도시된 구체적인 순서에 관한 시퀀스로부터 추론되지 않아야 한다. 상기 예에 도시된 프로세스는 예를 들어, 상술한 메모리 관리 하드웨어에 의해 구현된다.
멀티 스레드 CAM 방법(600)은 단일 레지스터 뱅크에 TLB 엔트리들을 저장하는 단계(동작 601) 및 제1 스레드 및 제2 스레드를 하나가 활성이고 다른 하나는 비활성이도록 선택적으로 활성화/비활성화하는 단계(동작 602)를 포함한다. 상기 방법(600)은 제1 스레드가 활성인지 여부를 결정하는 단계(동작 603) 및 제2 스레드가 활성인지 여부를 결정하는 단계(동작 604)를 더 포함한다. 동작들(603 및 604), 및 뒤따르는 각각의 동작들을 수행하는 타이밍은 동시에, 적어도 어느 정도 겹치게, 겹치지 않게 또는 다른 동작보다 앞서 또는 뒤에 수행하는 것을 포함하는 것으로 이해될 것이다. 제1 스레드가 비활성인 경우, 제1 레지스터 뱅크는 TLB 엔트리들을 이전 제1 가상 주소(VA)와 비교하고(동작 605), 제1 스레드가 활성이면, 제1 레지스터 뱅크는 TLB 엔트리들을 활성 제1 VA와 비교한다(동작 606). 유사하게, 제2 스레드가 비활성인 경우, 제21 레지스터 뱅크는 TLB 엔트리들을 이전 제2 가상 주소(VA)와 비교하고(동작 607), 제2 스레드가 활성이면, 제2 레지스터 뱅크는 TLB 엔트리들을 활성 제2 VA와 비교한다(동작 608). 제1 및 제2 비교기 뱅크들은 서로 독립적이고 양자 모두 단일 레지스터 뱅크와 완전 연관되어 있다. 따라서, 대응하는 스레드상에 제공된 가상 주소를 TLB 엔트리들의 단일 세트와 비교하기 위한 각 스레드 전용의 중복된 비교기 뱅크들이 있다. 또한, 각 비교기 뱅크에 대한 입력 가상 주소는 그것의 스레드가 비활성일 때 주소 획득을 통해 그것의 이전 값을 유지한다.
상기 방법(600)은 제1 비교기 뱅크의 비교 결과들에 기초하여 제1 요약 적중 표시를 생성하는 단계(동작 609) 및 제2 비교기 뱅크의 비교 결과들에 기초하여 제2 요약 적중 표시를 생성하는 단계(동작 610)를 더 포함한다. 제1 및 제2 요약 적중 표시에 기초하여 최종 출력(예를 들어, "적중" 또는 "부적중")이 생성된다(동작 611). 특히, 활성 및 유효 스레드에 대응하는 제1 또는 제2 요약 적중 표시에 기초하여 활성 및 유효 스레드에 대해 최종 출력이 생성된다. 비활성 또는 유효하지 않은 스레드의 비교 결과들(및 적중 요약 표시)은 폐기된다.
본원에는 멀티 스레드 CAM 디바이스가 개시되어 있다. 상기 멀티 스레드 CAM 디바이스는 제1 스레드에 대응하는 제1 가상 주소를 수신하도록 구성된 제1 입력, 제2 스레드에 대응하는 제2 가상 주소를 수신하도록 구성된 제2 입력, 복수의 물리적 주소 중 하나에 맵핑되는 바이너리 워드를 저장하도록 각각 구성된 복수의 레지스터를 포함하는 레지스터 뱅크, 제1 비교기 뱅크, 및 제2 비교기 뱅크를 포함한다. 상기 제1 비교기 뱅크는 상기 제1 복수의 비교기의 각각이 상기 제1 스레드가 활성화되고 유효한 동안 상기 제1 가상 주소를 수신하도록, 그리고 상기 제1 스레드가 비활성화되거나 유효하지 않은 동안 이전 제1 가상 주소를 수신하도록 구성되도록 완전 연관 구성의 상기 복수의 레지스터 중 하나에 각각 접속되는 제1 복수의 비교기를 포함한다. 상기 제2 비교기 뱅크는 상기 제2 복수의 비교기의 각각이 상기 제2 스레드가 활성화되고 유효한 동안 상기 제2 가상 주소를 수신하도록, 그리고 상기 제2 스레드가 비활성화되거나 유효하지 않은 동안 이전 제2 가상 주소를 수신하도록 구성되도록 상기 완전 연관 구성의 상기 복수의 레지스터 중 하나에 각각 접속되는 제2 복수의 비교기를 포함한다. 상기 이전 제1 가상 주소는 상기 제1 스레드가 활성화되고 유효했던 최종 시간에 상기 제1 입력에 의해 수신된 상기 제1 가상 주소이고, 상기 이전 제2 가상 주소는 상기 제2 스레드가 활성화되고 유효했던 최종 시간에 상기 제2 입력에 의해 수신된 상기 제2 가상 주소이다.
일부 예에서, 상기 제1 비교기 뱅크는 상기 제2 비교기 뱅크와 떨어져 있고 상기 제2 비교기 뱅크와 동일하다.
일부 예에서, 상기 제1 복수의 비교기의 각각은 상기 제1 스레드가 비활성화되거나 유효하지 않은 동안 상기 제1 비교기 뱅크에 입력된 상기 이전 제1 가상 주소에 대응하는 제1 입력 상태를 유지하도록 구성되고, 상기 제2 복수의 비교기의 각각은 상기 제2 스레드가 비활성화되거나 유효하지 않은 동안 상기 제2 비교기 뱅크에 입력된 상기 이전 제2 가상 주소에 대응하는 제2 입력 상태를 유지하도록 구성된다.
일부 예에서, 상기 제1 복수의 비교기의 각각은 제1 매치가 존재하는지 여부를 결정하기 위해 상기 제1 스레드의 활성 상태에 기초한, 상기 제1 가상 주소 및 상기 이전 제1 가상 주소 중 하나를 그와 연관된 레지스터에 저장된 바이너리 워드와 비교하도록 구성되고, 상기 제1 비교기 뱅크는 상기 제1 복수의 비교기의 제1 비교 결과들을 출력하도록 구성되고, 상기 제2 복수의 비교기의 각각은 제2 매치가 존재하는지 여부를 결정하기 위해 상기 제2 스레드의 활성 상태에 기초한, 상기 제2 가상 주소 및 상기 이전 제2 가상 주소 중 하나를 그와 연관된 상기 레지스터에 저장된 상기 바이너리 워드와 비교하도록 구성되고, 상기 제2 비교기 뱅크는 상기 제2 복수의 비교기의 제2 비교 결과들을 출력하도록 구성된다.
일부 예에서, 상기 멀티 스레드 CAM 디바이스는 상기 제1 비교기 뱅크의 제1 복수의 매치 라인에 접속되는 제1 논리 요소, 및 상기 제2 비교기 뱅크의 제2 복수의 매치 라인에 접속되는 제2 논리 요소를 포함한다. 상기 제1 논리 요소는 상기 제1 복수의 매치 라인상에 수신되는 상기 제1 비교 결과들에 기초하여 제1 요약 적중 표시를 출력하도록 구성되고, 상기 제2 논리 요소는 상기 제2 복수의 매치 라인상에 수신되는 상기 제2 비교 결과들에 기초하여 제2 요약 적중 표시를 출력하도록 구성된다.
일부 예에서, 상기 제1 요약 적중 표시는 상기 제1 복수의 비교기 중 적어도 하나가 상기 제1 가상 주소를 그와 연관된 상기 레지스터에 저장된 상기 바이너리 워드와 매칭시키는 조건에 상기 제1 매치가 존재함을 나타내는 것이고, 상기 제2 요약 적중 표시는 상기 제2 복수의 비교기 중 적어도 하나가 상기 제2 가상 주소를 그와 연관된 상기 레지스터에 저장된 상기 바이너리 워드와 매칭시키는 조건에 상기 제2 매치가 존재함을 나타내는 것이다.
일부 예에서, 상기 멀티 스레드 CAM 디바이스는 상기 제1 요약 적중 표시 및 상기 제2 요약 적중 표시를 수신하도록, 그리고 최종 결과를 출력하도록 구성된 논리 회로를 포함한다. 그에 따라, 상기 제1 스레드 및 상기 제2 스레드는 한 번에 하나씩 활성화되고, 상기 최종 결과는 상기 제1 스레드가 활성화된다는 조건에 상기 제1 요약 적중 표시이며, 상기 최종 결과는 상기 제2 스레드가 활성화된다는 조건에 상기 제2 요약 적중 표시이다.
일부 예에서, 상기 제1 비교기 뱅크는 상기 제1 복수의 비교기가 적어도 하나의 제1 매치가 존재하는지 여부를 결정하는 것에 기초하여 상기 제1 비교 결과들을 출력하도록 구성되고, 상기 제2 비교기 뱅크는 상기 제2 복수의 비교기가 적어도 하나의 제2 매치가 존재하는지 여부를 결정하는 것에 기초하여 상기 제2 비교 결과들을 출력하도록 구성된다.
일부 예에서, 상기 멀티 스레드 CAM은 상기 제1 복수의 비교기의 상기 제1 비교 결과들에 기초한 제1 요약 적중 표시를 수신하도록, 상기 제2 복수의 비교기의 상기 제2 비교 결과들에 기초한 제2 요약 적중 표시를 수신하도록, 그리고 최종 결과를 출력하도록 구성된 논리 회로를 포함한다. 그에 따라, 상기 제1 스레드 및 상기 제2 스레드는 한 번에 하나씩 활성화되고, 상기 최종 결과는 상기 제1 스레드가 활성화된다는 조건에 상기 제1 요약 적중 표시이며, 상기 최종 결과는 상기 제2 스레드가 활성화된다는 조건에 상기 제2 요약 적중 표시이다.
일부 예에서, 상기 이전 제1 가상 주소는 상기 제1 스레드가 활성화되고 유효했던 최종 시간에 제1 주소 레지스터에 의해 제공된 상기 제1 가상 주소이고, 상기 이전 제2 가상 주소는 상기 제2 스레드가 활성화되고 유효했던 최종 시간에 제2 주소 레지스터에 의해 제공된 상기 제2 가상 주소이다.
일부 예에서, 상기 제1 복수의 비교기의 각각은 상기 제1 스레드가 활성화되고 유효하다는 조건에 제1 주소 레지스터로부터 상기 제1 가상 주소를 수신하고, 상기 제2 복수의 비교기의 각각은 상기 제2 스레드가 활성화되고 유효하다는 조건에 제2 주소 레지스터로부터 상기 제2 가상 주소를 수신한다.
일부 예에서, 상기 멀티 스레드 CAM 디바이스는 상기 제1 스레드가 활성화되고 유효하다는 조건에 상기 제1 가상 주소를 상기 제1 비교기 뱅크로 전송하도록 구성된 제1 주소 레지스터,및 상기 제2 스레드가 활성화되고 유효하다는 조건에 상기 제2 가상 주소를 상기 제2 비교기 뱅크로 전송하도록 구성된 제2 주소 레지스터를 포함한다.
일부 예에서, 상기 멀티 스레드 CAM 디바이스는 제1 주소 레지스터 및 제2 주소 레지스터를 포함한다. 상기 제1 주소 레지스터는 상기 제1 가상 주소를 저장하도록 구성되고, 상기 제1 비교기 뱅크는 상기 제1 스레드가 활성화되고 유효하다는 조건에 제1 주소 레지스터로부터 상기 제1 가상 주소를 수신하도록 구성된다. 상기 제2 주소 레지스터는 상기 제2 가상 주소를 저장하도록 구성되고, 상기 제2 비교기 뱅크는 상기 제2 스레드가 활성화되고 유효하다는 조건에 제2 주소 레지스터로부터 상기 제2 가상 주소를 수신하도록 구성된다.
일부 예에서, 상기 멀티 스레드 CAM 디바이스는 제1 주소 획득 회로 및 제2 주소 획득 회로를 포함한다. 상기 제1 주소 획득 회로는 상기 제1 가상 주소를 상기 이전 제1 가상 주소로 저장하도록 구성되고, 상기 제1 비교기 뱅크는 상기 제1 스레드가 비활성화되거나 유효하지 않다는 조건에 상기 제1 주소 획득 회로로부터 상기 이전 제1 가상 주소를 수신하도록 구성된다. 제2 주소 획득 회로는 상기 제2 가상 주소를 상기 이전 제2 가상 주소로 저장하도록 구성되고, 상기 제2 비교기 뱅크는 상기 제2 스레드가 비활성화되거나 유효하지 않다는 조건에 상기 제2 주소 획득 회로로부터 상기 이전 제2 가상 주소를 수신하도록 구성된다.
일부 예에서, 상기 이전 제1 가상 주소는 상기 제1 스레드가 활성화되고 유효했던 최종 시간에 제1 주소 레지스터에 의해 상기 제1 주소 획득 회로에 제공된 상기 제1 가상 주소이고, 상기 이전 제2 가상 주소는 상기 제2 스레드가 활성화되고 유효했던 최종 시간에 제2 주소 레지스터에 의해 상기 제2 주소 획득 회로에 제공된 상기 제2 가상 주소이다.
일부 예에서, 상기 멀티 스레드 CAM 디바이스는 명령어 변환 색인 버퍼 CAM이다.
멀티 스레드 CAM 방법이 제공된다. 제1 스레드에 대응하는 제1 가상 주소가 제1 비교기 뱅크에 의해 수신된다. 상기 제1 비교기 뱅크는 완전 연관 구성의 레지스터 뱅크의 복수의 레지스터 중 하나에 각각 접속되는 제1 복수의 비교기를 포함하고, 상기 제1 가상 주소는 상기 제1 스레드가 활성화되고 유효한 동안 수신된다. 제2 스레드에 대응하는 제2 가상 주소가 제2 비교기 뱅크에 의해 수신된다. 상기 제2 비교기 뱅크는 완전 연관 구성의 상기 레지스터 뱅크의 상기 복수의 레지스터 중 하나에 각각 접속되는 제2 복수의 비교기를 포함하고, 상기 제2 가상 주소는 상기 제2 스레드가 활성화되고 유효한 동안 수신된다. 상기 제1 스레드에 대응하는 이전 제1 가상 주소는 상기 제1 스레드가 비활성화되거나 유효하지 않은 동안 상기 제1 비교기 뱅크에 의해 수신된다. 상기 제2 스레드에 대응하는 이전 제2 가상 주소는 상기 제2 스레드가 비활성화되거나 유효하지 않은 동안 상기 제2 비교기 뱅크에 의해 수신된다. 상기 이전 제1 가상 주소는 상기 제1 스레드가 활성화되고 유효했던 최종 시간에 수신된 상기 제1 가상 주소이고, 상기 이전 제2 가상 주소는 상기 제2 스레드가 활성화되고 유효했던 최종 시간에 수신된 상기 제2 가상 주소이다.
일부 예에서, 상기 제1 비교기 뱅크에 입력된 상기 이전 제1 가상 주소에 대응하는 제1 입력 상태는 상기 제1 복수의 비교기의 각각에 의해 상기 제1 스레드가 비활성화되거나 유효하지 않다는 조건에 유지된다. 또한, 상기 제2 비교기 뱅크에 입력된 상기 이전 제2 가상 주소에 대응하는 제2 입력 상태는 상기 제2 복수의 비교기의 각각에 의해 상기 제2 스레드가 비활성화되거나 유효하지 않다는 조건에 유지된다.
일부 예에서, 제1 매치가 존재하는지 여부를 결정하기 위해 상기 제1 스레드의 활성 상태에 기초한, 상기 제1 가상 주소 및 상기 이전 제1 가상 주소 중 하나가 상기 제1 복수의 비교기의 각각에 의해 그와 연관된 레지스터에 저장된 바이너리 워드와 비교된다. 상기 제1 복수의 비교기로부터의 제1 비교 결과들은 상기 제1 비교기 뱅크에 의해 출력된다. 제2 매치가 존재하는지 여부를 결정하기 위해 상기 제2 스레드의 활성 상태에 기초한, 상기 제2 가상 주소 및 상기 이전 제2 가상 주소 중 하나가 상기 제2 복수의 비교기의 각각에 의해 그와 연관된 레지스터에 저장된 바이너리 워드와 비교된다. 상기 제2 복수의 비교기로부터의 제2 비교 결과들은 상기 제2 비교기 뱅크에 의해 출력된다.
일부 예에서, 상기 제1 비교 결과들에 기초하여 제1 논리 요소에 의해 제1 요약 적중 표시가 생성된다. 상기 제1 요약 적중 표시는 상기 제1 복수의 비교기 중 적어도 하나가 상기 제1 가상 주소를 그와 연관된 상기 레지스터에 저장된 상기 바이너리 워드와 매칭시키는 조건에 상기 제1 매치가 존재함을 나타내는 것이다. 상기 제2 비교 결과들에 기초하여 제2 논리 요소에 의해 제2 요약 적중 표시가 생성된다. 상기 제2 요약 적중 표시는 상기 제2 복수의 비교기 중 적어도 하나가 상기 제2 가상 주소를 그와 연관된 상기 레지스터에 저장된 상기 바이너리 워드와 매칭시킨다는 조건에 상기 제2 매치가 존재함을 나타내는 것이다.
일부 예에서, 상기 제1 요약 적중 표시 및 상기 제2 요약 적중 표시는 논리 회로에 의해 수신되고, 상기 논리 회로에 의해 상기 제1 스레드 및 상기 제2 스레드가 한 번에 하나씩 활성화되도록 상기 제1 요약 적중 표시 및 상기 제2 요약 적중 표시에 기초하여 최종 결과가 생성되고, 상기 최종 결과는 상기 제1 스레드가 활성화된다는 조건에 상기 제1 요약 적중 표시이며, 상기 최종 결과는 상기 제2 스레드가 활성화된다는 조건에 상기 제2 요약 적중 표시이다.
일부 예에서, 상기 제1 가상 주소는 상기 제1 비교기 뱅크에 의해 상기 제1 스레드가 활성화되고 유효하다는 조건에 제1 주소 레지스터로부터 수신된다. 상기 제2 가상 주소는 상기 제2 비교기 뱅크에 의해 상기 제2 스레드가 활성화되고 유효하다는 조건에 제2 주소 레지스터로부터 수신된다.
일부 예에서, 상기 제1 스레드 및 상기 제2 스레드 중 첫 번째 스레드가 프로세서에 의해 선택적으로 활성화되고, 상기 제1 스레드 및 상기 제2 스레드 중 두 번째 스레드는 프로세서에 의해 선택적으로 비활성화된다. 상기 이전 제1 가상 주소는 상기 이전 제1 가상 주소가 상기 제1 스레드가 활성화되고 유효했던 최종 시간에 수신된 상기 제1 가상 주소이도록 상기 제1 비교기 뱅크에 의해 상기 제1 스레드가 비활성화되거나 유효하지 않다는 조건에 제1 주소 획득 회로로부터 수신된다. 상기 이전 제2 가상 주소는 상기 이전 제2 가상 주소가 상기 제2 스레드가 활성화되고 유효했던 최종 시간에 수신된 상기 제2 가상 주소이도록 상기 제2 비교기 뱅크에 의해 상기 제2 스레드가 비활성화되거나 유효하지 않다는 조건에 제2 주소 획득 회로로부터 수신된다.
일부 예에서, 상기 제1 가상 주소는 상기 제1 비교기 뱅크에 의해 상기 제1 스레드가 활성화되고 유효하다는 조건에 제1 주소 레지스터로부터 수신되고, 상기 제2 가상 주소는 상기 제2 비교기 뱅크에 의해 상기 제2 스레드가 활성화되고 유효하다는 조건에 제2 주소 레지스터로부터 수신된다.
본원의 개시 내용에 기초하여 많은 변형이 가능하다는 것을 이해해야 한다. 특징들 및 요소들이 특정 조합들로 상술되었지만, 각 특징 또는 요소는 다른 특징들 및 요소들 없이 단독으로 또는 다른 특징들 및 요소들과 함께 또는 없이 다양한 조합으로 사용될 수 있다.
일부 측면이 장치의 맥락에서 설명되었지만, 이러한 측면들이 대응하는 방법에 대한 설명도 나타내며, 이때 블록 또는 디바이스가 방법 단계 또는 방법 단계의 특징에 대응한다는 것이 명백하다. 유사하게, 방법 단계의 맥락에서 설명된 측면들은 대응하는 블록 또는 대응하는 장치의 항목 또는 특징에 대한 설명도 나타낸다. 방법 단계들의 일부 또는 전부는 예를 들어, 마이크로 프로세서, 프로그램 가능한 컴퓨터 또는 전자 회로와 같은 하드웨어 장치에 의해(하드웨어 장치를 사용하여) 실행될 수 있다. 일부 실시예에서, 방법 단계들 중 몇몇 하나 이상의 단계가 그러한 장치에 의해 실행될 수 있다.
상술한 요소들 또는 구조들(어셈블리들, 디바이스들, 회로들, 시스템들 등)에 의해 수행되는 다양한 기능과 관련하여, 그러한 요소들을 설명하는 데 사용된 용어들("수단" 언급 포함)은 다르게 표시되지 않는 한, 본원에 예시된 본 발명의 대표적인 구현 예들에서 기능을 수행하는 개시된 구조와 구조적으로 동일하지 않더라도, 설명된 요소의 특정 기능을 수행하는(즉, 기능적으로 동등한) 임의의 요소 또는 구조에 대응하는 것으로 의도된다.
제공된 방법들은 범용 컴퓨터, 프로세서 또는 프로세서 코어에서 구현될 수 있다. 적합한 프로세서들은 예로서, 범용 프로세서, 전용 프로세서, 종래 프로세서, 디지털 신호 프로세서(DSP), 복수의 마이크로 프로세서, DSP 코어와 관련된 하나 이상의 마이크로 프로세서, 제어기, 마이크로 제어기, 주문형 반도체들(ASIC들), 필드 프로그램 가능 게이트 어레이들(FPGA들) 회로들, 임의의 다른 유형의 집적 회로(IC) 및/또는 상태 기계를 포함한다. 그러한 프로세서들은 처리된 하드웨어 설명 언어(HDL) 명령어들 및 넷리스트들(컴퓨터 판독 가능 매체에 저장될 수 있는 상기 명령어들)을 포함하는 다른 중간 데이터의 결과들을 사용하여 제조 프로세스를 구성함으로써 제조될 수 있다. 그러한 처리의 결과들은 그 다음 실시예들의 측면들을 구현하는 프로세서를 제조하기 위해 반도체 제조 공정에서 사용되는 마스크 작업들일 수 있다.
본원에 제공된 방법들 또는 흐름도들은 범용 컴퓨터 또는 프로세서에 의한 실행을 위해 비-일시적 컴퓨터 판독 가능한 저장 매체에 편입되는 컴퓨터 프로그램, 소프트웨어 또는 펌웨어로 구현될 수 있다. 비-일시적 컴퓨터 판독가능한 저장 매체들의 예들로는 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 레지스터, 캐시 메모리, 반도체 메모리 디바이스들, 내부 하드 디스크들 및 이동식 디스크들과 같은 자기 매체들, 자기-광학 매체들 및 CD-ROM 디스크들 및 DVD들(digital versatile disks)과 같은 광학 매체들을 포함한다.

Claims (20)

  1. 멀티 스레드 내용 주소화 메모리(CAM, content-addressable memory) 디바이스로서,
    제1 스레드에 대응하는 제1 가상 주소를 수신하도록 구성된 제1 입력;
    제2 스레드에 대응하는 제2 가상 주소를 수신하도록 구성된 제2 입력;
    복수의 물리적 주소 중 하나에 맵핑되는 바이너리 워드를 저장하도록 각각 구성된 복수의 레지스터를 포함하는 레지스터 뱅크;
    완전 연관 구성의 상기 복수의 레지스터 중 하나에 각각 접속되는 제1 복수의 비교기를 포함하는 제1 비교기 뱅크로서, 상기 제1 복수의 비교기의 각각은 제1 매치가 존재하는지 여부를 결정하기 위해 상기 제1 가상 주소를 대응 레지스터에 저장된 바이너리 워드와 비교하도록 구성되는, 상기 제1 비교기 뱅크; 및
    완전 연관 구성의 상기 복수의 레지스터 중 하나에 각각 접속되는 제2 복수의 비교기를 포함하는 제2 비교기 뱅크로서, 상기 제2 복수의 비교기의 각각은 제2 매치가 존재하는지 여부를 결정하기 위해 상기 제2 가상 주소를 대응 레지스터에 저장된 바이너리 워드와 비교하도록 구성되는, 상기 제2 비교기 뱅크를 포함하는, 멀티 스레드 CAM 디바이스.
  2. 청구항 1에 있어서,
    상기 제1 비교기 뱅크에 상기 제1 매치가 존재하는지 여부를 나타내는 제1 요약 적중 표시를 수신하도록, 상기 제2 비교기 뱅크에 상기 제2 매치가 존재하는지 여부를 나타내는 제2 요약 적중 표시를 수신하도록, 그리고 최종 결과를 출력하도록 구성된 논리 회로를 더 포함하되,
    상기 제1 스레드 및 상기 제2 스레드는 한 번에 하나씩 활성화되고, 상기 최종 결과는 상기 제1 스레드가 활성화된다는 조건에 상기 제1 요약 적중 표시이며, 상기 최종 결과는 상기 제2 스레드가 활성화된다는 조건에 상기 제2 요약 적중 표시인, 멀티 스레드 CAM 디바이스.
  3. 청구항 1에 있어서,
    상기 제1 복수의 비교기의 각각은 상기 제1 스레드가 활성화되고 유효한 동안 상기 제1 가상 주소를 수신하도록, 그리고 상기 제1 스레드가 비활성화되거나 유효하지 않은 동안 이전 제1 가상 주소를 수신하도록 구성되고, 상기 이전 제1 가상 주소는 상기 제1 스레드가 활성화되고 유효했던 최종 시간에 상기 제1 입력에 의해 수신된 제1 가상 주소이고,
    상기 제2 복수의 비교기의 각각은 상기 제2 스레드가 활성화되고 유효한 동안 상기 제2 가상 주소를 수신하도록, 그리고 상기 제2 스레드가 비활성화되거나 유효하지 않은 동안 이전 제2 가상 주소를 수신하도록 구성되고, 상기 이전 제2 가상 주소는 상기 제2 스레드가 활성화되고 유효했던 최종 시간에 상기 제2 입력에 의해 수신된 제2 가상 주소인, 멀티 스레드 CAM 디바이스.
  4. 청구항 1에 있어서,
    상기 제1 가상 주소를 저장하도록 구성된 제1 주소 레지스터를 더 포함하고, 상기 제1 비교기 뱅크는 상기 제1 스레드가 활성화되고 유효하다는 조건에 상기 제1 주소 레지스터로부터 상기 제1 가상 주소를 수신하도록 구성되고;
    상기 제2 가상 주소를 저장하도록 구성된 제2 주소 레지스터를 더 포함하고, 상기 제2 비교기 뱅크는 상기 제2 스레드가 활성화되고 유효하다는 조건에 상기 제2 주소 레지스터로부터 상기 제2 가상 주소를 수신하도록 구성되는, 멀티 스레드 CAM 디바이스.
  5. 청구항 1에 있어서,
    상기 제1 가상 주소를 저장하도록 구성된 제1 주소 획득 회로를 더 포함하고, 상기 제1 비교기 뱅크는 상기 제1 스레드가 비활성화되거나 유효하지 않다는 조건에 상기 제1 주소 획득 회로로부터 상기 제1 가상 주소를 수신하도록 구성되고;
    상기 제2 가상 주소를 저장하도록 구성된 제2 주소 획득 회로를 더 포함하고, 상기 제2 비교기 뱅크는 상기 제2 스레드가 비활성화되고 유효하지 않다는 조건에 상기 제2 주소 획득 회로로부터 상기 제2 가상 주소를 수신하도록 구성되는, 멀티 스레드 CAM 디바이스.
  6. 청구항 5에 있어서,
    상기 제1 가상 주소는 상기 제1 스레드가 활성화되고 유효했던 최종 시간에 상기 제1 주소 획득 회로로 제공되는 가상 주소이고,
    상기 제2 가상 주소는 상기 제2 스레드가 활성화되고 유효했던 최종 시간에 상기 제2 주소 획득 회로로 제공되는 가상 주소인, 멀티 스레드 CAM 디바이스.
  7. 청구항 1에 있어서,
    상기 제1 비교기 뱅크의 복수의 매치 라인에 접속되는 제1 논리 요소로서, 상기 제1 복수의 비교기의 비교 결과들에 기초하여 제1 요약 적중 표시를 출력하도록 구성되는, 상기 제1 논리 요소; 및
    상기 제2 비교기 뱅크의 복수의 매치 라인에 접속되는 제2 논리 요소로서, 상기 제2 복수의 비교기의 비교 결과들에 기초하여 제2 요약 적중 표시를 출력하도록 구성되는, 상기 제2 논리 요소를 더 포함하는, 멀티 스레드 CAM 디바이스.
  8. 청구항 7에 있어서,
    상기 제1 요약 적중 표시는 상기 제1 복수의 비교기 중 적어도 하나가 상기 제1 가상 주소를 그와 연관된 관련 레지스터에 저장된 상기 바이너리 워드와 매칭시키는 조건에 상기 제1 매치를 나타내고,
    상기 제2 요약 적중 표시는 상기 제2 복수의 비교기 중 적어도 하나가 상기 제2 가상 주소를 그와 연관된 상기 관련 레지스터에 저장된 상기 바이너리 워드와 매칭시키는 조건에 상기 제2 매치를 나타내는, 멀티 스레드 CAM 디바이스.
  9. 청구항 1에 있어서,
    상기 제1 복수의 비교기의 각각은 상기 제1 스레드가 비활성화되거나 유효하지 않다는 조건에 상기 제1 비교기 뱅크에 제공되는 이전 제1 가상 주소에 대응하는 입력 상태를 유지하도록 구성되고, 상기 이전 제1 가상 주소는 상기 제1 스레드가 활성화되고 유효했던 최종 시간에 상기 제1 입력에 의해 수신된 제1 가상 주소이고,
    상기 제2 복수의 비교기의 각각은 상기 제2 스레드가 비활성화되거나 유효하지 않다는 조건에 상기 제2 비교기 뱅크에 제공되는 이전 제2 가상 주소에 대응하는 입력 상태를 유지하고, 상기 이전 제2 가상 주소는 상기 제2 스레드가 활성화되고 유효했던 최종 시간에 상기 제2 입력에 의해 수신된 제2 가상 주소인, 멀티 스레드 CAM 디바이스.
  10. 청구항 9에 있어서,
    상기 제1 복수의 비교기의 각각은 상기 제1 스레드가 활성화되고 유효하다는 조건에 상기 제1 가상 주소를 수신하도록 구성되고,
    상기 제2 복수의 비교기의 각각은 상기 제2 스레드가 활성화되고 유효하다는 조건에 상기 제2 가상 주소를 수신하도록 구성되는, 멀티 스레드 CAM 디바이스.
  11. 청구항 1에 있어서, 상기 제1 비교기 뱅크는 상기 제2 비교기 뱅크와 떨어져 있고 상기 제2 비교기 뱅크와 동일한, 멀티 스레드 CAM 디바이스.
  12. 청구항 1에 있어서, 명령어 변환 색인 버퍼 CAM인, 멀티 스레드 CAM 디바이스.
  13. 멀티 스레드 내용 주소화 메모리(CAM) 방법으로서,
    제1 비교기 뱅크에 의해, 제1 스레드에 대응하는 제1 가상 주소를 수신하는 단계로서, 상기 제1 비교기 뱅크는 완전 연관 구성의 복수의 레지스터 중 하나에 각각 접속되는 제1 복수의 비교기를 포함하는, 상기 제1 가상 주소를 수신하는 단계;
    제2 비교기 뱅크에 의해, 제2 스레드에 대응하는 제2 가상 주소를 수신하는 단계로서, 상기 제2 비교기 뱅크는 완전 연관 구성의 상기 복수의 레지스터 중 하나에 각각 접속되는 제2 복수의 비교기를 포함하는, 상기 제2 가상 주소를 수신하는 단계;
    상기 제1 복수의 비교기의 각각에 의해, 제1 매치가 존재하는지 여부를 결정하기 위해 상기 제1 가상 주소를 대응 레지스터에 저장된 바이너리 워드와 비교하는 단계; 및
    상기 제2 복수의 비교기의 각각에 의해, 제2 매치가 존재하는지 여부를 결정하기 위해 상기 제2 가상 주소를 대응 레지스터에 저장된 바이너리 워드와 비교하는 단계를 포함하는, 멀티 스레드 CAM 방법.
  14. 청구항 13에 있어서,
    상기 제1 비교기 뱅크에 상기 제1 매치가 존재하는지 여부 또는 상기 제2 비교기 뱅크에 상기 제2 매치가 존재하는지 여부에 기초하여 최종 결과를 생성하는 단계로서, 상기 제1 스레드 및 상기 제2 스레드는 한 번에 하나씩 활성화되고, 상기 최종 결과는 상기 제1 스레드가 활성화된다는 조건에 상기 제1 매치가 존재하는지 여부에 대응하고, 상기 최종 결과는 상기 제2 스레드가 활성화된다는 조건에 상기 제2 매치가 존재하는지 여부에 대응하는, 상기 최종 결과를 생성하는 단계; 및
    상기 최종 결과를 출력하는 단계를 더 포함하는, 멀티 스레드 CAM 방법.
  15. 청구항 13에 있어서,
    상기 제1 비교기 뱅크에 의해, 상기 제1 스레드가 활성화되고 유효한 동안 상기 제1 가상 주소를, 그리고 상기 제1 스레드가 비활성화되거나 유효하지 않은 동안 이전 제1 가상 주소를 수신하는 단계를 더 포함하되, 상기 이전 제1 가상 주소는 상기 제1 스레드가 활성화되고 유효했던 최종 시간에 상기 멀티 스레드 CAM의 제1 입력에 의해 수신된 제1 가상 주소이고,
    상기 제2 비교기 뱅크에 의해, 상기 제2 스레드가 활성화되고 유효한 동안 상기 제2 가상 주소를, 그리고 상기 제2 스레드가 비활성화되거나 유효하지 않은 동안 이전 제2 가상 주소를 수신하는 단계를 더 포함하되, 상기 이전 제2 가상 주소는 상기 제2 스레드가 활성화되고 유효했던 최종 시간에 상기 멀티 스레드 CAM의 제2 입력에 의해 수신된 제2 가상 주소인, 멀티 스레드 CAM 방법.
  16. 청구항 15에 있어서,
    상기 제1 가상 주소는 상기 제1 스레드가 활성화되고 유효하다는 조건에 제1 주소 레지스터로부터 수신되고;
    상기 제2 가상 주소는 상기 제2 스레드가 활성화되고 유효하다는 조건에 제2 주소 레지스터로부터 수신되는, 멀티 스레드 CAM 방법.
  17. 청구항 16에 있어서,
    상기 이전 제1 가상 주소는 상기 제1 스레드가 비활성화되거나 유효하지 않다는 조건에 제1 주소 획득 회로로부터 수신되고;
    상기 이전 제2 가상 주소는 상기 제2 스레드가 비활성화되거나 유효하지 않다는 조건에 제2 주소 획득 회로로부터 수신되는, 멀티 스레드 CAM 방법.
  18. 청구항 13에 있어서,
    제1 논리 요소에 의해, 상기 제1 복수의 비교기의 비교 결과들에 기초하여 제1 요약 적중 표시를 생성하는 단계로서, 상기 제1 요약 적중 표시는 상기 제1 복수의 비교기 중 적어도 하나가 상기 제1 가상 주소를 그와 연관된 상기 레지스터에 저장된 상기 바이너리 워드와 매칭시킨다는 조건에 상기 제1 매치를 나타내는 것인, 상기 제1 요약 적중 표시를 생성하는 단계; 및
    제2 논리 요소에 의해, 상기 제2 복수의 비교기의 비교 결과들에 기초하여 제2 요약 적중 표시를 생성하는 단계로서, 상기 제2 요약 적중 표시는 상기 제2 복수의 비교기 중 적어도 하나가 상기 제2 가상 주소를 그와 연관된 상기 레지스터에 저장된 상기 바이너리 워드와 매칭시킨다는 조건에 상기 제2 매치를 나타내는 것인, 상기 제2 요약 적중 표시를 생성하는 단계를 더 포함하는, 멀티 스레드 CAM 방법.
  19. 청구항 13에 있어서,
    상기 제1 복수의 비교기의 각각에 의해, 상기 제1 스레드가 비활성화되거나 유효하지 않다는 조건에 상기 제1 비교기 뱅크에 제공되는 이전 제1 가상 주소에 대응하는 입력 상태를 유지하는 단계로서, 상기 이전 제1 가상 주소는 상기 제1 스레드가 활성화되고 유효했던 최종 시간에 상기 제1 비교기 뱅크에 의해 수신된 제1 가상 주소인, 상기 이전 제1 가상 주소에 대응하는 입력 상태를 유지하는 단계; 및
    상기 제2 복수의 비교기의 각각에 의해, 상기 제2 스레드가 비활성화되거나 유효하지 않다는 조건에 상기 제2 비교기 뱅크에 제공되는 이전 제2 가상 주소에 대응하는 입력 상태를 유지하는 단계로서, 상기 이전 제2 가상 주소는 상기 제2 스레드가 활성화되고 유효했던 최종 시간에 상기 제2 비교기 뱅크에 의해 수신된 제2 가상 주소인, 상기 이전 제2 가상 주소에 대응하는 입력 상태를 유지하는 단계를 더 포함하는, 멀티 스레드 CAM 방법.
  20. 청구항 19에 있어서,
    상기 제1 복수의 비교기의 각각에 의해, 상기 제1 스레드가 활성화되고 유효하다는 조건에 상기 제1 가상 주소를 수신하는 단계; 및
    상기 제2 복수의 비교기의 각각에 의해, 상기 제2 스레드가 활성화되고 유효하다는 조건에 상기 제2 가상 주소를 수신하는 단계를 더 포함하는, 멀티 스레드 CAM 방법.
KR1020197006518A 2016-08-17 2016-09-21 멀티 스레드 모드에서 전력 감소를 위한 방법 및 장치 KR102661483B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/238,920 US9864700B1 (en) 2016-08-17 2016-08-17 Method and apparatus for power reduction in a multi-threaded mode
US15/238,920 2016-08-17
PCT/US2016/052892 WO2018034679A1 (en) 2016-08-17 2016-09-21 Method and apparatus for power reduction in a multi-threaded mode

Publications (2)

Publication Number Publication Date
KR20190032585A KR20190032585A (ko) 2019-03-27
KR102661483B1 true KR102661483B1 (ko) 2024-04-26

Family

ID=60812795

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197006518A KR102661483B1 (ko) 2016-08-17 2016-09-21 멀티 스레드 모드에서 전력 감소를 위한 방법 및 장치

Country Status (6)

Country Link
US (2) US9864700B1 (ko)
EP (1) EP3500934A4 (ko)
JP (1) JP6767569B2 (ko)
KR (1) KR102661483B1 (ko)
CN (2) CN112114934A (ko)
WO (1) WO2018034679A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105635067B (zh) * 2014-11-04 2019-11-15 华为技术有限公司 报文发送方法及装置
US11126537B2 (en) * 2019-05-02 2021-09-21 Microsoft Technology Licensing, Llc Coprocessor-based logging for time travel debugging

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130111183A1 (en) 2011-11-02 2013-05-02 Fujitsu Limited Address translation apparatus, address translation method, and calculation apparatus

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6430667B1 (en) * 2000-04-13 2002-08-06 International Business Machines Corporation Single-level store computer incorporating process-local address translation data structures
US6604187B1 (en) * 2000-06-19 2003-08-05 Advanced Micro Devices, Inc. Providing global translations with address space numbers
US7873785B2 (en) * 2003-08-19 2011-01-18 Oracle America, Inc. Multi-core multi-thread processor
US7181590B2 (en) * 2003-08-28 2007-02-20 Intel Corporation Method for page sharing in a processor with multiple threads and pre-validated caches
US20050216655A1 (en) 2004-03-25 2005-09-29 Rosenbluth Mark B Content addressable memory constructed from random access memory
US7281083B2 (en) 2004-06-30 2007-10-09 Intel Corporation Network processor with content addressable memory (CAM) mask
US7418543B2 (en) 2004-12-21 2008-08-26 Intel Corporation Processor having content addressable memory with command ordering
US7467256B2 (en) 2004-12-28 2008-12-16 Intel Corporation Processor having content addressable memory for block-based queue structures
US20070083735A1 (en) 2005-08-29 2007-04-12 Glew Andrew F Hierarchical processor
KR101355496B1 (ko) * 2005-08-29 2014-01-28 디 인벤션 사이언스 펀드 원, 엘엘씨 복수의 병렬 클러스터들을 포함하는 계층 프로세서의스케쥴링 메카니즘
US8766996B2 (en) 2006-06-21 2014-07-01 Qualcomm Incorporated Unified virtual addressed register file
US8245016B2 (en) 2007-09-28 2012-08-14 International Business Machines Corporation Multi-threaded processing
US8250345B2 (en) 2007-09-28 2012-08-21 International Business Machines Corporation Structure for multi-threaded processing
US8169808B2 (en) 2008-01-25 2012-05-01 Micron Technology, Inc. NAND flash content addressable memory
CN102200930B (zh) * 2011-05-26 2013-04-17 北京华为数字技术有限公司 同步变量映射方法及装置、同步变量释放方法及同步变量删除方法
US8930674B2 (en) 2012-03-07 2015-01-06 Soft Machines, Inc. Systems and methods for accessing a unified translation lookaside buffer
US9256550B2 (en) 2012-03-28 2016-02-09 International Business Machines Corporation Hybrid address translation
US9092359B2 (en) 2012-06-14 2015-07-28 International Business Machines Corporation Identification and consolidation of page table entries
US10310973B2 (en) * 2012-10-25 2019-06-04 Nvidia Corporation Efficient memory virtualization in multi-threaded processing units
US10216642B2 (en) 2013-03-15 2019-02-26 International Business Machines Corporation Hardware-based pre-page walk virtual address transformation where the virtual address is shifted by current page size and a minimum page size
CN104516710A (zh) * 2013-09-26 2015-04-15 快捷半导体(苏州)有限公司 一种异步缓存方法、异步缓存器及集成电路

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130111183A1 (en) 2011-11-02 2013-05-02 Fujitsu Limited Address translation apparatus, address translation method, and calculation apparatus

Also Published As

Publication number Publication date
CN109564543B (zh) 2020-09-15
WO2018034679A1 (en) 2018-02-22
CN112114934A (zh) 2020-12-22
JP2019525376A (ja) 2019-09-05
US9864700B1 (en) 2018-01-09
JP6767569B2 (ja) 2020-10-14
CN109564543A (zh) 2019-04-02
US20180113814A1 (en) 2018-04-26
KR20190032585A (ko) 2019-03-27
EP3500934A1 (en) 2019-06-26
EP3500934A4 (en) 2020-04-15
US10146698B2 (en) 2018-12-04

Similar Documents

Publication Publication Date Title
US8156309B2 (en) Translation look-aside buffer with variable page sizes
CN108496160B (zh) 用于增强系统性能的自适应值范围剖析
TWI531912B (zh) 具有用於多上下文計算引擎的轉譯後備緩衝之處理器、用於致能多執行緒以存取於處理器中之資源之系統和方法
US8984254B2 (en) Techniques for utilizing translation lookaside buffer entry numbers to improve processor performance
US6427188B1 (en) Method and system for early tag accesses for lower-level caches in parallel with first-level cache
KR102244191B1 (ko) 캐시 및 변환 색인 버퍼를 갖는 데이터 처리장치
JP4065660B2 (ja) 機能が並列に分散された変換索引バッファ
US10019379B2 (en) Translation lookaside buffer switch bank
US9552301B2 (en) Method and apparatus related to cache memory
US10831675B2 (en) Adaptive tablewalk translation storage buffer predictor
US20160140042A1 (en) Instruction cache translation management
JP7449694B2 (ja) 変換索引バッファにおける構成可能なスキューアソシエイティビティ
US11422946B2 (en) Translation lookaside buffer striping for efficient invalidation operations
US10146698B2 (en) Method and apparatus for power reduction in a multi-threaded mode
KR102355374B1 (ko) 이종 메모리를 이용하여 메모리 주소 변환 테이블을 관리하는 메모리 관리 유닛 및 이의 메모리 주소 관리 방법
JP2018514861A (ja) バースト変換ルックアサイドバッファ
US20140006747A1 (en) Systems and methods for processing instructions when utilizing an extended translation look-aside buffer having a hybrid memory structure
IL303710A (en) A technique for tracking after changing the content of memory areas
Lee et al. A hardware evaluation of memory address translation for mobile virtualization

Legal Events

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