KR100388550B1 - 멀티쓰레드 컴퓨터 프로세서의 쓰레드 능력 변경 - Google Patents

멀티쓰레드 컴퓨터 프로세서의 쓰레드 능력 변경 Download PDF

Info

Publication number
KR100388550B1
KR100388550B1 KR10-2001-0047693A KR20010047693A KR100388550B1 KR 100388550 B1 KR100388550 B1 KR 100388550B1 KR 20010047693 A KR20010047693 A KR 20010047693A KR 100388550 B1 KR100388550 B1 KR 100388550B1
Authority
KR
South Korea
Prior art keywords
thread
memory
register
multithreaded
threads
Prior art date
Application number
KR10-2001-0047693A
Other languages
English (en)
Other versions
KR20020014694A (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 KR20020014694A publication Critical patent/KR20020014694A/ko
Application granted granted Critical
Publication of KR100388550B1 publication Critical patent/KR100388550B1/ko

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/18Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
    • G11C29/26Accessing multiple arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing
    • 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
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/78Masking faults in memories by using spares or by reconfiguring using programmable devices
    • G11C29/80Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout
    • G11C29/816Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout
    • G11C29/818Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout for dual-port memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0401Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals in embedded memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/88Masking faults in memories by using spares or by reconfiguring with partially good memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/16Multiple access memory array, e.g. addressing one storage element via at least two independent addressing line groups

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Executing Machine-Instructions (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Microcomputers (AREA)

Abstract

멀티쓰레드 프로세서(multithreaded processor)에서, 하나 이상의 쓰레드(thread)를 선택적으로 디스에이블할 수 있는 방법과 장치가 제공된다. 멀티쓰레딩이 컴퓨터 아키텍쳐의 표준 패러다임이 되어감에 따라, 소정 개수의 쓰레드를 지원하도록 코딩되어 있지 않은 운영 체제를 이용하는 경우와 같이 결함있는 쓰레드의 디스에이블을 보장하고 이 쓰레드에 연관된 결함있는 레지스터/어레이를 검사해야 할 경우가 있다. 따라서, 각 쓰레드의 기능을 독립적으로 검사하여 어떤 쓰레드가 결함있는 레지스터/어레이를 갖는지를 분별하는 방법이 제공된다. 결함있는 경우 또는 다른 이유로 인해 소정의 쓰레드에 속하는 레지스터/어레이로의 액세스를 선택적으로 디스에이블하는 방법 및 장치가 제공된다. 본 발명의 특징은, 멀티쓰레드 레지스터/어레이에서 개개의 기억 소자의 디스에이블을 허용하며 고장난 쓰레드에 연관된 하드웨어 레지스터 또는 하드웨어 레지스터 내의 개개의 비트로의 액세스를 디스에이블하는 것을 허용한다. 디스에이블된 쓰레드에 대한 데이타와 명령어를 다른 쓰레드들로 방향전환하는 기법들이 사용될 수 있다. 바람직하게는 프로세서가 판매되기 이전에 검사가 수행되고 레지스터/어레이로의 액세스를 디스에이블하는 상기 방법이 이용된다.

Description

멀티쓰레드 컴퓨터 프로세서의 쓰레드 능력 변경{CHANGING THE THREAD CAPACITY OF A MULTITHREADED COMPUTER PROCESSOR}
본 발명은 대체로 멀티쓰레드 컴퓨터 처리에 관한 것으로, 보다 구체적으로는, 하드웨어 멀티쓰레드 컴퓨터 프로세서가 실행할 수 있는 쓰레드의 개수를 변경하는 방법에 관한 것이다.
하드웨어 멀티쓰레드 컴퓨터 프로세서는, 설계된 하드웨어 프로세서 내의 하나 이상의 쓰레드의 상태를 프로세서 코어 내에 유지한다. 고유 쓰레드에 각각 연관되어 있는 하드웨어 레지스터들을 변경시키는 것만으로 수개의 쓰레드가 멀티쓰레드 프로세서에서 실행될 수 있다. 프로세서는, 예를 들어, 보다 먼 캐쉬나 메모리로부터 데이타나 명령어를 기다리는 등으로 인해 유휴 상태에 있을 때에, 매 머신 싸이클마다 레지스터들을 변경시키거나 레지스터들을 스위칭, 즉 쓰레드를 전환시킬 수도 있다.
최근에, 범용 레지스터 또는 특수 목적 레지스터 및 다른 다중쓰레딩 메모리 어레이와 같은 프로세서의 레지스터들은 판독 독립성을 제거함으로써 멀티쓰레드용으로 전용되어 왔다. 멀티쓰레드 레지스터/어레이들은 매트릭스로 배열되어 있는 기억 셀들을 가진다. 각각의 기억 셀은 다수의 기억 소자를 가지며, 각각의 기억 소자는 고유한 동작 쓰레드(unique thread of operation)와 연관되어 있다. 하드웨어 멀티쓰레드 처리는 탁월한 성능 기대치를 가지고 있어 컴퓨터 아키텍쳐의 표준 패러다임이 되어 가고 있다.
그러나, 프로세서 내의 하나 이상의 쓰레드를 디스에이블시킬 필요가 있다. 이러한 경우는, 멀티쓰레드 프로세서를 싱글-쓰레드 프로세서로서 기능하도록 할 필요가 있는 때에 발생한다. 멀티쓰레드 프로세서를 싱글-쓰레드 프로세서로서 기능하도록 할 필요가 있는 경우의 예는, 제조 직후 고객에게 판매하기 이전에 프로세서 설계를 검사하는 프로세서 훈련(bring-up) 테스트 동안이다. 싱글-쓰레드 처리가 바람직한 또 다른 예는, 프로세서가 멀티쓰레딩 능력을 이용하도록 프로그램되어 있지 않은 운영 체제에서 사용되는 때이다.
멀티쓰레드 프로세서의 하나 이상의 쓰레드를 디스에이블시키는 것이 바람직한 역시 또 다른 예는, 멀티쓰레드 레지스터/어레이 내에 결함이 발생하여 컴퓨터 고장을 초래하는 때이다. 부품이 제작 및 조립되고 난 후 컴퓨터의 고장을 막기 위해, 많은 제조자들은 소비자에게 컴퓨터가 팔리기 전에 프로세서 및 메모리를 검사하여 고장이 있는 컴퓨터 부품을 제거한다. 프로세서 고장의 한 유형은 프로세서 코어 내의 범용 및 특수 목적 레지스터의 AC 결함, 및 정상 사용중인 부품에 압력을 가해서 유발되는 컴퓨터 메인 랜덤 액세스 메모리의 AC 결함때문이다. 또한, 프로세서의 레지스터/어레이들은, 필요한 시간 동안 비트를 포착 및 유지하는 디지털 기억 장치의 능력을 검사하는 LBIST(Logic Built-in Self Test) 및 ABIST(Array Built-in Self Test)를 경험한다.
현재, 멀티쓰레드 프로세서는, 이들 검사중 하나에 실패하면 폐기된다.
그러나, 프로세서의 고장이 단지 하나 또는 수개의 쓰레드 때문이고 나머지 쓰레드들은 정상적으로 동작할 수도 있다. 따라서, 멀티쓰레드 프로세서는 복수개의 쓰레드를 처리할 수는 없어도 수개 또는 하나의 쓰레드는 처리할 수도 있다. 프로세서는, 저하된 능력을 갖지만 판매하여 회수할 수 있는 가치가 여전히 있다. 프로세서를 폐기하면 이 가치는 모두 상실된다.
따라서, 싱글-쓰레드 모드 또는 감소된 쓰레드 모드에서 처리할 수 있는 프로세서의 능력을 유지하면서 멀티쓰레드 프로세서에서 실행가능한 쓰레드의 개수를감소시키는 것이 산업상 필요성이 있다. 나아가, 감소된 능력을 가진채 판매 및 이용될 수 있고 결함있는 기억 셀을 갖지 않는 나머지 쓰레드(들)의 멀티쓰레드 능력 또는 통상의 싱글-쓰레드 능력을 수행할 수 있도록 감소된 쓰레드 능력의 프로세서들을 구제할 필요가 있다.
또한, 소비자에게 컴퓨터가 판매되기 이전에 멀티쓰레드 기억 소자들을 갖는 멀티쓰레드 레지스터 및/또는 메모리 어레이 내의 결함을 검출하는 것이, 멀티쓰레드 컴퓨터 산업 분야에서 필요하다. 만일 고장난 쓰레드와 연관되어 있는 멀티쓰레드 메모리나 레지스터 내의 기억 소자들만 프로세서가 이용할 수 없도록 한다면, 프로세서 그 자체는 폐기되지 않아도 될 것이다. 결함있는 기억 소자와 연관되어 있는 쓰레드의 쓰레드 처리는 올바르게 동작하는 쓰레드의 기억 소자들로 방향전환시킬 수 있다.
당업자에게는 명백한 이러한 필요성 및 다른 필요성은 복수개의 쓰레드를 실행할 수 있는 하드웨어 멀티쓰레드 컴퓨터 처리 시스템의 쓰레드 능력을 변경시키는 방법에 의해 만족될 수 있다. 이 방법은, 각각의 쓰레드와 고유하게 연관되어 있는 레지스터/어레이의 고장을 격리시킬 수 있는 검사를 수행하는 단계와; 적어도 하나의 레지스터/어레이의 고장을 검출하고 고장난 레지스터/어레이가 고유하게 연관되어 있는 쓰레드를 기록하는 단계와; 고장난 레지스터/어레이를 갖는 쓰레드들에 연관되어 있는 모든 레지스터/어레이로의 액세스를 디스에이블하는 단계와; 고장이 검출되지 않은 다른 쓰레드들에 연관되어 있는 모든 레지스터/어레이로의 액세스를 유지하는 단계를 포함한다. 각각의 쓰레드의 고유 레지스터/어레이의 고장을 격리시킬 수 있는 검사를 수행하는 단계는, 레지스터/어레이의 중요 부분에 압력을 가한채 고객의 성능 요청을 반영하는 코딩된 명령어를 실행하는 단계를 포함한다. 이러한 검사는 로직 내장형 자체 검사(LBIST) 및/또는 어레이 내장형 자체 검사(ABIST)를 더 포함할 수 있다.
레지스터/어레이는 기억 셀들을 갖는 멀티쓰레드 레지스터/어레이를 포함할 수도 있다. 각각의 기억 셀은 하나의 쓰레드에 고유하게 연관된 하나의 기억 셀을 갖는다.
고장난 레지스터/어레이를 갖는 쓰레드에 연관되어 있는 모든 레지스터/어레이로의 액세를 디스에이블하는 단계는 고장난 레지스터/어레이를 갖는 쓰레드에 속하는 레지스터/어레이로의 판독/기록 포트를 차단하도록 퓨즈를 절단하는 단계를 더 포함할 수도 있다. 다른 실시예에서, 적어도 하나의 고장난 레지스터/어레이에 고유하게 연관되어 있는 쓰레드에 연관된 모든 레지스터/어레이로의 액세스를 디스에이블하는 단계는, 그 쓰레드에 대한 하드웨어 쓰레드 전환 제어 레지스터 내의 복수개의 쓰레드 전환 제어 이벤트들중 임의의 이벤트를 디스에이블하는 단계를 포함할 수 있다. 역시 또 다른 방법으로서, 적어도 하나의 고장난 레지스터/어레이가 고유하게 연관되어 있는 쓰레드에 연관된 모든 레지스터/어레이로의 액세스를 디스에이블하는 단계는 마이크로코드 명령어를 실행시킴으로써 쓰레드 스위치 명령어를 생성하는 단계를 더 포함하는 것을 생각해 볼 수 있다.
본 발명은 복수개의 쓰레드를 실행할 수 있는 하드웨어 멀티쓰레드 컴퓨터처리 시스템의 쓰레드 능력을 변경하는 방법도 역시 고려하고 있다. 이 방법은, 멀티쓰레드 레지스터/어레이 내의 기억 소자의 고장을 격리하는 기능 검사를 수행하는 단계-멀티쓰레드 레지스터/어레이는 기억 셀 매트릭스 형태로 배열되어 있으며, 각각의 기억 셀은 복수개의 쓰레드들 각각에 고유하게 대응하는 복수개의 기억 소자들로 구성됨-와; 적어도 하나의 고장난 기억 소자에 연관되어 있는 특정 쓰레드에 고유하게 대응하는 모든 기억 소자들을 디스에이블하는 단계와; 특정 쓰레드에 대한 데이타를 다른 쓰레드들에 고유하게 연관되어 있는 기억 소자들로 방향전환하는 단계를 포함한다.
특정 쓰레드에 연관되어 있는 모든 기억 소자들을 디스에이블하는 상기 단계는, 멀티쓰레드 컴퓨터에서 마이크로코드 명령어를 실행하여 다른 쓰레드들에 연관되어 있는 개개의 기억 소자들중 다른 소자들을 선택함으로써 쓰레드 전환 신호를 생성하는 단계를 포함한다.
다른 방법으로서, 특정 쓰레드에 연관되어 있는 모든 기억 소자들을 디스에이블하는 상기 단계는, 퓨즈를 절단하는 단계를 포함한다. 퓨즈는 특정 쓰레드를 위한 모든 기억 소자들에 접속된 모든 판독/기록 포트들에 위치한다. 퓨즈는 쓰레드 전환 이벤트 제어 레지스터에 위치할 수 있으며 특정 쓰레드를 위한 쓰레드 전환 이벤트 제어 레지스터의 모두 또는 일부를 디스에이블할 수도 있다; 또는 퓨즈는, 쓰레드 전환 이벤트 제어 레지스터 내의 개개의 비트-상기 개개의 비트는 특정 쓰레드를 디스에이블시킴-들에 접속될 수도 있다. 또한, 퓨즈는 특정 쓰레드에 속하는 쓰레드 상태 레지스터에 접속될 수도 있다; 그리고, 퓨즈는 특정한 쓰레드를 불활성 상태로 표시하기 위해 쓰레드 상태 레지스터의 개개의 비트들에 접속될 수도 있다.
또한 본 발명은 적어도 하나의 동작 쓰레드를 디스에이블할 수 있는 멀티쓰레드 컴퓨터 시스템도 역시 고려하며, 적어도 하나의 멀티쓰레드 컴퓨터 프로세서와; 멀티쓰레드 컴퓨터 프로세서 내의 복수개의 동작 쓰레드들 각각에 대한 적어도 하나의 쓰레드 전환 제어 레지스터와; 다중 쓰레드 기억셀-각각의 기억 셀이 적어도 하나의 동작 쓰레드에 고유하게 연관되어 있음-들을 갖는 적어도 하나의 하드웨어 멀티쓰레드 메모리/레지스터 어레이와; 적어도 하나의 멀티쓰레드 컴퓨터 프로세서에 접속된 메인 메모리와; 복수개의 데이타 기억 장치, 하나 이상의 외부 통신 네트워크, 및 컴퓨터 프로세서로/로부터 사용자 입력을 제공하기 위한 하나 이상의 입력/출력 장치에 상기 멀티쓰레드 컴퓨터 프로세서 및 메인 메모리를 접속시키는 버스 인터페이스를 포함한다. 나아가, 장치는 프로세서의 초기 훈련(bring-up) 동안에 적어도 하나의 멀티쓰레드 컴퓨터 프로세서 내의 적어도 하나의 동작 쓰레드의 기능 검사를 수행하는 기능 검사 생성기와; 기능 검사중인 적어도 하나의 동작 쓰레드에 고유하게 연관되어 있는 기억 소자의 고장을 검출하는 기억 소자 고장 검출기와; 기능 검사중인 적어도 하나의 동작 쓰레드에 연관된 멀티쓰레드 기억 셀 내의 모든 기억 소자들을 디스에이블시키기 위한 기억 소자 디스에이블러를 더 포함한다.
본 발명은, 복수개의 쓰레드를 처리하기 위한 수단과; 멀티쓰레드 프로세서 내의 하드웨어 레지스터들 내에 있는 복수개의 쓰레드 각각의 상태를 저장하는 수단과; 개개의 쓰레드에 속하는 임의의 메모리 기억 소자가 결함이 있는지를 검출하기 위한 수단과; 결함있는 메모리기억 소자로의 액세스를 디스에이블하기 위한 수단과; 결함없는 다른 메모리 기억 소자들을 유지하기 위한 수단과; 결함있는 메모리 기억 소자에 속하는 개개 쓰레드의 처리와 기억을 결함있는 메모리 기억 소자를 갖지 않는 적어도 하나의 다른 쓰레드로 방향전환하기 위한 수단을 포함하는 멀티쓰레드 프로세서도 역시 고려하고 있다.
도 1은 멀티쓰레드 기억 소자의 단순화된 블럭도.
도 2는 멀티쓰레드 기억 셀의 단순화된 블럭도.
도 3은 도 2의 멀티쓰레드 기억 셀의 보다 상세한 블럭도.
도 4는 도 3의 멀티쓰레드 기억 셀의 개략도.
도 5는 멀티쓰레드 기억셀이 결함이 있는지를 검출하기 위한 프로세스의 단순화된 흐름도.
도 6은 본 발명의 한 실시예에 따라 쓰레드 능력을 변경하는 능력을 갖는 멀티쓰레드 메모리 레지스터/어레이의 구성요소들의 단순화된 블럭도.
도 7은 레지스터/어레이의 쓰레드 능력을 변경시키기 위해 멀티쓰레드 메모리 레지스터/어레이에서 사용될 수 있는 퓨즈북의 회로도.
본 발명의 양호한 실시예에 따라 선택적으로 디스에이블될 수 있는 멀티쓰레드 기억셀과 더불어 레지스터를 갖는 컴퓨터 시스템(100)의 주요 하드웨어 구성요소들이 도 1에 도시되어 있다. 중앙 처리 장치(CPU: 101A, 101B)는 메인 메모리(102)로부터의 명령어와 데이타에 관한 기본적인 머쉰 처리를 수행하는데 있어서 하드웨어 멀티쓰레드 능력을 지원한다. 각각의 CPU(101A 및 101B)는 각각의 내부 레벨1 명령어 캐쉬(106A, 106B: L1 I-캐쉬)와 레벨1 데이타 캐쉬(107A, 107B: L1 D-캐쉬)를 포함하며, 각각의 L1 I-캐쉬는 CPU에 의해 실행될 명령어를 저장한다. 각각의 L1 D-캐쉬는 CPU가 처리할 명령어가 아닌 다른 데이타를 저장한다. 각각의 CPU(101A, 101B)는 명령어와 데이타 모두를 보관하는데 사용될 수 있는 각각의 레벨2 캐쉬(L2-캐쉬)에 결합된다. 메모리 버스(109)는 CPU와 메모리 사이에서 데이타를 전송한다. CPU(101A,101B) 및 메모리도 역시 메모리 버스(109)와 버스 인터페이스(105)를 통해 시스템 버스(110)와 통신한다. 다양한 I/O 처리 장치(IOP, 111-115)는 시스템 I/O 버스(110)에 부착되어 직접 액세스 저장장치(DAS), 테이프 드라이브, 워크스테이션, 프린터, 및 원격 장치나 다른 컴퓨터 시스템과 통신하기 위한 원격 통신 라인과 같은 다양한 저장 및 I/O 장치들과의 통신을 지원한다. 간단히하기 위해, CPU, L1 I-캐쉬, L1 D-캐쉬, 및 L2 캐쉬는 각각 참조번호(101, 106, 107, 및 108)에 의해 일반적으로 표기되어 있다. 도 1에는 다양한 버스들이 도시되어 있지만, 개념적인 수준에서 다양한 통신 경로를 표현하기 위한 것으로 버스의 실제 물리적 구성은 달라질 수 있으며 실제는 보다 복잡하다는 것을 당업자는 이해할 것이다. 나아가, 도1은 단지 시스템의 구성의 한 예로서 도시한 것이며 컴퓨터 시스템 내의 구성 요소들의 실제 개수, 유형 및 구성은 다양하다는 것을 이해할 것이다. 특히, 본 발명은 하나의 멀티쓰레드 CPU를 갖는 시스템, 또는 복수개의 멀티쓰레드 CPU를 갖는 시스템에서 사용될 수도 있다.
각각의 CPU(101)은 복수개의 쓰레드의 상태를 유지하는 능력이 있다. CPU(101)은 전형적으로 데이타를 저장하기 위한 복수개의 범용 레지스터와, 상태, 중간 결과, 명령어, 및 프로세서의 상태를 집합적으로 결정하는 다른 정보를 저장하기 위한 다양한 특별 목적 레지스터를 포함한다. 각각의 CPU(101) 내에는, 쓰레드의 우선 순위, 그 활성 및 불활성 상태등에 관한 정보를 저장하는 쓰레드 상태 레지스터(103A 및 103B)가 각각의 쓰레드에 대해 있다. 2-쓰레드 시스템을 가정하여 2개의 쓰레드 상태 레지스터가 도1에 도시되어 있다; 그러나, 프로세서는 2개 이상의 쓰레드의 상태를 유지하고 처리할 수도 있다. 쓰레드 상태 레지스터는 활성 쓰레드 신호를 생성한다. 하드웨어 쓰레드 전환 제어 레지스터(105A 및 105B)는 쓰레드 전환을 생성하는 이벤트를 선택하도록 프로그램될 수 있다. 각각의 쓰레드 전환 제어 이벤트는 쓰레드 전환 제어 레지스터 내에 별도의 인에이블 비트를 가진다. 각각의 쓰레드에 대해 별도의 쓰레드 전환 제어 레지스터가 있을 수도 있지만, 그 보다는 일반적으로 개개의 쓰레드에 대응하는 레지스터의 개개의 비트 회로들이 칩상에서 물리적으로 인터리빙된다. 즉, 쓰레드0에 대한 레지스터의 비트0 부분은, 다른 쓰레드 각각에 대한 레지스터의 비트0 부분들에 물리적으로 인접해 있다; 각각의 비트1 회로는 서로 물리적으로 인접해 있다. 하나의 쓰레드 전환 제어 레지스터 내의 하나의 쓰레드에 대한 쓰레드 전환 제어 이벤트는 다른 쓰레드에 연관되어 있는 쓰레드 전환 제어 이벤트와 동일할 필요가 없으며 임의의 다른 쓰레드 전환 제어 레지스터에서의 이벤트와도 동일할 필요가 없다. 쓰레드 전환 제어 레지스터는 종래 기술에서 공지된 바와 같이 서비스 프로세서에 의해 기록될 수 있다. 쓰레드 전환 제어 레지스터의 내용은 멀티쓰레드 프로세서에서 쓰레드 전환의 생성을 인에이블 또는 디스에이블하기 위해 하드웨어 쓰레드 전환 제어기에 의해 사용된다. 레지스터 내의 값1은, 쓰레드 전환을 생성하도록 그 비트에 연관된 쓰레드 전환 제어 이벤트를 인에이블한다. 쓰레드 전환 제어 레지스터 내의 값0은, 그 비트에 연관된 쓰레드 전환 제어 이벤트가 쓰레드 전환을 생성하는 것을 디스에이블한다. 비트 22:29에서의 값0은 그 비트에 연관된 쓰레드를 디스에이블할 것이다. 물론, 실행 쓰레드 내에 있는 명령어는 특정한 쓰레드 또는 다른 쓰레드에 대한 쓰레드 전환 조건들 중 임의의 조거이나 모든 조건을 디스에이블할 수 있다. 하기의 표는, 쓰레드 전환 이벤트들과, 쓰레드 전환 제어 레지스터 내에 있는 해당 인에이블 비트들간의 관계를 제공하고 있다.
쓰레드 전환 제어 레지스터 비트 할당
(0) L1 데이타 캐쉬 페치 미스(data cache fetch miss)시에 전환
(1) L1 데이타 캐쉬 기억 미스(data cache store miss)시에 전환
(2) L1 명령어 캐쉬 미스(L1 instruction miss)시에 전환
(3) 명령어 TLB시에 전환
(4) L2 캐쉬 페치 미스시에 전환
(5) L2 캐쉬 기억장 미스시에 전환
(6) L2 명령어 캐쉬 미스시에 전환
(7) 데이타 TLB/세그먼트 룩어사이드 버퍼 미스시에 전환
(8) L2 캐쉬 미스시에 전환, L2 캐쉬 미스가 아니면 동면 쓰레드
(9) 쓰레드 전환 시간값 도달시에 전환
(10) L2 캐쉬 데이타 반환시에 전환
(11) IO 외부 액세스시에 전환
(12) 더블-X 기억 : 둘중 첫번째의 미스시에 전환*
(13) 더블 X 기억 : 둘중 두번째의 미스시에 전환*
(14) 멀티플/스트링 기억 : 임의 액세스의 미스시에 전환
(15) 멀티플/스트링 로딩 : 임의 액세스의 미스시의 전환
(16) 예약
(17) 더블-X 로드: 둘중 첫번째의 미스시에 전환*
(18) 더블-X 로드 : 둘중 두번째의 미스시에 전환*
(19) 머신 상태 레지스터(문제 상태) 비트 msr(pr)=1이면or 1,1,1명령어 시에 전환. msr(pr)에 독립된 소프트웨어 우선순위 변경 허용. 비트19가 1이면,or 1,1,1명령어는 낮은 우선순위를 설정. 비트19가 0이면,or 1,1,1명령어가 실행될 때 msr(pr)=0인 경우에만 우선순위가 로우(low)로 설정. 이후에 논의될 소프트웨어 우선순위변경을 참고.
(20) 예약
(21) 쓰레드 전환 우선순위 인에이블
(22:29) 쓰레드 인에이블-쓰레드당 1비트
(30:31) 포워드 프로그레스 계수
(32:63) 64비트 레지스터 구현을 위해 예약
* 더블-X 로드/기억은 더블워드 경계를 교차하는 기본 하프워드, 워드, 또는 더블워드의 로드 또는 기억을 말한다. 본 명세서에서의 더블-X 로드/기억은 복수개의 워드 또는 워드 스트링의 로드나 기억을 의미하는 것이 아니다.
멀티쓰레드 프로세서에 관한 추가적인 배경 정보는, 본 명세서에서 참고용으로 인용하는 "멀티쓰레드 컴퓨터 프로세서에서 쓰레드 손실에 대한 필드 방지"라는 제목의 출원(양수인 도켓 번호 ROC920000139); "멀티쓰레드 처리를 위한 마스타-슬레이브 래치 회로"라는 제목으로 1999년 11월 12일 출원된 시리얼 넘버 09/439,581호(양수인 도켓 번호 RO999-140)의 출원; "멀티쓰레드 프로세서용의 명령어 캐쉬"라는 제목으로 1999년 3월 10일 출원된 시리얼 넘버 09/266,133호(양수인 도켓 번호 RO998-277)의 출원; "멀티쓰레드 데이타 처리 시스템에서 멀티플 엔트리 완전 연관 캐쉬 버퍼로부터의 데이타 액세스"라는 제목으로 1997년 11월 21일 출원된 시리얼 넘버 08/976,533호(양수인 도켓 번호 RO997-182)의 출원; "리얼 어드레스 캐쉬 관리 장치 및 방법"이라는 제목으로 1997년 11월 10일 출원된 시리얼 넘버 08/968,706호(양수인 도켓 번호 RO997-155)의 출원; "다중쓰레드 프로세서에서 쓰레드 우선 순위의 변경"이라는 제목으로 1997년 10월 23일 출원된 시리얼 넘버 08/958,718호(양수인 도켓 번호 RO997-106호)의 출원; "멀티쓰레드 프로세서에서 쓰레드 전환 이벤트를 선택하기 위한 방법 및 장치"라는 제목으로 1997년 10월 23일 출원된 시리얼 넘버 08/958,716호(양수인 도켓 번호 RO997-104)의 출원; "멀티쓰레드 프로세서 시스템에서의 쓰레드 전환 제어라는 제목으로 1997년 10월 23일 출원된 시리얼 넘버 08/957,002호(양수인 도켓 번호 RO996-042)의 출원; "멀티쓰레드 프로세서에서 포워드 프로그레스를 보장하기 위한 장치 및 방법"이라는 제목으로 1997년 10월 23일 출원된 시리얼 넘버 08/956,875호(양수인 도켓 번호 RO997-105)의 출원; "멀티쓰레드 프로세서에서 쓰레드 전환을 강제하기 위한 방법 및 장치"라는 제목으로 1997년 10월 23일 출원된 시리얼 넘버 08/956,577호(양수인 도켓 번호 RO997-107)의 출원; "멀티쓰레드프로세서에서 명령어 및 관련된 페치 요청의 백그라운드 완료"라는 제목으로 1996년 12월 27일 출원된 시리얼 넘버 08/773,572호에 포함되어 있다. 상술한 출원들에 기술된 멀티쓰레드 프로세서는 거친 멀티쓰레딩(coarse-grained multithreading)의 구현이지만, 본 발명은 미세한 멀티쓰레딩에도 적용가능하다는 것을 이해하여야 한다.
멀티쓰레드 메모리 레지스터/어레이는 공통의 판독 데이타 버스를 갖는 종래의 2-쓰레드 메모리 어레이와 대조를 이룬다. 공통 판독 버스를 갖는 컴퓨터 아키텍쳐 패러다임에서는 판독 독립성이 필요하고 각 쓰레드의 데이타를 동시에 판독하기 위해 별개의 판독 디코더를 요구한다는 가정을 한다. 그러나, 최적화된 연결성과 최적으로 최소화된 트랜지스터 개수를 갖는 멀티쓰레드 메모리는 심각하게 부정적인 영향이 없이 판독 독립성을 제거함으로써 달성될 수 있다. 이는 2개 이상의 쓰레드를 위한 데이타가 동시에 요구되는 경우는 무시할 정도이기 때문이다. 도 2의 멀티쓰레드 기억셀은, 한번에 한 쓰레드만을 액세스할 수 있는 프로세서에 대해서는 판독 독립성이 무시할만한 기능적 특성이므로 실질적인 부정적 영향이 없이 판독 독립성을 제거하여 칩 표면적의 소모가 감소될 수 있다는 발견을 반영하고 있다. 쓰레드 선택기와 판독 포트를 위해, 각각의 쓰레드에 대해 별도의 판독 포트들을 형성하기 위해 필요했던 것보다는 적은 개수의 트랜지스터가 요구된다.
도 2는 본 명세서에서 참고용으로 인용하며 본 출원의 양수인에 의해 공동 소유된 미국 특허 제5,778,243호에 기술된 멀티쓰레드 기억 셀의 블럭도를 도시한다. 멀티쓰레드 기억셀(300)은 쓰레드0과 쓰레드1을 판독 포트(340)에 선택적으로 접속하기 위한 쓰레드 선택기(330)을 포함하는 멀티쓰레드 인터페이스 인터페이스를 가진다. 판독 포트(340)의 개수는 기능 유닛의 개수에 대응하며, 예를 들어, 기억 소자(320 및 322)로부터 판독할 수 있는 6~8개의 기능 유닛과 같이 대개 하나 이상이다. 기능 유닛의 한 예는, 정수, 논리 쉬프트, 필드 발췌 및/또는 유동 소수점 연산 및/또는 정수와 유동 소수점 숫자 표기간의 변환을 수행할 수 있는 산술 논리 유닛이다. 판독 동작을 위해, 각각의 기억 소자(320, 322)는 다음과 같이 기능 유닛에 접속된다: 기억 소자(320, 322)는 쓰레드 선택기(330)에 접속되고; 쓰레드 선택기(330)은 판독 포트(340)들 중 한 포트에 접속되고; 상기 한 포트는 디코더(도 2에는 도시되지 않음)에 접속되고; 디코더는 도 2에 도시되지는 않았지만 기능 유닛에 접속된다.
도 2는 쓰레드0을 위한 기록 포트(310) 및 쓰레드1을 위한 기록 포트(312)도 역시 포함한다. 기록 포트의 개수는 기능 유닛의 개수에 대응하며, 기록 소자에 기록할 수 있는 예를 들어 3~12개의 기능 유닛과 같이 대개 1개 이상이다; 쓰레드0을 위한 기억 소자(320)은 기록 포트(310) 및 쓰레드 선택기(330)에 접속되고, 쓰레드1을 위한 기억 소자(322)는 기록 포트(312)와 쓰레드 선택기(110)에 접속된다.
(도시되지 않은) 프로세서는 쓰레드0을 선택하도록 쓰레드 선택기(330)을 제어하여 기억 소자(320)의 데이타가 판독 포트(340)상에서 이용가능하도록 함으로써 기억 소자(320) 내의 데이타를 판독할 수 있다. 마찬가지로, 기억 소자(322) 내의 데이타를 판독하기 위해, 기억 소자(322)로부터의 라인을 선택하도록 쓰레드 선택기(330)을 프로세서가 제어하는 것이 필요하다.
도 3은 도 2의 실시예의 보다 상세한 블럭도를 도시한다. 도 3은 멀티쓰레드 기억 셀(410)으로부터 형성된 2-쓰레드 어레이(402)를 도시한다. 도 3의 2-쓰레드 어레이는 판독 디코더(430, 432, 436), 쓰레드0을 위한 기록 디코더(438), 쓰레드1을 위한 기록 디코더(440), 및 멀티쓰레드 기억셀(410)의 어레이(450)을 포함한다. 하나의 기억셀(410)에 대해 단 하나의 결선만이 도시되어 있으며, 다른 셀들에 대한 결선도 다들 동일하다.
기록 디코더(438, 440) 각각은 기록 어드레스 버스(418, 422)에 접속되며 각각 그 자신의 기록 쓰레드 선택 라인(416, 420)에 접속되어 있다. 이런 식으로, 쓰레드 선택은 2-쓰레드 레지스터(402)의 외부적으로 이루어진다. 대조적으로, 판독 디코더(430, 432, 434, 436)은 판독 어드레스 버스(412)에 접속되지만 판독 쓰레드 선택 라인(414)에 접속되어 있지 않다. 각각의 메모리 셀(410)은 판독 쓰레드 선택 라인(414)에 접속되어 어떤 쓰레드를 판독할 것인지에 대한 선택이 멀티쓰레드 기억 셀(410)의 외부가 아니라 내부에서 발생한다.
도 4는 도 2의 실시예의 개략도를 도시한다. 특히, 블럭들은 CMOS 트랜지스터로 형성된 것으로 도시되어 있지만, 본 발명은 NMOS, BINMOS, 바이폴라, SOI, GaAS, 등에도 해당된다. 제1 쓰레드를 위한 기억 소자(320)은 트랜지스터(510, 512, 514, 516, 518, 520)으로부터 형성되어 하나의 비트를 보관한다. 제1 쓰레드의 기록 포트(310)은, 하나 이상의 기능 유닛이 있을 수 있다고 상술했지만 기억 소자에 기록하는 기능 장치는 단 하나만 있다는 단순한 가정을 위해, 단지 하나의 포트만을 갖는 것으로 도시되어 있다. 기록 포트(310)은 트랜지스터(502, 504)로부터 형성되며 트랜지스터(502)의 게이트를 가로지른 쓰레드 인에이블 신호(522)에 의해 인에이블된다. 제2 쓰레드는, 트랜지스터(530, 532, 534, 536, 538, 540)으로부터 형성된 기억 소자(322)와 트랜지스터(506과 508)을 포함하는 기록 포트(312)를 가진다. 제2 쓰레드 인에이블 신호(526)은 트랜지스터(506)의 게이트에 접속된다. 쓰레드 선택기(330)은 트랜지스터(560, 562, 564, 566, 568, 570)으로부터 형성된다. 트랜지스터(560)의 게이트와 트랜지스터(566)의 게이트에 접속된 라인(550) 상의 신호 THB와, 트랜지스터(562)의 게이트와 트랜지스터(564)의 게이트에 접속된 라인(552) 상의 신호 THA의 상태에 기초하여, 쓰레드 선택기(330)은 제1 또는 제2 쓰레드를 선택한다. 판독 포트(340)은 2개의 포트(580 및 590)을 포함한다. 제1 포트(580)은 트랜지스터(582 및 584)로부터 형성되며, 제2 포트(590)은 트랜지스터(592 및 594)로부터 형성된다. 다시 한번, 각각의 인터페이스에 있는 포트의 개수는 예시적인 것이며, 실제로는 기억 소자로부터/기억 소자에 판독/기록할 수 있는 기능 유닛의 개수에 따라 달라질 것이다.
제조 후에, 멀티쓰레드 기억셀을 갖는 레지스터와 메모리 어레이가 검사된다. 몇가지 검사 절차가 있지만, 그 중 알려진 비트 시퀀스를 어레이에 입력하고 어레이의 출력을 비교하는 검사는 유일하게 LBIST와 ABIST 2가지 검사뿐이다. 제대로 동작하는 기능 메모리 어레이에서, 입력은 출력과 정합한다. 이들 시퀀스는 고속으로 수행될 수 있으며 고장이 있다면 고장 파라미터를 결정하기 위해 프로세서에게 "스트레스"를 주기 위해 많은 메모리 셀들을 동시에 연루시킬 수 있다. 이러한 종류의 검사는, 메모리 어레이의 중요한 부분을 수행시키기 위해 스트레스를 인가한 채 고객의 성능 요건을 반영하는 실제 코딩된 명령어들이 실행되는 기능 검사이다. 다시 한번 이들 검사는 프로세서가 고장여부 및 프로세서가 고장나는 때를 판별하기 위해 서로 다른 프로세서 속도에서 수행될 수 있다. 이와 같은 고장은 대개 멀티쓰레드 기억셀에서 비트값을 포착 및 보관할 수 없는 메모리 어레이와범용 및 특수 레지스터의 결과이다. 본 발명의 가장 중요한 특징은 별도의 쓰레드들과 연관된 개개의 기억셀들 내에 저장된 값을 검사하는 능력이다. 즉, 본 발명에서는, 각각의 쓰레드는 독립적으로 검사될 수 있다.
도 5는 멀티쓰레드 프로세서의 고장을 검출하는 방법의 간략화된 흐름도이다. 도 5는 고장이 발생할때까지 실제로 코딩된 명령어를 실행하는 기능 검사를 도시하고 있지만, 본 발명에서, 예를 들어, ABIST, LBIST와 같은 다른 검사들이 메모리 어레이를 검사하기 위해 사용될 수 있다. 전형적으로, 이들 검사는 제조 후 및/또는 현장에서 프로세서 시스템의 정상 동작 동안에 주기적으로 수행된다. 양호한 실시예에서, 이들 검사는 초기 훈련(bring-up) 동안, 즉, 프로세서 칩이 제조된 후 아직 컴퓨터 내에 조립되지 않았으며 소비자에게 판매도 되지인 않은 동안에 수행된다. 단계(600)에서 시작하여, 프로세서는 단계(610)으로 진행하고 거기서 활성 쓰레드가 제1 쓰레드로 설정된다. 이것은 CPU 내의 쓰레드 상태 레지스터에 의해 수행될 수 있다. 그 다음, 단계(612)에서, 활성 쓰레드의 명령어가 프로세서에서 실행된다. 단계(614)에서, 실행할 활성 쓰레드의 명령어들이 더 있는지가 검사된다. 명령어가 더 있다면, 프로세서는 단계(612)로 되돌아가서 그 쓰레드의 다음 명령어를 실행한다. 그러나, 단계(614)에서, 선택된 쓰레드에 대한 더 이상의 명령어가 없다면, 단계(616)에서, 선택된 쓰레드에 대한 명령어의 실행 동안에 고장이 있었는지의 여부가 질의된다.
단계(616)에서 레지스터 또는 메모리 어레이 고장이 없다면, 프로세스는 단계(618)에서와 같이 검사할 추가 쓰레드가 있는지를 검사한다. 만일 그렇다면, 단계(620)에서와 같이, 쓰레드 선택기는 다시 한번 단계(612)에서와 같이, 명령어의 실행을 검사하기 위한 또 다른 명령어를 선택하도록 프로그래밍된다. 그러나, 제1 쓰레드가 고장을 겪으면, 그 고장은 단계(630)에서 기록되고 단계(632)에서 시그널 에러 메시지가 발생된다. 이 때, 검사가 종료될 수 있는데, 이는 멀티쓰레드 레지스터 또는 메모리 어레이에서 기능 고장을 겪었기 때문이다. 다른 방법으로서, 모든 쓰레드가 검사될 때까지 활성의 선택된 쓰레드로서의 다음 쓰레드로 진행한다. 본 발명 이전에는, 고장이 있는 프로세서 칩은, 프로세서 내의 다른 쓰레드들은 정상적으로 실행할 수 있고 다른 쓰레드들을 위한 기억셀들이 충분히 기능한다 하더라도 모든 쓰레드들이 검사되지 않았기 때문에 폐기되었을 것이다.
이런 식으로, 도 5의 흐름도는 어떤 특정한 쓰레드가 기능마비인지를 확인함으로써 프로세서를 구제할 수 있는 이점이 있는 본 발명의 특징을 나타내고 있다. 멀티쓰레드 레지스터를 갖는 프로세서는 폐기될 필요가 없다. 그 대신, 결함있는 기억 소자들이 디스에이블되고 멀티쓰레드 메모리 어레이에서 고장을 겪고 있는 쓰레드에 대한 명령어 및 데이타는 동일하거나 다른 어레이나 레지스터 내의 다른 쓰레드들의 기억 소자로 방향전환될 수 있다.
2-쓰레드 레지스터/어레이 내의 하나의 쓰레드에만 연관되어 있는 결함있는 기억 소자들을 디스에이블시키는 하드웨어 장치 및 방법의 한 실시예가 도 6에 도시되어 있다. 멀티쓰레드 레지스터/어레이(450)은 2개의 쓰레드를 갖는 것으로 도시되어 있지만, 당업자라면 2개 이상의 쓰레드에 대해서도 그 개념과 하드웨어는 용이하게 확장될 수 있다는 것을 이해할 것이다. 본 발명의 양호한 실시예에 따른수정예는, 하드웨어 로직과 연관된 복수개의 퓨즈북 및 멀티플렉서를 포함한다. 퓨즈북 내의 퓨즈들은, 디지털 신호 "1" 또는 "0"을 구동하도록 설정될 수 있으며 전형적으로 이들 값은 한번 설정되면 변경될 수 없다.
도 6을 참조하면, 쓰레드 선택 퓨즈북이라 불리는 제1 퓨즈북(710)은 출력 신호 F1(712)를 멀티플렉서(750) 내에 생성한다. 또한, 멀티플렉서(750)으로의 입력은 쓰레드 상태 레지스터에 의해 생성된 활성 쓰레드 신호(714)이다. 멀티플렉서(750)으로의 제3 신호 F0(732)는 결함 소자 퓨즈북이라 불리는 제2 퓨즈북(730)으로부터 유도된다. 결함 소자 퓨즈북은, 예를 들어 도5의 단계(630)으로부터 기능 검사중 결함있는 기억 소자가 검출되면 값 "1"을 갖는 신호 F0(732)를 출력한다. 쓰레드 선택 퓨즈북(710)은 기억 소자들이 결함이 없는 쓰레드에 대응하는 값을 갖는 신호 F1(712)를 출력하며, 아울러 훈련(bring-up) 동안에 또는 프로세서의 판매 이전의 어느 때에 수행된 기능 검사등의 결과를 수신한다. 활성 쓰레드 신호 AT(714)는, 활성 쓰레드가 처리되고 있으며 멀티쓰레드 기억셀의 레지스터/어레이(450)일 수 있는 레지스터/어레이로의 액세스를 원하고 있음을 가리킨다. 멀티플렉서로 구현될 수 있는 2-쓰레드 메모리 어레이용의 로직의 한 예에 따르면, 기록 또는 판독 포트의 디코더로의 출력 신호 ATOF(752)(활성 쓰레드나 퓨즈용)는 어떤 쓰레드가 멀티쓰레드 어레이에서 액세스를 하는지를 가리켜준다. 이 출력 신호는 또한 레지스터의 개개의 비트나 전체 어레이에 출력될 수도 있다. 예를 들어, 퓨즈북(710 및 730) 및 도 6에 도시된 바와 같이 정렬된 멀티플렉서(750)은 쓰레드 전환 제어 이벤트 레지스터의 개개의 비트 22:29에 접속되거나 특정한 쓰레드를 위한 쓰레드 전환 제어 이벤트 레지스터에 접속될 수 있다. 마찬가지로, 도 6의 퓨즈북 배열은, 쓰레드의 상태가 항상 불활성임을 표시하기 위해 각 쓰레드의 상태 레지스터의 포트들 또는 쓰레드 상태 레지스터의 개개의 비트들에 접속될 수 있다. 따라서, 그 결과는 레지스터에 그 쓰레드를 디스에이블시키는 것이다. 멀티쓰레드 레지스터/어레이 내에서 결함있는 어레이 또는 결함있는 기억 소자가 검출되면, 신호 F0가 1로 설정된다. 제대로 동작하는 기억 소자를 갖는 쓰레드가 제1 쓰레드이면, 신호 F1은 0일 것이다. 활성 쓰레드가 쓰레드0이고, 또한 로직 차트에서 값0이면, 출력 신호 ATOF0 및 메모리 셀이 액세스될 수 있다. 그러나, 만일 조건은 상기와 동일하지만 활성 쓰레드 신호가 쓰레드1을 위한 것이라면, 신호 F1과 신호 AT는 일치되지 않고 제2 쓰레드를 위한 기억 소자로의 액세스는 디스에이블된다. 따라서, 주어진 로직하에서, 결함있는 기억 소자가 검출되어 F0 신호가 1이고, 활성 쓰레드 신호 AT가 어떤 쓰레드가 제대로 동작하는 기억 소자를 갖는지를 가리켜주는 신호 F1과 불일치되는 때마다, 활성 쓰레드에 의해 요청되는 레지스터/어레이로의 액세스는 디스에이블된다.
도 7은 멀티쓰레드 레지스터/어레이의 하드웨어 내에 병합될 수 있는 퓨즈북의 한 예를 도시하고 있다. 퓨즈들은 실제로 다양하게 구현될 수 있으며 등가의 다른 퓨즈 및/또는 하드웨어 결선이 구현될 수 있다는 것을 당업자는 이해할 것이다. 네트 Set_Fusebook이 시동시에 활성화되어 디폴트로 출력값이 "1"이지만 값 "0"으로 강하되어 퓨즈북을 세트시킨다. 그 다음 네트 Set_Fusebook은 프로세서의 생존기간 동안에 값 "1"로 복귀한다. 퓨즈북의 세팅시에, Set_Fusebook은 0으로강하되어 트랜지스터 N1과 P1을 턴온시키고 트랜지스터 N3와 N2를 턴오프시킨다. 퓨즈가 절단되지 않았다면, Fuse_Net는 0으로 설정된다. N1이 온되면, Fuse_Latch는 Fuse_Net을 쇼트시켜 0이 되도록 하여 Fuse_Feedback이 인버터 I2를 지나 1이 되게끔 한다. 이러한 동작은 차례로 P2를 차단(shut off)하고 N4를 턴온하고 출력 신호 Fuse_Out이 인버터 I3을 지나 0이 되게끔 한다. Set_Fusebook이 하이(high)로 가면, 트랜지스터 N3와 N2는 활성화되지만 트랜지스터 N1과 P1은 비활성화된다. 이제 Fuse_Latch를 0에, Fuse_Feedback을 1에, Fuse_out을 0에 유지시키는 N3과 N4를 지나는 피드백 경로가 생겼다. 이 상태는, 시동시를 제외하고 Set_Fusebook이 1에 머물 때 전원 차단이 될때까지 유지된다.
그러나, 퓨저가 레이저나 전기적으로 절단되었다면, Fuse_Net는 트랜지스터 N2가 온(on)인 때, 즉, Set_Fusebook이 1인 때를 제외하고는 접지로의 경로를 갖지 않는다. 따라서, Set_Fusebook이 0으로 가면, Fuse_Net은 0의 부동상태가 되고 트랜지스터 N1과 P1은 온된다. P1은 트랜지스터 N1을 지나 Fuse_Net의 접지값을 극복하여 Fuse_Feedback을 0으로, Fuse_Latch와 Fuse_Net을 1로 만든다. Set_Fusebook이 1로 복귀하고 트랜지스터 P1과 N1이 비활성화될 때 Fuse_Latch는 1로 유지되고 Fuse_Feedback은 N4가 오프된 채 0에 유지되고 Fuse_Out은 1에 유지되도록, 트랜지스터 P2를 관통하는 어떠한 피드백 경로도 없다.
본 발명의 다양한 실시예가 상술되었지만, 이들은 예시적인 목적이지 제한적인 것은 아니며 다양한 변형이 가능하다는 것을 이해하여야 한다. 본 발명은 레이턴시 이벤트시에 쓰레드를 전환시키는 거친 멀티쓰레딩(coarse multithreading)으로 제한되는 것은 아니며 미세한 멀티쓰레딩에 포함될 수 있도록 수정될 수 있다. 게다가, 본 발명은 2개의 쓰레드만을 갖는 하드웨어 멀티쓰레드 프로세서에만 제한되는 것은 아니며 복수개의 쓰레드를 실행할 수 있는 프로세서들로 확장될 수 있다. 본 발명의 양호한 실시예들이 각각의 기억셀 내의 메모리마다 고유한 기억 소자를 갖는 멀티쓰레드 메모리 레지스터에 관하여 기술되었지만, 멀티쓰레드 프로세서의 쓰레드 능력을 변경시키는 특징은 각각의 쓰레드에 대해 별도의 레지스터를 갖는 멀티쓰레드 프로세서에도 적용될 수 있다. 레지스터를 디스에이블시키기 위해 퓨즈북이 아닌 다른 기술이 구현될 수도 있다. 레지스터/어레이로의 포트를 디스에이블하기위해 필요한 로직도 역시 달라질 수 있다. 따라서, 본 발명의 영역은 상술한 실시예로만 제한되는 것은 아니며, 첨부된 특허청구범위 및 그 등가물에 따라 정의되어야 한다.
복수개의 쓰레드를 실행할 수 있는 하드웨어 멀티쓰레드 컴퓨터 처리 시스템의 쓰레드 능력을 변경하는 방법과, 적어도 하나의 동작 쓰레드를 디스에이블할 수 있는 멀티쓰레드 컴퓨터 시스템이 제공된다.

Claims (17)

  1. 복수개의 쓰레드를 실행할 수 있는 하드웨어 멀티쓰레드 컴퓨터 처리 시스템의 쓰레드 능력을 변경하기 위한 방법에 있어서,
    (a) 상기 복수개의 쓰레드들 각각에 고유하게 연관되어 있는 레지스터/어레이의 고장을 격리시킬 수 있는 검사를 수행하는 단계와,
    (b) 적어도 하나의 레지스터/어레이의 고장을 검출하고 상기 적어도 하나의 고장된 레지스터/어레이에 연관되어 있는 쓰레드를 기록하는 단계와,
    (c) 상기 적어도 하나의 고장난 레지스터/어레이에 고유하게 연관되어 있는 쓰레드에 연관된 모든 레지스터/어레이로의 액세스를 디스에이블하는 단계와,
    (d) 상기 복수개의 쓰레드들중 고장이 검출되지 않은 나머지 쓰레드들에 고유하게 연관되어 있는 모든 레지스터/어레이로의 액세스를 유지하는 단계
    를 포함하는 쓰레드 능력 변경 방법.
  2. 제1항에 있어서, 상기 복수개의 쓰레드들 각각에 고유하게 연관되어 있는 레지스터/어레이의 고장을 격리시킬 수 있는 검사를 수행하는 단계는, 상기 레지스터/어레이의 중요한 부분을 수행(exercise)시키기 위해 스트레스(stress)를 가하여 고객의 성능 요건을 반영하는 코딩된 명령어들을 실행하는 단계를 더 포함하는 쓰레드 능력 변경 방법.
  3. 제1항에 있어서, 상기 복수개의 쓰레드들 각각에 고유하게 연관되어 있는 레지스터/어레이의 고장을 격리시킬 수 있는 검사를 수행하는 단계는, 로직 내장형 자체 검사(LBIST) 및/또는 어레이 내장형 자체 검사(ABIST)를 실행하는 단계를 더 포함하는 쓰레드 능력 변경 방법.
  4. 제1항에 있어서, 상기 레지스터/어레이는 기억 셀들을 갖는 멀티쓰레드 레지스터/어레이를 더 포함하며, 각각의 기억 셀은 상기 복수개의 쓰레드들중 하나에 고유하게 연관되어 있는 하나의 기억 소자를 가지는 쓰레드 능력 변경 방법.
  5. 제1항에 있어서, 상기 적어도 하나의 고장난 레지스터/어레이에 고유하게 연관되어 있는 쓰레드에 연관된 모든 레지스터/어레이로의 액세스를 디스에이블하는 단계는, 상기 레지스터/어레이로의 적어도 하나의 포트중 임의의 포트를 접속해제하기 위해 퓨즈를 절단하는 단계를 더 포함하는 쓰레드 능력 변경 방법.
  6. 제1항에 있어서, 상기 적어도 하나의 고장난 레지스터/어레이에 고유하게 연관되어 있는 쓰레드에 연관된 모든 레지스터/어레이로의 액세스를 디스에이블하는 단계는, 상기 쓰레드를 위한 하드웨어 쓰레드 전환 제어 레지스터 내의 복수개의 쓰레드 전환 제어 이벤트들 중 임의의 이벤트를 디스에이블하는 단계를 더 포함하는 쓰레드 능력 변경 방법.
  7. 제1항에 있어서, 상기 적어도 하나의 고장난 레지스터/어레이에 고유하게 연관되어 있는 쓰레드에 연관된 모든 레지스터/어레이로의 액세스를 디스에이블하는 단계는, 마이크로코드 명령어를 실행하는 단계를 더 포함하는 쓰레드 능력 변경 방법.
  8. 복수개의 쓰레드들을 실행할 수 있는 하드웨어 멀티쓰레드 컴퓨터 처리 시스템의 쓰레드 능력을 변경하기 위한 방법에 있어서,
    (a) 멀티쓰레드 레지스터/어레이 내의 기억 소자-상기 멀티쓰레드 레지스터/어레이는 기억 셀 매트릭스의 형태로 배열되어 있고, 각각의 기억 셀은 상기 복수개의 쓰레드들 각각에 고유하게 각각 대응하는 복수개의 기억 소자들로 구성됨-의 고장을 격리시키는 기능 검사를 수행하는 단계와,
    (b) 상기 적어도 하나의 기억 소자의 고장을 검출하고 상기 적어도 하나의 고장난 기억 소자에 고유하게 연관되어 있는 특정 쓰레드를 기록하는 단계와,
    (c) 상기 적어도 하나의 고장난 기억 소자에 고유하게 연관되어 있는 특정 쓰레드에 고유하게 대응하는 모든 기억 소자들을 디스에이블하는 단계와,
    (d) 상기 특정 쓰레드에 대한 데이타를 상기 복수개의 쓰레드들 중 나머지 쓰레드에 고유하게 연관되어 있는 기억 소자들로 방향전환하는 단계
    를 포함하는 쓰레드 능력 변경 방법.
  9. 제8항에 있어서, 상기 특정 쓰레드에 연관되어 있는 모든 기억 소자를 디스에이블하는 단계는, 멀티쓰레드 컴퓨터에서 마이크로코드 명령어를 실행하여 상기 복수개의 쓰레드들 중 나머지 쓰레드들에 연관되어 있는 개개의 기억 소자들중 다른 기억 소자들을 선택함으로써 쓰레드 전환 신호를 생성하는 단계를 더 포함하는 쓰레드 능력 변경 방법.
  10. 제8항에 있어서, 상기 특정 쓰레드에 연관되어 있는 모든 기억 소자를 디스에이블하는 단계는, 퓨즈를 절단하는 단계를 더 포함하는 쓰레드 능력 변경 방법.
  11. 제10항에 있어서, 상기 퓨즈는 상기 특정 퓨즈에 연관되어 있는 모든 기억 소자들에 접속된 모든 판독/기록 포트들에 위치하는 쓰레드 능력 변경 방법.
  12. 제10항에 있어서, 상기 퓨즈는 쓰레드 전환 이벤트 제어 레지스터에 위치하고, 상기 특정 쓰레드에 대한 상기 쓰레드 전환 이벤트 제어 레지스터의 모두 또는 일부를 디스에이블하는 쓰레드 능력 변경 방법.
  13. 제12항에 있어서, 상기 퓨즈는 쓰레드 전환 이벤트 제어 레지스터 내의 개개의 비트에 접속되고, 상기 개개의 비트는 상기 특정 쓰레드를 디스에이블하는 쓰레드 능력 변경 방법.
  14. 제10항에 있어서, 상기 퓨즈는 상기 특정 쓰레드에 속하는 쓰레드 상태 레지스터에 접속되는 쓰레드 능력 변경 방법.
  15. 제14항에 있어서, 상기 퓨즈는 상기 특정 쓰레드를 불활성 상태로 표시해 두기 위해 상기 쓰레드 상태 레지스터의 개개의 비트에도 접속되는 쓰레드 능력 변경 방법.
  16. 적어도 하나의 동작 쓰레드를 디스에이블할 수 있는 멀티쓰레드 컴퓨터 시스템에 있어서,
    (a) 적어도 하나의 멀티쓰레드 컴퓨터 프로세서와,
    (b) 상기 멀티쓰레드 컴퓨터 프로세서 내의 복수개의 동작 쓰레드들 각각에 대한 적어도 하나의 쓰레드 전환 제어 레지스터와,
    (c) 멀티쓰레드 기억셀들을 갖는 적어도 하나의 하드웨어 멀티쓰레드 메모리/레지스터 어레이-상기 기억 셀들의 각각은 하나의 쓰레드 동작과 고유하게 연관되어 있는 기억 소자를 가짐-
    (d) 적어도 하나의 멀티쓰레드 컴퓨터 프로세서에 접속된 메인 메모리와,
    (e) 복수개의 데이터 기억 장치와, 하나 이상의 외부 통신 네트워크와, 상기 컴퓨터 프로세서로/로부터 사용자 입력을 제공하기 위한 하나 이상의 입력/출력 장치를 포함하는 그룹 중 적어도 하나에, 상기 멀티쓰레드 컴퓨터 프로세서와 상기 메인 메모리를 접속시키는 버스 인터페이스와,
    (f) 프로세서의 초기 훈련(bring-up) 동안에 상기 적어도 하나의 멀티쓰레드 컴퓨터 프로세서에서 적어도 하나의 동작 쓰레드의 기능 검사를 수행하기 위한 기능 검사 생성기와,
    (g) 상기 기능 검사를 받는 상기 적어도 하나의 동작 쓰레드에 고유하게 연관되어 있는 기억 소자의 고장을 검출하는 기억 소자 고장 검출기와,
    (h) 상기 멀티쓰레드 기억 셀들에서 상기 기능 검사를 받는 상기 적어도 하나의 동작 쓰레드에 연관되어 있는 모든 기억 소자들을 디스에이블하기 위한 기억 소자 디스에이블러
    를 포함하는 멀티쓰레드 컴퓨터 시스템.
  17. 멀티쓰레드 프로세서에 있어서,
    (a) 복수개의 쓰레드를 처리하기 위한 수단과,
    (b) 상기 복수개의 쓰레드들 각각의 상태를 상기 멀티쓰레드 프로세서 내의 하드웨어 레지스터에 저장하기 위한 수단과,
    (c) 개개의 쓰레드에 속하는 임의의 메모리 기억 소자가 결함있는지를 검출하기 위한 수단과,
    (d) 상기 결함있는 메모리 기억 소자들로의 액세스를 디스에이블하는 단계와,
    (e) 결함있지 않은 다른 메모리 기억 소자들로의 액세스를 유지하기 위한 수단과,
    (f) 상기 결함있는 메모리 기억 소자에 속하는 개개의 쓰레드의 처리와 기억을, 결함있는 메모리 기억 소자를 갖지 않는 적어도 하나의 다른 쓰레드로 방향전환하기 위한 수단
    을 포함하는 멀티쓰레드 프로세서.
KR10-2001-0047693A 2000-08-15 2001-08-08 멀티쓰레드 컴퓨터 프로세서의 쓰레드 능력 변경 KR100388550B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/638,577 2000-08-15
US09/638,577 US6748556B1 (en) 2000-08-15 2000-08-15 Changing the thread capacity of a multithreaded computer processor

Publications (2)

Publication Number Publication Date
KR20020014694A KR20020014694A (ko) 2002-02-25
KR100388550B1 true KR100388550B1 (ko) 2003-06-25

Family

ID=24560580

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0047693A KR100388550B1 (ko) 2000-08-15 2001-08-08 멀티쓰레드 컴퓨터 프로세서의 쓰레드 능력 변경

Country Status (3)

Country Link
US (1) US6748556B1 (ko)
JP (1) JP3683837B2 (ko)
KR (1) KR100388550B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101109029B1 (ko) * 2007-06-20 2012-01-31 후지쯔 가부시끼가이샤 연산 장치
US8984518B2 (en) 2010-10-14 2015-03-17 Electronics And Telecommunications Research Institute Apparatus and method for executing components based on thread pool

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6681345B1 (en) * 2000-08-15 2004-01-20 International Business Machines Corporation Field protection against thread loss in a multithreaded computer processor
US7324520B2 (en) * 2002-07-03 2008-01-29 Intel Corporation Method and apparatus to process switch traffic
US7174554B2 (en) * 2002-12-20 2007-02-06 Microsoft Corporation Tools and methods for discovering race condition errors
US7185178B1 (en) 2004-06-30 2007-02-27 Sun Microsystems, Inc. Fetch speculation in a multithreaded processor
US7353364B1 (en) 2004-06-30 2008-04-01 Sun Microsystems, Inc. Apparatus and method for sharing a functional unit execution resource among a plurality of functional units
US7434000B1 (en) 2004-06-30 2008-10-07 Sun Microsystems, Inc. Handling duplicate cache misses in a multithreaded/multi-core processor
US7890734B2 (en) 2004-06-30 2011-02-15 Open Computing Trust I & II Mechanism for selecting instructions for execution in a multithreaded processor
US7370243B1 (en) 2004-06-30 2008-05-06 Sun Microsystems, Inc. Precise error handling in a fine grain multithreaded multicore processor
US7702887B1 (en) 2004-06-30 2010-04-20 Sun Microsystems, Inc. Performance instrumentation in a fine grain multithreaded multicore processor
US7426630B1 (en) 2004-06-30 2008-09-16 Sun Microsystems, Inc. Arbitration of window swap operations
US7383403B1 (en) 2004-06-30 2008-06-03 Sun Microsystems, Inc. Concurrent bypass to instruction buffers in a fine grain multithreaded processor
US7533248B1 (en) 2004-06-30 2009-05-12 Sun Microsystems, Inc. Multithreaded processor including a functional unit shared between multiple requestors and arbitration therefor
US7216216B1 (en) 2004-06-30 2007-05-08 Sun Microsystems, Inc. Register window management using first pipeline to change current window and second pipeline to read operand from old window and write operand to new window
US8095778B1 (en) 2004-06-30 2012-01-10 Open Computing Trust I & II Method and system for sharing functional units of a multithreaded processor
US7941642B1 (en) 2004-06-30 2011-05-10 Oracle America, Inc. Method for selecting between divide instructions associated with respective threads in a multi-threaded processor
US7861063B1 (en) 2004-06-30 2010-12-28 Oracle America, Inc. Delay slot handling in a processor
US7401206B2 (en) * 2004-06-30 2008-07-15 Sun Microsystems, Inc. Apparatus and method for fine-grained multithreading in a multipipelined processor core
US7523330B2 (en) * 2004-06-30 2009-04-21 Sun Microsystems, Inc. Thread-based clock enabling in a multi-threaded processor
US8225034B1 (en) 2004-06-30 2012-07-17 Oracle America, Inc. Hybrid instruction buffer
US7437538B1 (en) 2004-06-30 2008-10-14 Sun Microsystems, Inc. Apparatus and method for reducing execution latency of floating point operations having special case operands
US7676655B2 (en) * 2004-06-30 2010-03-09 Sun Microsystems, Inc. Single bit control of threads in a multithreaded multicore processor
US7330988B2 (en) * 2004-06-30 2008-02-12 Sun Microsystems, Inc. Method and apparatus for power throttling in a multi-thread processor
US7747771B1 (en) 2004-06-30 2010-06-29 Oracle America, Inc. Register access protocol in a multihreaded multi-core processor
US7373489B1 (en) 2004-06-30 2008-05-13 Sun Microsystems, Inc. Apparatus and method for floating-point exception prediction and recovery
US7343474B1 (en) 2004-06-30 2008-03-11 Sun Microsystems, Inc. Minimal address state in a fine grain multithreaded processor
US7478225B1 (en) 2004-06-30 2009-01-13 Sun Microsystems, Inc. Apparatus and method to support pipelining of differing-latency instructions in a multithreaded processor
US7774393B1 (en) 2004-06-30 2010-08-10 Oracle America, Inc. Apparatus and method for integer to floating-point format conversion
US7178005B1 (en) 2004-06-30 2007-02-13 Sun Microsystems, Inc. Efficient implementation of timers in a multithreaded processor
US7707586B2 (en) * 2004-09-08 2010-04-27 Intel Corporation Operating system independent agent
US7280428B2 (en) 2004-09-30 2007-10-09 Rambus Inc. Multi-column addressing mode memory system including an integrated circuit memory device
US8595459B2 (en) 2004-11-29 2013-11-26 Rambus Inc. Micro-threaded memory
US8037250B1 (en) 2004-12-09 2011-10-11 Oracle America, Inc. Arbitrating cache misses in a multithreaded/multi-core processor
US7600101B2 (en) * 2005-01-13 2009-10-06 Hewlett-Packard Development Company, L.P. Multithreaded hardware systems and methods
JP4757648B2 (ja) * 2005-03-03 2011-08-24 日本電気株式会社 処理装置及びその障害復旧方法
US7389403B1 (en) * 2005-08-10 2008-06-17 Sun Microsystems, Inc. Adaptive computing ensemble microprocessor architecture
WO2007091297A1 (ja) * 2006-02-06 2007-08-16 Fujitsu Limited 情報処理装置、cpu、診断プログラムおよび診断方法
CN101390077B (zh) * 2006-02-28 2013-03-27 微软公司 线程截取和分析
US7716530B2 (en) * 2006-02-28 2010-05-11 Microsoft Corporation Thread interception and analysis
US7802073B1 (en) 2006-03-29 2010-09-21 Oracle America, Inc. Virtual core management
US20070260841A1 (en) 2006-05-02 2007-11-08 Hampel Craig E Memory module with reduced access granularity
ES2883587T3 (es) * 2007-04-12 2021-12-09 Rambus Inc Sistema de memoria con interconexión de solicitud punto a punto
US7926035B2 (en) * 2007-04-24 2011-04-12 Microsoft Corporation Testing multi-thread software using prioritized context switch limits
KR101100144B1 (ko) * 2007-06-19 2011-12-29 후지쯔 가부시끼가이샤 정보처리장치
US8225315B1 (en) 2007-07-23 2012-07-17 Oracle America, Inc. Virtual core management
US8572577B2 (en) * 2008-06-20 2013-10-29 International Business Machines Corporation Monitoring changes to data within a critical section of a threaded program
US8024719B2 (en) 2008-11-03 2011-09-20 Advanced Micro Devices, Inc. Bounded hash table sorting in a dynamic program profiling system
US20100115494A1 (en) * 2008-11-03 2010-05-06 Gorton Jr Richard C System for dynamic program profiling
US8478948B2 (en) * 2008-12-04 2013-07-02 Oracle America, Inc. Method and system for efficient tracing and profiling of memory accesses during program execution
KR101313692B1 (ko) * 2009-12-18 2013-10-02 한국전자통신연구원 로봇용 소프트웨어 컴포넌트를 실행하는데 있어서 고장 감내 방법 및 장치
US8365014B2 (en) * 2010-01-14 2013-01-29 Juniper Networks, Inc. Fast resource recovery after thread crash
GB2484458A (en) 2010-10-04 2012-04-18 Thorn Security Commissioning detector units of an alarm system by means of a remote infrared based communication tool
US8671309B2 (en) * 2011-07-01 2014-03-11 Intel Corporation Mechanism for advanced server machine check recovery and associated system software enhancements
US9268719B2 (en) 2011-08-05 2016-02-23 Rambus Inc. Memory signal buffers and modules supporting variable access granularity
US8631292B2 (en) * 2011-08-29 2014-01-14 Freescale Semiconductor, Inc. Multi-threading flip-flop circuit
US9069598B2 (en) * 2012-01-06 2015-06-30 International Business Machines Corporation Providing logical partions with hardware-thread specific information reflective of exclusive use of a processor core
KR20150019349A (ko) * 2013-08-13 2015-02-25 삼성전자주식회사 다중 쓰레드 실행 프로세서 및 이의 동작 방법
US9734033B2 (en) 2014-12-08 2017-08-15 International Business Machines Corporation Implementing processor functional verification by generating and running constrained random irritator tests for multiple processor system and processor core with multiple threads
US10445133B2 (en) 2016-03-04 2019-10-15 Nxp Usa, Inc. Data processing system having dynamic thread control
US10706101B2 (en) 2016-04-14 2020-07-07 Advanced Micro Devices, Inc. Bucketized hash tables with remap entries

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4489401A (en) * 1982-04-12 1984-12-18 Seeq Technology, Inc. Electrical partitioning scheme for improving yields during the manufacture of semiconductor memory arrays
EP0729097A1 (en) * 1995-02-07 1996-08-28 Sun Microsystems, Inc. Method and apparatus for run-time memory access checking and memory leak detection of a multi-threaded program
US5659551A (en) * 1995-05-31 1997-08-19 International Business Machines Corporation Programmable computer system element with built-in self test method and apparatus for repair during power-on
US5805789A (en) * 1995-12-14 1998-09-08 International Business Machines Corporation Programmable computer system element with built-in self test method and apparatus for repair during power-on
US5778243A (en) * 1996-07-03 1998-07-07 International Business Machines Corporation Multi-threaded cell for a memory
US6119145A (en) * 1997-02-28 2000-09-12 Oracle Corporation Multithreaded client application storing a separate context for each transaction thus allowing threads to resume transactions started by other client threads
US5835705A (en) * 1997-03-11 1998-11-10 International Business Machines Corporation Method and system for performance per-thread monitoring in a multithreaded processor
US6697935B1 (en) * 1997-10-23 2004-02-24 International Business Machines Corporation Method and apparatus for selecting thread switch events in a multithreaded processor
US6256775B1 (en) * 1997-12-11 2001-07-03 International Business Machines Corporation Facilities for detailed software performance analysis in a multithreaded processor
US6418542B1 (en) * 1998-04-27 2002-07-09 Sun Microsystems, Inc. Critical signal thread

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101109029B1 (ko) * 2007-06-20 2012-01-31 후지쯔 가부시끼가이샤 연산 장치
US8407714B2 (en) 2007-06-20 2013-03-26 Fujitsu Limited Arithmetic device for processing one or more threads
US8984518B2 (en) 2010-10-14 2015-03-17 Electronics And Telecommunications Research Institute Apparatus and method for executing components based on thread pool

Also Published As

Publication number Publication date
JP2002108630A (ja) 2002-04-12
US6748556B1 (en) 2004-06-08
KR20020014694A (ko) 2002-02-25
JP3683837B2 (ja) 2005-08-17

Similar Documents

Publication Publication Date Title
KR100388550B1 (ko) 멀티쓰레드 컴퓨터 프로세서의 쓰레드 능력 변경
JP3683838B2 (ja) 正常なコンピュータ処理を継続する方法及びマルチスレッド・コンピュータ・システム
US6560740B1 (en) Apparatus and method for programmable built-in self-test and self-repair of embedded memory
JP4215393B2 (ja) 集積回路の修復方法
EP2966650B1 (en) Memory built-in self test for a data processing apparatus
US7770067B2 (en) Method for cache correction using functional tests translated to fuse repair
US8055960B2 (en) Self test apparatus for identifying partially defective memory
US7676715B2 (en) Integrated circuit with continuous testing of repetitive functional blocks
JPS6229827B2 (ko)
JPH10301846A (ja) 修復マスクを使用したキャッシュ・アレイ欠陥の機能的迂回方法及びシステム
US20070086253A1 (en) Scanned memory testing of multi-port memory arrays
US10311963B2 (en) Data processing
US7694175B2 (en) Methods and systems for conducting processor health-checks
US7065694B2 (en) Adaptive runtime repairable entry register file
WO2010066207A1 (zh) 在片自测试自修复方法
US7607040B2 (en) Methods and systems for conducting processor health-checks
JP2008262648A (ja) 半導体集積回路装置
JPS5939052B2 (ja) 情報処理装置及び方法
JP3060825B2 (ja) 半導体集積回路およびその検査方法
JP2001307497A (ja) 半導体集積回路装置
JPH06131897A (ja) キャッシュメモリ
JP2003228994A (ja) 半導体記憶装置とメモリセル置換方法及びプログラム
US20070118778A1 (en) Method and/or apparatus to detect and handle defects in a memory
Rennels et al. VLSI implementation of a self-checking self-exercising memory system
US20180259576A1 (en) Implementing integrated circuit yield enhancement through array fault detection and correction using combined abist, lbist, and repair techniques

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20060522

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee