KR20050046819A - 멀티스레디드 프로세서에서 스레드-방식 메모리 액세스를위한 방법 및 장치 - Google Patents

멀티스레디드 프로세서에서 스레드-방식 메모리 액세스를위한 방법 및 장치 Download PDF

Info

Publication number
KR20050046819A
KR20050046819A KR1020057005888A KR20057005888A KR20050046819A KR 20050046819 A KR20050046819 A KR 20050046819A KR 1020057005888 A KR1020057005888 A KR 1020057005888A KR 20057005888 A KR20057005888 A KR 20057005888A KR 20050046819 A KR20050046819 A KR 20050046819A
Authority
KR
South Korea
Prior art keywords
memory
thread
processor
multithreaded processor
multithreaded
Prior art date
Application number
KR1020057005888A
Other languages
English (en)
Other versions
KR100980536B1 (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 KR20050046819A publication Critical patent/KR20050046819A/ko
Application granted granted Critical
Publication of KR100980536B1 publication Critical patent/KR100980536B1/ko

Links

Classifications

    • 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, 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
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/342Extension of operand address space
    • 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, look ahead
    • G06F9/3824Operand accessing
    • 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 부분은 상기 메모리 내의 다수의 다중-뱅크 메모리 소자들 중 하나를 선택하는데 이용되고, 상기 스레드 식별기의 제 2 부분은 상기 다중-뱅크 메모리 소자의 선택된 하나의 소자 내의 다수의 메모리 뱅크들 중 하나를 선택하는데 이용된다. 상기 제 1 부분은 상기 스레드 식별기의 하나이상의 최상위 비트를 포함하고, 상기 제 2 부분은 상기 스레드 식별기의 하나이상의 최하위 비트를 포함한다. 본 발명은 프로세서 스레드의 스톨링을 방지하면서, 메모리 액세스 시간 및 전력 소비를 줄이는 것이 선호된다.

Description

멀티스레디드 프로세서에서 스레드-방식 메모리 액세스를 위한 방법 및 장치{METHOD AND APPARATUS FOR THREAD-BASED MEMORY ACCESS IN A MULTITHREADED PROCESSOR}
본 발명은 디지털 데이터 프로세서에 관한 것으로, 특히 멀티스레디드 프로세서에서 사용하기 위한 메모리 액세스 기술에 관한 것이다.
메모리는 프로세서 설계의 중요한 태양이다. 공지된 바와 같이, 프로세서는 흔히 다른 저장 소자의 계층을 포함하는 메모리 시스템과 함께 사용된다. 예를 들어, 이러한 메모리 시스템은 주 메모리 및 캐시 메모리를 포함할 수 있고, 그 내용은 가령, M.J Flynn 1995년 미국 매사추세츠주의 보스톤의 "Computer Architecture : Pipelined and Parallel Processor Design," Jones and Bartlett Publishers에 설명되어 있으며, 본원에서 참조로 인용된다.
메모리 성능은 일반적으로 액세스 시간 및 대역폭과 같은 매개변수에 의해 특징지어진다. 상기 액세스 시간은 메모리로부터 특정 데이터에 대한 프로세서 요청(request)과 상기 프로세서에 요청된 데이터의 리턴 사이의 시간을 의미한다. 상기 메모리 대역폭은 단위 시간 당 메모리에 의해 수용될 수 있는 메모리 액세스 요청의 수를 의미한다.
캐시 메모리나 주 메모리와 같은 메모리는 다중 뱅크의 형태로 구성될 수 있다. 메모리 부분은 또한 모듈로 일컬어질 수 있다. 예를 들어, 많은 뱅크들이 단일 메모리 모듈로 결합될 수 있거나 혹은 많은 모듈들이 상기 뱅크들 중 하나를 형성하도록 결합될 수 있다. 일반적으로, 상기 메모리 뱅크의 부분집합(subset)만이 메모리 액세스 동안 어떤 주어진 시간에 활성화될 수 있다. 가장 단순한 가능한 배열에서, 단일 프로세서는 단일 메모리 모듈에 요청을 한다. 상기 프로세서는 이후 동작을 중단하고 상기 모듈로부터 서비스를 기다린다. 상기 모듈이 응답할 때, 상기 프로세서 동작은 복원된다.
각각의 메모리 모듈은 둘 이상의 중요한 매개변수들 즉, 모듈 액세스 시간 및 모듈 사이클 시간을 포함한다. 모듈 액세스 시간은 데이터를 출력 메모리 버퍼 레지스터로 복원하는데 필요한 시간이다. 모듈 사이클 시간은 동일한 모듈에서 방향이 정해진 요청들 사이의 최소 시간이다.
역사적으로, 프로세서 및 메모리는 분리되어 패키징되었다. 그러나, 현재의 집적 기술로써 다중 모듈 및 뱅크를 상기 프로세서를 따라 단일 집적 회로 다이 내에 집적하는 것이 가능하다.
종래의 메모리 액세스 기술은 멀티스레디드 프로세서(다중 명령 시퀀스 또는 스레드의 동시 실행을 지원함)와 함께 사용시 적합하지 않는 심각한 문제를 갖고 있다. 예를 들어, 종래의 메모리 액세스 기술은 멀티스레디드 프로세서에 적용될 때 종종 지나치게 많은 수의 읽기 및 쓰기 포트를 필요로 함으로써, 불필요한 전력 소비 증가를 일으키게 된다. 게다가, 이러한 기술은 멀티스레디드 프로세서에 적용될 때 특별한 프로세서 스레드의 스톨링(stalling)을 일으킴으로써 메모리 액세스 시간을 증가시킨다.
상기와 같이, 멀티스레디드 프로세서와 관련된 메모리와 결합하여 사용하기 위해 향상된 메모리 액세스 기술을 가질 필요가 있다.
도 1은 본 발명이 구현되는 예시적 프로세싱 시스템의 블록도이다.
도 2는 도 1의 프로세싱 시스템의 멀티스레디드 프로세서의 예시적 실시예의 상세한 블록도이다.
도 3은 본 발명의 기술에 따라 도 2의 멀티스레디드 프로세서에서 사용하기에 적합한 토큰 트리거 방식 스레딩의 예를 보여준다.
도 4는 본 발명의 기술에 따라 도 2의 멀티스레디드 프로세서에서 예시적 명령 함수가 파이프라인될 수 있는 방식을 보여준다.
도 5는 연속적인 사이클에서 도 2의 프로세서 발행 명령의 다중 콘텍스트와 함께 단순한 예시적 파이프라인을 보여준다.
도 6은 본 발명에 따른 도 2의 멀티스레디드 프로세서에서 구현된 메모리 액세스 기술이다.
본 발명은 멀티스레디드 프로세서를 위한 향상된 메모리 액세스 기술을 제공한다. 특히, 본 발명의 메모리 액세스 기술은 실시예에서 멀티스레디드 프로세서와 관련된 메모리에서 스레드-방식(thread-based) 뱅크 액세스를 제공함으로써, 프로세서 스레드의 메모리 액세스 관련된 스톨링을 피하게 된다.
본 발명에 따르면, 멀티스레디드 프로세서는 특정 프로세서 스레드와 관련된 스레드 식별기(identifier)를 결정하고, 그리고 하나이상의 상기 스레드 식별기를 이용함으로써 상응하는 프로세서 스레드에 의하여 액세스할 관련된 메모리의 특정 부분을 선택한다. 예를 들어, 상기 스레드 식별기의 제 1 부분은 상기 메모리 내에 다수의 다중-뱅크 메모리 소자들 중 하나를 선택하도록 이용될 수 있고, 상기 스레드 식별기의 제 2 부분은 상기 다중-뱅크 메모리 소자의 선택된 하나에서 다수의 메모리 뱅크들 중 하나를 선택하는데 이용될 수 있다. 상기 제 1 부분은 상기 스레드 식별기의 하나이상의 최상위 비트를 포함할 수 있지만, 상기 제 2 부분은 상기 스레드 식별기의 하나이상의 최하위 비트를 포함한다.
특별한 실시예에서, 각각의 다중-뱅크 메모리 소자는 짝수의 메모리 뱅크 및 홀수의 메모리 뱅크를 포함할 수 있고, 상기 스레드 식별기의 제 2 부분의 최하위 비트는 상기 상응하는 프로세서 스레드에 의하여 액세스 하기 위해 상기 짝수의 메모리 뱅크 및 홀수의 메모리 뱅크 중 하나를 선택하는데 이용된다.
본 발명의 다른 태양은 토큰 트리거 방식(token triggered) 스레딩 및 파이프라인 방식(pipelined) 명령 프로세싱에 관련된다. 예를 들어, 멀티스레디드 프로세서는 토큰 트리거 방식 스레딩을 구현하도록 구성될 수 있다. 이러한 형태의 스레딩은 현재의 프로세서 클럭 사이클과 관련하여, 후속 클럭 사이클에 대한 명령을 내리도록 허용되는 특별한 하드웨어 스레드 유닛이나 콘텍스트(context)를 식별하기 위해 토큰을 이용한다.
본 발명은 프로세서의 성능을 손상하지 않고서 멀티스레디드 프로세서에서 메모리 액세스 시간 및 전력 소비를 상당히 감소시키는 것이 선호된다. 예를 들어, 실시예에서, 두 개의 읽기 및 쓰기 메모리 액세스는 단일 메모리 포트를 이용한 단일 프로세서 사이클에서 이루어질 수 있다.
본 발명은 주 메모리, 멀티스레디드 캐시 메모리, 및 멀티스레디드 데이터 메모리와 관련된 멀티스레디드 프로세서에서 구현된다. 그러나, 본 발명은 특별한 멀티스레디드 프로세서 및 실시예의 메모리 구조를 사용하는 것을 필요로 하지 않지만, 필요한 메모리 포트의 수를 줄이고 따라서 전력 소비를 감소시키는 멀티스레디드 프로세서 메모리 액세스 용도에 적합한 것이 선호된다.
본 발명에 따른 메모리 액세스 기술을 구현하는 예시적 프로세서 시스템(100)은 도 1 및 2에 설명될 것이다.
도 1은 주 메모리(104)에 결합된 멀티스레디드 프로세서(102)를 포함한 프로세싱 시스템(100)을 보여준다. 멀티스레디드 프로세서(102)는 멀티스레디드 캐시 메모리(110) 및 멀티스레디드 데이터 메모리(112)를 포함한다.
도 2는 멀티스레디드 프로세서(102)의 가능한 구현예를 상세히 보여준다. 이 실시예에서, 멀티스레디드 프로세서(102)는 멀티스레디드 캐시 메모리(110), 데이터 메모리(112), 캐시 컨트롤러(114), 명령 디코더(116), 레지스터 파일(118), 및 연산 논리 장치(ALU)(120)를 포함한다. 멀티스레디드 캐시 메모리(110)는 또한 여기서 멀티스레디드 캐시로 불린다.
멀티스레디드 캐시(110)는 다수의 스레드 캐시(110-1, 110-2,...110-N)를 포함하고, 이때 N은 상기 멀티스레디드 프로세서(102)에 의해 지원되는 스레드의 수를 나타낸다. 각 스레드는 따라서 멀티스레디드 캐시(110)에서 각 스레드와 관련된 상응하는 스레드 캐시를 갖는다. 유사하게, 데이터 메모리(112)는 N 개의 데이터 메모리 경우를 포함하며, 112-1, 112-2,...112-N으로 표현된다.
상기 멀티스레디드 캐시(110)에서 각각의 스레드 캐시는 하나이상의 메모리 위치를 갖는 메모리 어레이를 포함할 수 있다. 주어진 스레드 캐시는 도 6과 결합하여 아래에서 설명될 것이지만, 관련된 스레드 식별기를 저장하기 위한 스레드 식별기 레지스터를 추가로 포함할 수 있다.
멀티스레디드 캐시(110)는 캐시 컨트롤러(114)를 통하여 주 메모리(104)와 인터페이스한다. 상기 캐시 컨트롤러(114)는 주 메모리(104)로부터 적절한 명령들이 상기 멀티스레디드 캐시(110)로 로딩되는 것을 보장한다. 상기 캐시 컨트롤러(114)는 이 실시예에서, 개별 스레드 캐시(110-1, 110-2,...110-N)와 관련된 논리 회로 또는 다른 프로세싱 소자들과 결합하여 동작하고, 어소시에이티브 매핑(associative mapping), 다이렉트 매핑, 또는 세트-어소시에이티브 매핑(set-associative mapping)과 같은 어드레스 매핑 기술을 구현한다. 본 발명과 결합하여 사용하기에 적합한 예시적인 세트-어소시에이티브 매핑 기술은 미국 특허 출원 10/161,774 및 10/161,874에 설명되어 있으며, 둘다 2002년 6월 4일에 출원되었고, 그 내용은 본원에서 참조로 인용된다.
일반적으로, 상기 멀티스레디드 캐시(110)는 상기 멀티스레디드 프로세서(102)에 의해 실행될 명령을 저장하는데 사용되고, 반면 데이터 메모리(112)는 상기 명령에 의해 운영되는 데이터를 저장한다. 명령은 상기 멀티스레디드 캐시(110)로부터 인출되는데, 이는 종래의 방식으로 명령의 실행을 제어함에 있어서 상기 레지스터 파일(118) 및 상기 ALU와 결합하여 동작하는 명령 디코더(116)에 의하여 이루어진다. 116, 118, 및 120과 같은 멀티스레디드 프로세서 소자의 동작은 당분야에 공지되어 있으며, 따라서 아래에서 설명되지 않는다.
데이터 메모리(112)는 일반적으로 주 메모리(104)에 직접 연결되지만, 도면에서는 이러한 연결이 확연히 도시되어 있지는 않다.
하나이상의 메모리(104, 110, 및 112)는 각각 다수의 뱅크 또는 다른 지정된 부분을 포함하도록 구성될 수 있다. 실시예에 의하여, 각각의 뱅크는 하나이상의 메모리 모듈 또는 단일 메모리 모듈의 특정 부분으로 구성되는 것으로 보여질 수 있다.
여기서 사용되는 용어 "메모리"는 내부 또는 외부 메모리, 캐시 메모리, 데이터 메모리, 또는 다른 저장 소자의 배열을 포함하도록 광범위하게 해석될 수 있다. 본 발명은 특정 메모리 형태, 구조 또는 용도에 한정되지는 않는다. 그러나, 프로세서 분야에서 메모리들은 도 2의 레지스터 파일(118)과 같은 레지스터와는 별개라는 것에 유의해야 한다. 스레드 방식 액세스를 위한 기술은 미국 특허 출원 도켓 번호 1007-7 "Method and Appratus for Register File Port Reduction in a Multithreaded Processor"에 설명되어 있다.
본 발명은 도 2에 도시된 특별한 멀티스레디드 프로세서 구조를 필요로 하지 않는 점에 유의해야 한다. 본 발명은 다양한 다른 멀티스레디드 프로세서 구조에서 구현될 수 있다.
본 발명과 결합되어 사용하기에 적합하며 도 2에 도시된 형태의 멀티스레디드 프로세서의 보다 특별한 실시예는 2001년 12월 20일 출원된 미국 가특허 출원 60/341,289에 설명되어 있으며, 그 내용은 본원에서 참조로 인용된다. 미국 가특허 출원 번호 60/341,289에 설명되는 멀티스레디드 프로세서의 예시적 실시예는 RISC 방식 제어 코드, 디지털 신호 프로세서(DSP) 코드, 자바 코드 및 네트워크 프로세싱 코드를 실행할 수 있다. 상기 프로세서는 SIMD(single instruction multiple data) 벡터 유닛, 리덕션(reduction) 유닛, 및 LIW(long instruction word) 복합 명령 실행을 포함한다.
본 발명의 한 태양에 따르면, 상기 멀티스레디드 프로세서(102)와 관련된 메모리는 개별 부분들로 나누어지고, 특정 부분은 상응하는 스레드 식별기를 이용함으로써 주어진 프로세서 스레드에 의해 액세스용으로 선택된다. 특히, 실시예에서, 멀티스레디드 프로세서(102)와 관련된 메모리 액세스 시간 및 전력 요건은 성능에 손상을 일으키지 않으면서 퍼-스레드(per-thread) 방식으로 메모리를 뱅킹(banking)하여 감소된다. 게다가, 상기 스레드 방식 뱅킹 접근은 프로세서 스레드의 메모리 액세스 관련 스톨링을 방지할 수 있다.
이러한 방식으로 구성된 메모리는 실시예에 의하여, 하나이상의 주 메모리(104), 캐시 메모리(110), 데이터 메모리(112), 또는 상기 멀티스레디드 프로세서(102)와 관련된 다른 메모리를 포함할 수 있다. 이러한 메모리 액세스 기술의 실시예 구현은 도 3, 4, 5, 및 6과 결합하여 아래에 설명될 것이다.
상기 멀티스레디드 프로세서(102)는 토큰 트리거 방식 스레딩으로 불리는 스레딩 접근 또는 다른 적절한 스레딩 기술을 이용하도록 구성될 수 있다.
도 3은 스레드의 수 N이 8인 프로세서(102)의 구현을 위한 토큰 트리거 방식 스레딩의 실시예를 보여준다. 일반적으로, 모든 스레드는 동시에 동작하고, 각 스레드는 스레드 캐시(110) 및 데이터 메모리(112)의 상응하는 경우에 액세스한다. 도 3에 도시된 바와 같이, 8개의 스레드는 스레드0, 스레드1, 스레드2,...스레드7로 표현되고, 링의 형태로 상호연결되도록 도시되어 있다. 멀티스레디드 프로세서에서, 주어진 스레드는 소프트웨어 및 하드웨어에 의하여 보여질 수 있다. 주어진 스레드와 관련된 특별한 프로세서 하드웨어는 본원에서 하드웨어 스레드 유닛 또는 단순히 콘텍스트로 일컬어진다.
도 3에 도시된 상기 토큰 트리거 방식 스레딩에 따라, 모든 하드웨어 스레드 유닛 또는 콘텍스트는 동시에 명령을 실행하도록 허용되지만, 단지 하나의 콘텍스트만이 상기 프로세서의 특별한 클럭 사이클에서 명령을 발생시킬 수 있다. 즉, 모든 콘텍스트는 동시에 실행하지만, 단지 하나의 콘텍스트만이 특별한 클럭 사이클에서 활성화된다. 따라서, 총 C개의 콘텍스트가 있다면, 모든 콘텍스트로부터 명령을 발생하기 위해 C 클럭 사이클을 필요로 할 것이다. 콘텍스트 중 하나인 각각의 클럭 사이클은 명령을 발생시키고, 명령을 발생시키기 위한 다음 스레드는 토큰으로 표시된다. 도 3에서, 토큰은 순차적이거나 라운드 로빈(round-robin) 방식으로 배열됨으로써, 상기 콘텍스트는 순차적으로 명령을 발생시킬 것이다. 그러나, 명령을 발생시키기 위하여 다음 콘텍스트를 표시하는 토큰은 교차하는 짝수-홀수 패턴과 같은 다른 패턴을 이용하여 배열될 수 있다. 또한, 앞서 언급한 바와 같이, 다른 형태의 스레딩이 본 발명과 결합하여 이용될 수 있다.
도 4는 본 발명에 따른 멀티스레디드 프로세서(102)에서 예시적 명령 함수가 파이프라인될 수 있는 방식을 보여준다. 본 발명의 실시예에서, 이러한 형태의 파이프라인은 앞서 설명된 토큰 트리거 방식 스레딩과 결합하여 사용되는 것이 선호되지만, 파이프라이닝 및 스레딩의 수많은 다른 조합들이 본 발명을 구현하는데 사용될 수 있다.
도 4의 파이프라인은 도 3의 예시적인 N=8의 토큰 트리거 방식 스레딩과 결합하여 구성된다. 도 4의 예시적 명령 함수는 로드/저장(Ld/St), ALU, 정수곱(I_Mul) 및 벡터곱(V_Mul)을 포함하고, 9개, 6개, 7개, 및 8개의 파이프라인 단계들을 각각 갖는 것으로 도시된다.
도 4에 도시된 각각의 예시적 명령 파이프라인은 하나이상의 명령 디코드 단계, 레지스터 파일(RF) 읽기 단계, 이동(Xfer) 단계 및 되돌림(WB) 단계를 포함한다. 상기 RF 읽기 단계는 레지스터 파일(가령, 레지스터 파일(118))로부터 읽기를 포함하고, 상기 이동 단계는 명령 결과를 지정된 홀딩 레지스터로 이동하는 것을 포함하며, 그리고 상기 WB 단계는 명령 결과를 메모리나 레지스터 파일로 다시 기록하는 것을 포함한다.
상기 Ld/St 파이프라인은 어드레스 생성(Agen) 단계, 내부(Int) 또는 외부(Ext) 결정 단계, 및 세 개의 추가 메모리 실행 단계(Mem0, Mem1, 및 Mem2)를 추가로 포함한다. 상기 Ld/St 파이프라인은 따라서 총 네 개의 메모리 실행 단계(Mem0, Mem1, Mem2 및 WB)를 포함한다. 상기 내부 또는 외부 결정 단계는 상기 관련된 메모리 액세스가 내부 메모리인지 외부 메모리인지를 결정하고, 상기 파이프라인 내의 추가 디코드 단계로 보여질 수 있다. 어떤 외부 메모리 액세스를 위해서는 추가 메모리 실행 단계가 필요할 수 있음에 유의해야 한다. 예를 들어, 상기 외부 메모리 액세스의 WB 단계가 상응하는 스레드가 활성화되는 시간의 주기 동안 종료하지 않는다면, 상기 스레드가 정지됨으로써 스레드가 활성화되는 다음 순간을 종료할 것이다.
상기 ALU 파이프라인은 Exec1 및 Exec2로 표시된 두 개의 실행 단계를 추가로 포함한다.
정수 I_Mul 파이프라인은 Exec1, Exec2, 및 Exec3으로 표시된 세 개의 실행 단계를 추가로 포함한다.
상기 벡터 V_Mul 파이프라인은 두 개의 곱셈 단계 MPY1 및 MPY2, 그리고 두 개의 덧셈 단계 Add1 및 Add2를 추가로 포함한다.
상기 멀티스레드 프로세서(102)는 특정 콘텍스트로부터 명령이 상응하는 파이프라인에 들어가면 프로세서가 종료하게 되도록 구성되는 것이 선호된다.
도 5는 연속된 사이클 상에서 명령을 발생시키는 상기 멀티스레디드 프로세서(102)의 다중 콘텍스트를 갖는 파이프라인 방식 명령을 단순하게 보여주고 있다. 이 실시예에서, 단순성 및 명료성을 위해 상기 발행되는 명령들은 각각 네 개의 동일한 파이프라인 단계(명령 인출(IF), 읽기(RD), 실행(EX), 및 되돌림(WB))를 포함하는 것으로 가정된다. 또한 세 개의 스레드가 있고, 세 개의 콘텍스트는 도 3과 결합하여 설명된 바와 유사한 순차적인 방식으로 명령을 발생시키는 것으로 가정한다. 정수 추가 명령(addi) r0, r2, 8은 최초 클럭 사이클에서 상기 콘텍스트 중 제 1 콘텍스트에 의해 초기에 발생된다. 다른 두 개의 콘텍스트는 각각의 후속 클럭 사이클 상에서 명령을 발생한다. 각각의 콘텍스트가 명령을 발생시키는데는 총 세 클럭 사이클이 걸린다. 제 4 클럭 사이클에서, 상기 제 1 콘텍스트는 또 다른 명령 즉, 정수 곱셈 명령(muli) r8, r0, 4를 발생시킨다.
도 5는 적절히-구성된 파이프라인 및 충분한 수의 스레드를 도시하고 있으며, 모든 하드웨어 콘텍스트는 비록 사이클 당 콘텍스트에서 단지 하나의 명령이 있더라도 동시에 실행될 수 있다. 앞서 설명된 바와 같이, 상기 특정한 수의 스레드 및 파이프라인 단계는 단지 예시의 목적이며, 선호되는 구현예를 반영하지는 않는다. 당업자는 본원에서 제시된 내용과 관련된 특별한 응용예에 대하여 적절한 수의 스레드 및 파이프라인 단계를 결정할 수 있다.
앞서 언급된 바와 같이, 본 발명의 한 태양에 따른 발명은 멀티스레디드 프로세서(102)에 의하여 사용시 향상된 메모리 액세스 기술을 제공한다.
일반적으로, 이러한 향상된 메모리 액세스 기술은 상기 멀티스레디드 프로세서의 특별한 스레드와 관련된 스레드 식별기를 결정하는 것을 포함하고, 그리고 상기 스레드 식별기의 한 부분 이상을 이용함으로써 상응하는 프로세서 스레드에 의하여 액세스될 메모리의 특정 부분을 선택하게 된다.
특히, 상기 멀티스레디드 프로세서에 의해 평가될 메모리가 다중 메모리 뱅크를 갖는 다수의 개별 메모리 소자들 내부로 구성되는 예시적 배열에서, 상기 스레드 식별기의 제 1 부분은 상기 메모리 내의 개별 메모리 소자들 중 하나를 선택하는데 사용될 수 있고, 그리고 상기 스레드 식별기의 제 2 부분은 상기 메모리 소자들 중 선택된 하나 내부에서 메모리 뱅크들 중 하나를 선택하는데 사용될 수 있다.
다중-뱅크 메모리 소자들 중 하나를 선택하는데 사용된 상기 스레드 식별기의 제 1 부분은 상기 스레드 식별기의 최상위 비트를 포함할 수 있지만, 선택된 다중-뱅크 메모리 소자 내에서 상기 뱅크들 중 하나를 선택하는데 사용된 상기 스레드 식별기의 제 2 부분은 상기 스레드 식별기의 최하위 비트를 포함할 수 있다.
도 6은 앞서 설명된 메모리 액세스 기술의 한 실시예로서, 상기 멀티스레디드 프로세서(102)를 이용하는 도 1의 프로세싱 시스템에서 구현될 수 있다. 상기 멀티스레디드 프로세서(102)에서 프로세서 스레드의 수 N은 8로 가정된다. 도 6은 M0, M1, M2, 및 M3으로 표시된 네 개의 다중-뱅크 메모리 소자들을 포함하는 메모리(600)를 보여준다. 상기 메모리(600)는 주 메모리(104), 캐시 메모리(110), 데이터 메모리(112), 또는 상기 멀티스레디드 프로세서(102)와 관련된 또 다른 메모리에 상응할 수 있다. 각각의 다중-뱅크 메모리 소자(M0, M1, M2, 및 M3)는 B0 및 B1(본원에서 각각 짝수 메모리 및 홀수 메모리로 일컬어짐)으로 표시된 한 쌍의 메모리 뱅크를 포함한다.
스레드 식별기(TID) 레지스터(602)는 제 1 부분(604) 및 제 2 부분(606)을 갖는 스레드 식별기를 저장한다. 이 실시예에서, N은 앞서 언급한 바와 같이 8이고, 스레드 식별기는 3비트 식별기이다. 상기 스레드 식별기의 제 1 부분(604)은 상기 3비트 식별기의 두 개의 최상위 비트를 포함하고, 네 개의 다중-뱅크 메모리 소자(M0, M1, M2, 및 M3) 중 특별한 하나를 선택하는데 이용된다. 상기 다중-뱅크 메모리 소자들 중 특별한 하나를 선택하는데 이용된 선택 회로는 도 6에 분명히 도시되어 있지는 않지만, 당업자가 알 수 있는 바와 같이 직접적인 방식으로 구현될 수 있다. 상기 스레드 식별기의 제 2 부분(606)은 상기 3비트 식별기의 최하위 비트를 포함하고, 특정 메모리 액세스와 결합하여 이용시 상기 뱅크 B0 또는 B1 중 하나를 선택하기 위해 선택 회로(610)에 선택 신호로서 인가된다.
도 6의 다이어그램은 정보가 상기 뱅크 B0 및 B1 중 선택된 하나로부터 판독되는 읽기 액세스를 도시하고 있다. 그러나, 이는 실시예로서 본 발명은 기록 액세스에 대해서도 사용될 수 있다.
도 6에서, 주어진 다중-뱅크 메모리 소자(M0, M1, M2, 또는 M3)는 읽기 및 쓰기 액세스에 대하여 단일 메모리 포트만을 가질 필요가 있다. 예를 들어, 본 발명은 짝수 뱅크와 홀수 뱅크 사이에서 교차함으로써 매 사이클마다 각각의 다중-뱅크 소자로부터 판독하는 것이 가능하다. 결과적으로, 단일 메모리 포트는 단일 메모리 포트가 다중 포트를 포함하는 것으로 작용할 수 있다. 특히, 두 개의 읽기 및 쓰기 메모리 액세스는 다중-뱅크 메모리 소자 당 단일 메모리 포트로써 프로세서 클럭 사이클마다 실행될 수 있다. 이러한 배열은 메모리 액세스 시간을 감소시키고 전력 소비를 감소시키는데 이용될 수 있지만, 또한 메모리 액세스 문제에 따른 프로세서 스레드 스톨링을 막을 수 있다.
본 발명의 기술을 이용하면, 다중-뱅크 메모리 소자 및 메모리 뱅크의 수많은 대안적 구성이 가능하다. 예를 들어, 하나의 가능한 대안적 구조는 두 개의 다중-뱅크 메모리 소자를 갖는 것으로, 각각 네 개의 메모리 뱅크를 가지며, 이때 스레드 식별기의 한 비트는 상기 다중-뱅크 메모리 소자를 선택하는데 사용되며, 상기 스레드 식별기의 두 비트는 상기 선택된 다중-뱅크 메모리 소자 내에서 상기 네 개의 메모리 뱅크들 중 하나를 선택하는데 사용된다. 특히, 만일 다중-뱅크 메모리 소자들의 수가 M으로 주어지고, B가 다중-뱅크 메모리 소자 당 메모리 뱅크의 수이면, 상기 메모리는 M과 B의 곱이 N과 같도록(즉, N=M*B) 구성될 수 있다. 다른 배열도 또한 가능하다. 더욱이, 각각의 다중-뱅크 메모리 소자는 동일한 수의 메모리 뱅크를 가질 필요는 없다.
스레드 식별기 레지스터(602) 및 관련된 선택 회로는 상기 멀티스레디드 프로세서(102)의 요소로서 구현될 수 있다. 예를 들어, 메모리(600)가 캐시 메모리(110)에 상응하는 본 발명의 한 실시예에서, 상기 요소들은 캐시 컨트롤러 내에 부분적으로 또는 전체적으로 구현될 수 있거나 혹은 상기 멀티스레디드 프로세서(102)의 또 다른 부분 내에 구현될 수 있다.
상기 스레드 식별기 레지스터(602)는 특별한 스레드를 식별하기 위해 상기 멀티스레디드 프로세서(102)에 의해 사용되는 멀티-비트 스레드 식별기를 저장한다. 상기 스레드 식별기는 당업자에게 공지되어 있는 종래의 방식으로 생성될 수 있다.
본원에서 사용되는 용어 "스레드 식별기"는 특정 스레드 또는 다중 스레드를 멀티스레디드 프로세서에서 식별하기에 적합한 정보를 포함하도록 의도된다. 실시예에서 의해서 그리고 제한 없이, 상기 스레드 식별기는 멀티스레디드 프로세서에서 스레드 카운터(counter)의 출력에 상응할 수 있다. 특히, 주어진 멀티스레디드 프로세서는 다중 스레드가 지정된 순서로 가령, 라운드 로빈 순서로 처리되도록 구성될 수 있고, 이때 상기 스레드 카운터는 실행되는 특정 스레드를 식별하는데 사용된다. 이러한 실시예에서, 라운드 로빈 순서로 처리되는 스레드는 총 8개가 될 수 있으며, 각 스레드는 3-비트 식별기에 의하여 식별됨으로써 3비트 카운터의 출력은 처리되는 특정 스레드를 식별하는데 사용될 수 있다. 다른 실시예는 상기 스레드 식별기의 넌-카운터(non-counter) 구현예를 사용할 수 있다. 본 발명에서 사용하기에 적합한 다른 다양한 스레드 식별기의 구조는 당업자에게 분명할 것이다.
도 6에 도시된 메모리 액세스 기술은 상응하는 프로세서 스레드에 의해 평가될 짝수 또는 홀수 메모리 뱅크를 선택하기 위해 상기 스레드 식별기의 단일 비트를 이용한다. 그러나, 주어진 다중-뱅크 메모리 소자의 2n 개의 메모리 뱅크 중 하나를 선택하기 위해, 상기 스레드 식별기의 n 개의 최하위 비트를 사용하는 것이 가능하다. 유사하게, 상기 스레드 식별기의 m 개의 최상위 비트를 사용함으로써, 상기 멀티스레디드 프로세서와 관련된 주어진 메모리에서 2m 개의 다중-뱅크 메모리 소자들 중 하나를 선택할 수 있다.
앞서 언급된 바와 같이, 본 발명의 스레드 방식 메모리 액세스 기술은 종래의 기술에 비해 상당한 개선점을 제공한다. 예를 들어, 상기 기술은 메모리 액세스 시간을 향상시킬 수 있다. 또한, 상기 기술은 필요한 메모리 포트의 수를 절감함으로써 전력 소비를 감소시키게 된다. 더욱이, 이러한 향상은 프로세서의 성능에 영향을 주지 않으면서 제공된다.

Claims (15)

  1. 멀티스레디드 프로세서와 관련된 메모리에 액세스하는 방법에 있어서, 상기 방법은
    - 상기 멀티스레디드 프로세서의 특정 스레드와 관련된 스레드 식별기를 결정하고, 그리고
    - 상응하는 프로세서 스레드에 의하여 액세스될 메모리의 특정 부분을 선택하기 위해 상기 스레드 식별기의 하나이상의 부분을 이용하는
    단계들을 포함하는 것을 특징으로 하는 멀티스레디드 프로세서와 관련된 메모리 액세스 방법.
  2. 제 1 항에 있어서, 이때 상기 이용 단계는 상기 스레드 식별기의 제 1 부분을 이용하여 상기 메모리 내의 다수의 다중-뱅크 메모리 소자들을 선택하고, 그리고 상기 스레드 식별기의 제 2 부분을 이용하여 상기 다중-뱅크 메모리 소자들 중 선택된 하나 내의 다수의 메모리 뱅크들 중 하나를 선택하는 것을 특징으로 하는 멀티스레디드 프로세서와 관련된 메모리 액세스 방법.
  3. 제 2 항에 있어서, 이때 상기 제 1 부분은 상기 스레드 식별기의 하나이상의 최상위 비트를 포함하는 것을 특징으로 하는 멀티스레디드 프로세서와 관련된 메모리 액세스 방법.
  4. 제 2 항에 있어서, 이때 상기 제 2 부분은 상기 스레드 식별기의 하나이상의 최하위 비트를 포함하는 것을 특징으로 하는 멀티스레디드 프로세서와 관련된 메모리 액세스 방법.
  5. 제 2 항에 있어서, 이때 상기 다중-뱅크 메모리 소자들 각각은 짝수 메모리 뱅크 및 홀수 메모리 뱅크를 포함하고, 상기 제 2 부분의 최하위 비트는 상응하는 프로세서 스레드에 의해 액세스시 상기 짝수 및 홀수 메모리 뱅크 중 하나를 선택하는데 이용되는 것을 특징으로 하는 멀티스레디드 프로세서와 관련된 메모리 액세스 방법.
  6. 제 1 항에 있어서, 이때 상기 메모리는 상기 멀티스레디드 프로세서에 결합된 주 메모리를 포함하는 것을 특징으로 하는 멀티스레디드 프로세서와 관련된 메모리 액세스 방법.
  7. 제 1 항에 있어서, 이때 상기 메모리는 상기 멀티스레디드 프로세서의 데이터 메모리를 포함하는 것을 특징으로 하는 멀티스레디드 프로세서와 관련된 메모리 액세스 방법.
  8. 제 1 항에 있어서, 이때 상기 메모리는 상기 멀티스레디드 프로세서의 캐시 메모리를 포함하는 것을 특징으로 하는 멀티스레디드 프로세서와 관련된 메모리 액세스 방법.
  9. 제 8 항에 있어서, 이때 상기 캐시 메모리는 다수의 스레드 캐시를 포함하고, 하나이상의 스레드 캐시는 하나이상의 메모리 위치를 갖는 메모리 어레이를 포함하는 것을 특징으로 하는 멀티스레디드 프로세서와 관련된 메모리 액세스 방법.
  10. 제 9 항에 있어서, 이때 상기 주어진 스레드 캐시는 상기 스레드 식별기를 저장하기 위해 스레드 식별기 레지스터를 추가로 포함하는 것을 특징으로 하는 멀티스레디드 프로세서와 관련된 메모리 액세스 방법.
  11. 제 1 항에 있어서, 이때 상기 멀티스레디드 프로세서는 토큰 트리거 방식 스레딩을 이용하도록 구성되는 것을 특징으로 하는 멀티스레디드 프로세서와 관련된 메모리 액세스 방법.
  12. 제 11 항에 있어서, 이때 상기 토큰 트리거 방식 스레딩은 현재의 프로세서 클럭 사이클과 관련하여, 후속 클럭 사이클에 대한 명령을 내리도록 허용될 특정 콘텍스트를 식별하기 위해 토큰을 이용하는 것을 특징으로 하는 멀티스레디드 프로세서와 관련된 메모리 액세스 방법.
  13. 제 1 항에 있어서, 이때 상기 멀티스레디드 프로세서는 파이프라인 방식 명령 프로세싱을 위해 구성되는 것을 특징으로 하는 멀티스레디드 프로세서와 관련된 메모리 액세스 방법.
  14. 프로세서 시스템에 있어서, 상기 시스템은
    - 멀티스레디드 프로세서, 및
    - 상기 멀티스레디드 프로세서와 관련된 메모리
    를 포함하고, 이때 상기 멀티스레디드 프로세서는 상기 멀티스레디드 프로세서의 특정 스레드와 관련된 스레드 식별기를 결정하도록 동작하고, 그리고 상응하는 프로세서 스레드에 의해 액세스될 메모리의 특정 부분을 선택하도록 상기 스레드 식별기의 하나이상의 부분을 이용하는 것을 특징으로 하는 프로세서 시스템.
  15. 기계-판독형 저장 매체를 포함하는 제조물에 있어서, 상기 기계-판독형 저장 매체는 멀티스레디드 프로세서와 관련된 메모리에 액세스할 때 상기 기계-판독형 저장 매체 상에 프로그램 코드를 구현하고, 이때 상기 프로그램 코드는 상기 프로세서에 의해 실행시
    - 상기 멀티스레디드 프로세서의 특정 스레드와 관련된 스레드 식별기를 결정하고, 그리고
    - 상응하는 프로세서 스레드에 의하여 액세스될 메모리의 특정 부분을 선택하기 위해, 상기 스레드 식별기의 하나이상의 부분을 이용하는
    단계들을 구현하는 것을 특징으로 하는 기계-판독형 저장 매체를 포함하는 제조물.
KR1020057005888A 2002-10-11 2003-10-09 멀티스레디드 프로세서에서 스레드-방식 메모리 액세스를위한 방법 및 장치 KR100980536B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/269,247 US6925643B2 (en) 2002-10-11 2002-10-11 Method and apparatus for thread-based memory access in a multithreaded processor
US10/269,247 2002-10-11

Publications (2)

Publication Number Publication Date
KR20050046819A true KR20050046819A (ko) 2005-05-18
KR100980536B1 KR100980536B1 (ko) 2010-09-06

Family

ID=32068735

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057005888A KR100980536B1 (ko) 2002-10-11 2003-10-09 멀티스레디드 프로세서에서 스레드-방식 메모리 액세스를위한 방법 및 장치

Country Status (9)

Country Link
US (1) US6925643B2 (ko)
EP (1) EP1550032B1 (ko)
JP (1) JP2006502507A (ko)
KR (1) KR100980536B1 (ko)
CN (1) CN1332303C (ko)
AU (1) AU2003282511A1 (ko)
ES (1) ES2758623T3 (ko)
HU (1) HUE046355T2 (ko)
WO (1) WO2004034218A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101305490B1 (ko) * 2005-10-01 2013-09-06 삼성전자주식회사 메모리 맵핑 방법 및 장치

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100591755B1 (ko) * 2003-07-22 2006-06-22 삼성전자주식회사 복수의 스레드를 동시에 처리하는 장치 및 방법
US20050102494A1 (en) * 2003-11-12 2005-05-12 Grochowski Edward T. Method and apparatus for register stack implementation using micro-operations
US7797363B2 (en) * 2004-04-07 2010-09-14 Sandbridge Technologies, Inc. Processor having parallel vector multiply and reduce operations with sequential semantics
US7475222B2 (en) * 2004-04-07 2009-01-06 Sandbridge Technologies, Inc. Multi-threaded processor having compound instruction and operation formats
US8074051B2 (en) * 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
US7280428B2 (en) 2004-09-30 2007-10-09 Rambus Inc. Multi-column addressing mode memory system including an integrated circuit memory device
US7797728B2 (en) * 2004-10-27 2010-09-14 Intel Corporation Mechanism to generate restricted and unrestricted execution environments
TW200625097A (en) * 2004-11-17 2006-07-16 Sandbridge Technologies Inc Data file storing multiple date types with controlled data access
US8595459B2 (en) 2004-11-29 2013-11-26 Rambus Inc. Micro-threaded memory
US20060136681A1 (en) * 2004-12-21 2006-06-22 Sanjeev Jain Method and apparatus to support multiple memory banks with a memory block
WO2007014261A2 (en) * 2005-07-25 2007-02-01 Sysair, Inc. Cellular pc modem architecture and method of operation
WO2007033203A2 (en) 2005-09-13 2007-03-22 Freescale Semiconductor Inc. Multi-threaded processor architecture
US7788468B1 (en) 2005-12-15 2010-08-31 Nvidia Corporation Synchronization of threads in a cooperative thread array
US7861060B1 (en) * 2005-12-15 2010-12-28 Nvidia Corporation Parallel data processing systems and methods using cooperative thread arrays and thread identifier values to determine processing behavior
US7584342B1 (en) * 2005-12-15 2009-09-01 Nvidia Corporation Parallel data processing systems and methods using cooperative thread arrays and SIMD instruction issue
US20070260841A1 (en) 2006-05-02 2007-11-08 Hampel Craig E Memory module with reduced access granularity
JP5076418B2 (ja) * 2006-09-19 2012-11-21 ソニー株式会社 共有メモリ装置
US8819099B2 (en) * 2006-09-26 2014-08-26 Qualcomm Incorporated Software implementation of matrix inversion in a wireless communication system
US9110726B2 (en) * 2006-11-10 2015-08-18 Qualcomm Incorporated Method and system for parallelization of pipelined computations
US7596668B2 (en) * 2007-02-20 2009-09-29 International Business Machines Corporation Method, system and program product for associating threads within non-related processes based on memory paging behaviors
EP2210171A1 (en) * 2007-11-05 2010-07-28 Sandbridge Technologies, Inc. Method of encoding register instruction fields
EP2250539A1 (en) * 2008-01-30 2010-11-17 Sandbridge Technologies, Inc. Method for enabling multi-processor synchronization
KR20100133964A (ko) * 2008-03-13 2010-12-22 아스펜 액퀴지션 코포레이션 유효 어레이를 비활성화함으로써 전력을 절약하기 위한 방법
JP2011530744A (ja) 2008-08-06 2011-12-22 アスペン・アクイジション・コーポレーション 停止可能および再始動可能dmaエンジン
CN101739242B (zh) * 2009-11-27 2013-07-31 深圳中微电科技有限公司 一种流数据处理方法及流处理器
CN102141905B (zh) * 2010-01-29 2015-02-25 上海芯豪微电子有限公司 一种处理器体系结构
US9268719B2 (en) 2011-08-05 2016-02-23 Rambus Inc. Memory signal buffers and modules supporting variable access granularity
GB2519813B (en) 2013-10-31 2016-03-30 Silicon Tailor Ltd Pipelined configurable processor
US9436501B2 (en) * 2014-08-26 2016-09-06 International Business Machines Corporation Thread-based cache content saving for task switching
CN104461961B (zh) * 2014-11-20 2018-02-27 上海宝存信息科技有限公司 一种多核多线程的闪存装置及闪存控制方法
CN114968358A (zh) * 2020-10-21 2022-08-30 上海壁仞智能科技有限公司 配置向量运算系统中的协作线程束的装置和方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0553158B1 (en) * 1990-10-19 1994-12-28 Cray Research, Inc. A scalable parallel vector computer system
US6128720A (en) 1994-12-29 2000-10-03 International Business Machines Corporation Distributed processing array with component processors performing customized interpretation of instructions
US5682491A (en) 1994-12-29 1997-10-28 International Business Machines Corporation Selective processing and routing of results among processors controlled by decoding instructions using mask value derived from instruction tag and processor identifier
US5649135A (en) 1995-01-17 1997-07-15 International Business Machines Corporation Parallel processing system and method using surrogate instructions
US5659785A (en) 1995-02-10 1997-08-19 International Business Machines Corporation Array processor communication architecture with broadcast processor instructions
GB2311882B (en) * 1996-04-04 2000-08-09 Videologic Ltd A data processing management system
US6317872B1 (en) * 1997-07-11 2001-11-13 Rockwell Collins, Inc. Real time processor optimized for executing JAVA programs
US6263404B1 (en) * 1997-11-21 2001-07-17 International Business Machines Corporation Accessing data from a multiple entry fully associative cache buffer in a multithread data processing system
US6079010A (en) 1998-03-31 2000-06-20 Lucent Technologies Inc. Multiple machine view execution in a computer system
US6317821B1 (en) 1998-05-18 2001-11-13 Lucent Technologies Inc. Virtual single-cycle execution in pipelined processors
US6269425B1 (en) * 1998-08-20 2001-07-31 International Business Machines Corporation Accessing data from a multiple entry fully associative cache buffer in a multithread data processing system
US6260189B1 (en) 1998-09-14 2001-07-10 Lucent Technologies Inc. Compiler-controlled dynamic instruction dispatch in pipelined processors
US6256725B1 (en) 1998-12-04 2001-07-03 Agere Systems Guardian Corp. Shared datapath processor utilizing stack-based and register-based storage spaces
US6341338B1 (en) * 1999-02-04 2002-01-22 Sun Microsystems, Inc. Protocol for coordinating the distribution of shared memory
US6230251B1 (en) 1999-03-22 2001-05-08 Agere Systems Guardian Corp. File replication methods and apparatus for reducing port pressure in a clustered processor
US6282585B1 (en) 1999-03-22 2001-08-28 Agere Systems Guardian Corp. Cooperative interconnection for reducing port pressure in clustered microprocessors
US6269437B1 (en) 1999-03-22 2001-07-31 Agere Systems Guardian Corp. Duplicator interconnection methods and apparatus for reducing port pressure in a clustered processor
US6351808B1 (en) * 1999-05-11 2002-02-26 Sun Microsystems, Inc. Vertically and horizontally threaded processor with multidimensional storage for storing thread data
US20020103990A1 (en) * 2001-02-01 2002-08-01 Hanan Potash Programmed load precession machine

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101305490B1 (ko) * 2005-10-01 2013-09-06 삼성전자주식회사 메모리 맵핑 방법 및 장치

Also Published As

Publication number Publication date
EP1550032A2 (en) 2005-07-06
AU2003282511A8 (en) 2004-05-04
HUE046355T2 (hu) 2020-03-30
US6925643B2 (en) 2005-08-02
US20040073772A1 (en) 2004-04-15
EP1550032B1 (en) 2019-09-11
KR100980536B1 (ko) 2010-09-06
EP1550032A4 (en) 2008-03-12
JP2006502507A (ja) 2006-01-19
CN1332303C (zh) 2007-08-15
ES2758623T3 (es) 2020-05-06
WO2004034218A2 (en) 2004-04-22
CN1708747A (zh) 2005-12-14
AU2003282511A1 (en) 2004-05-04
WO2004034218A3 (en) 2004-06-03

Similar Documents

Publication Publication Date Title
KR100980536B1 (ko) 멀티스레디드 프로세서에서 스레드-방식 메모리 액세스를위한 방법 및 장치
KR100988955B1 (ko) 멀티스레디드 프로세서에서 레지스터 파일 포트 감소를위한 방법 및 장치
KR100991912B1 (ko) 토큰 트리거 방식 멀티스레딩을 위한 방법 및 장치
KR101295569B1 (ko) 쓰레드 당 다중의 동시적 파이프라인을 갖는 멀티쓰레드 프로세서
EP1442374B1 (en) Multi-core multi-thread processor
US6963962B2 (en) Memory system for supporting multiple parallel accesses at very high frequencies
WO2015059362A1 (en) Floating-point supportive pipeline for emulated shared memory architectures
US20070300044A1 (en) Method and apparatus for interfacing a processor and coprocessor
Jeon et al. Locality-aware gpu register file
US20080141252A1 (en) Cascaded Delayed Execution Pipeline
US6119220A (en) Method of and apparatus for supplying multiple instruction strings whose addresses are discontinued by branch instructions
US20190004950A1 (en) Memory node with cache for emulated shared memory computers
JP4068828B2 (ja) 統合型分離型切替えキャッシュメモリ及び該キャッシュメモリを備えたプロセッサシステム
JPH10116191A (ja) 圧縮命令用バッファを備えたプロセッサ
Mekhiel Parallel Vector Processing Using Multi Level Orbital DATA
JP3299663B2 (ja) 演算装置
Esfeden Locality-aware GPU Register File

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
FPAY Annual fee payment

Payment date: 20130729

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140730

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160629

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180628

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20190624

Year of fee payment: 10