KR101757572B1 - 멀티-코어 데이터 어레이 파워 게이팅 캐시 복원 프로그래밍 메커니즘 - Google Patents

멀티-코어 데이터 어레이 파워 게이팅 캐시 복원 프로그래밍 메커니즘 Download PDF

Info

Publication number
KR101757572B1
KR101757572B1 KR1020157033143A KR20157033143A KR101757572B1 KR 101757572 B1 KR101757572 B1 KR 101757572B1 KR 1020157033143 A KR1020157033143 A KR 1020157033143A KR 20157033143 A KR20157033143 A KR 20157033143A KR 101757572 B1 KR101757572 B1 KR 101757572B1
Authority
KR
South Korea
Prior art keywords
configuration data
cores
fuse
sub
core
Prior art date
Application number
KR1020157033143A
Other languages
English (en)
Other versions
KR20160008562A (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 KR20160008562A publication Critical patent/KR20160008562A/ko
Application granted granted Critical
Publication of KR101757572B1 publication Critical patent/KR101757572B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/177Initialisation or configuration control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/66Updates of program code stored in read-only memory [ROM]
    • 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/4401Bootstrapping
    • G06F9/4403Processor initialisation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C17/00Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards
    • G11C17/14Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards in which contents are determined by selectively establishing, breaking or modifying connecting links by permanently altering the state of coupling elements, e.g. PROM
    • G11C17/16Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards in which contents are determined by selectively establishing, breaking or modifying connecting links by permanently altering the state of coupling elements, e.g. PROM using electrically-fusible links
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C17/00Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards
    • G11C17/14Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards in which contents are determined by selectively establishing, breaking or modifying connecting links by permanently altering the state of coupling elements, e.g. PROM
    • G11C17/18Auxiliary circuits, e.g. for writing into memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/20Memory cell initialisation circuits, e.g. when powering up or down, memory clear, latent image memory
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L27/00Devices consisting of a plurality of semiconductor or other solid-state components formed in or on a common substrate
    • H01L27/02Devices consisting of a plurality of semiconductor or other solid-state components formed in or on a common substrate including semiconductor components specially adapted for rectifying, oscillating, amplifying or switching and having at least one potential-jump barrier or surface barrier; including integrated passive circuit elements with at least one potential-jump barrier or surface barrier
    • H01L27/0203Particular design considerations for integrated circuits
    • H01L27/0207Geometrical layout of the components, e.g. computer aided design; custom LSI, semi-custom LSI, standard cell technique
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/601Reconfiguration of cache memory
    • 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
    • G11C2029/4402Internal storage of test result, quality data, chip identification, repair information

Abstract

장치는 장치 프로그래머, 저장공간 및 복수의 코어를 포함한다. 장치 프로그래머는 복수의 코어를 위한 압축된 구성 데이터로 반도체 퓨즈 어레이를 프로그램하도록 구성된다. 저장공간은 복수의 코어 각각에 각각 상응하는 복수의 하위-저장공간을 포함하며, 복수의 코어 중 하나는 압축된 구성 데이터를 읽고 압축해제를 위해 파워업/리셋시 반도체 퓨즈 어레이에 접근하고, 그리고 복수의 코어 각각 내의 하나 이상의 캐시 메모리를 위한 복수의 압축해제된 구성 데이터 셋트를 복수의 하위-저장공간 내에 저장하도록 구성된다. 복수의 코어 각각은 파워 게이팅 이벤트 다음에 하나 이상의 캐시를 초기화하기 위한 압축해제된 구성 데이터 셋트를 검색하고 사용하기 위해 복수의 하위-저장공간 각각 중 상응하는 하나에 연속적으로 접근하도록 구성된 슬립 로직을 포함한다.

Description

멀티-코어 데이터 어레이 파워 게이팅 캐시 복원 프로그래밍 메커니즘{MULTI-CORE DATA ARRAY POWER GATING CACHE RESTORAL PROGRAMMING MECHANISM}
본 출원은 다음 미국 특허 출원에 연속되는 것이고 우선권을 주장한다:
Figure 112015113076121-pct00001
본 출원은 각각이 공통 양수인 및 공통 발명자를 갖는 다음의 공동-계류중인 미국 및 PCT특허 출원에 관련된다.
Figure 112015113076121-pct00002
Figure 112015113076121-pct00003
본 발명은 일반적으로 마이크로일렉트로닉스의 분야, 그리고 특히 멀티 코어 파워 게이팅 이벤트 다음에 압축 캐시 복구 데이터를 복원하기 위한 장치 및 방법에 관한 것이다.
집적 디바이스 기술은 지난 40년 동안 기하급수적으로 진보했다. 더 구체적으로 4-비트로 시작하는 마이크로프로세서 필드, 단일 명령어, 10-마이크로미터 디바이스에 관한 것이고, 반도체 제조 기술에서 진보는 설계자가 아키텍쳐 및 밀도의 관점에서 더 복잡한 디바이스를 더 많이 제공하는 것을 가능하게 했다. 80년대와 90년대에 단일 다이 상에 수백만 트랜지스터를 포함하는 소위 파이프라인 마이크로프로세서 및 슈퍼스칼라 마이크로프로세서가 개발되었다. 그리고 이제 20년 후에, 단일 다이 상에 수십억 개의 트랜지스터를 갖고 데이터의 처리를 위해 다중 마이크로프로세서 코어를 포함하는 64-비트, 32-나노미터 디바이스가 생산될 것이다.
이러한 초기 마이크로프로세서가 생산된 후 계속되는 하나의 요구사항은 이러한 장치가 파워업되거나 리셋될 때, 구성 데이터와 함께 이러한 장치를 초기화할 필요성이다. 예를 들어, 많은 아키텍쳐는 디바이스가 많은 선택 가능한 주파수 및/또는 전압 중 하나에서 실행되도록 구성되는 것을 가능하게 했다. 다른 아키텍쳐는 각 디바이스가 시리얼 번호와 명령의 실행을 통해 읽혀질 수 있는 정보를 갖는 것을 요구한다. 게다가 다른 디바이스는 내부 등록과 제어 회로를 위해 초기화 데이터를 필요로 한다. 또한 다른 마이크로프로세서는, 특히 온-보드 캐시 메모리와 함께, 제조 오차를 보정하기 위해 이러한 메모리 내에 중복 회로를 제공하기 위해 복구 데이터를 이용한다.
기술분야의 당업자가 인지할 바와 같이, 디자이너는 전통적으로 초기 구성 및 복구 데이터를 저장하고 제공하기 위해 반도체 퓨즈 어레이 온-다이를 사용해 왔다. 이러한 퓨즈 어레이는 일반적으로 부분이 제조된 후 그 안에 선택된 퓨즈를 블로우하는 것에 의해 프로그램되고, 그리고 어레이는 동작을 위한 장치를 초기화하고 구성하기 위해 파워업/리셋시 상응하는 장치에 의해 읽히는 수천 비트의 정보를 포함한다.
수년간 장치 복잡성이 증가하여, 일반적인 장치에 필요한 구성/복구 데이터는 비례하여 증가해왔다. 그러나, 기술분야의 당업자가 인지할 바와 같이, 사용되는 반도체 제조 처리에 비례하는 트랜지스터 사이즈가 줄어들더라도, 반도체 퓨즈 사이즈는 다이 위의 프로그래밍 퓨즈의 고유한 요구사항 때문에 증가한다. 이러한 현상은, 그 자체로 자연히, 공간 및 파워 고려사항에 의해 일반적으로 제한되는 디자이너에게 문제이다. 다시 말해, 거대한 퓨즈 어레이를 제조하기 위한 소정의 다이 위에 충분한 공간이 없다.
게다가, 싱글 다이 위의 멀티플 장치 코어를 제조하는 능력은 기하학적으로 그 문제를 악화시킨다, 왜냐하면 각 코어를 위한 구성 요구사항은 그 위에 배치된 코어의 수에 비례하는 싱글 어레이 또는 고유한 어레이 내의 다이 위의 다수의 퓨즈에 대한 요구사항을 야기하기 때문이다
게다가, 기술분야의 당업자가 이해할 바와 같이, 멀티플-코어 장치는 사용되지 않을 때 소위 파워 게이팅 이벤트(또는,"슬립 모드")에서 하나 이상의 코어가 파워 다운되는 것을 야기하는 복잡한 동작의 파워-절약 모드를 활용한다. 결과적으로, 파워 게이팅 이벤트 다음에 코어가 파워 업되는 때, 초기화 속도 요건이 더 긴박한 것을 제외하면 초기화, 구성, 및 수리를 위해 같은 요구사항이 지속된다.
따라서, 필요한 것은 싱글 다이 위의 지금까지 제공된 것보다 훨씬 적은 공간과 파워를 요구하는 멀티-코어 장치에 구성/수리 데이터가 저장되고 제공되는 것을 가능하게 하는 장치 및 방법이다.
추가적으로, 필요한 것은 멀티-코어 다이 위에 같거나 더 적은 공간을 요구하면서 현재의 기술보다 훨씬 많은 구성/수리 데이터를 저장하고 제공할 수 있는 퓨즈 어레이 메커니즘이다.
뿐만 아니라, 필요한 것은 파워 게이팅 이벤트 다음에 멀티-코어 장치의 신속한 초기화, 구성 및 수리를 가능하게 하는 기술이다.
본 발명은 파워 게이팅 이벤트 다음에 구성 데이터를 복원하기 위한 우수한 기술을 제공한다.
하나의 관점에서, 장치는 집적 회로에 구성 데이터를 제공한다. 장치는 장치 프로그래머, 저장공간 및 복수의 코어를 포함한다. 장치 프로그래머는 다이 위의 반도체 퓨즈 어레이에 결합되고, 그리고 복수의 코어를 위한 압축된 구성 데이터로 반도체 퓨즈 어레이를 프로그램하도록 구성된다. 저장공간은 복수의 코어에 결합되고, 저장공간은 복수의 코어 각각에 각각 상응하는 복수의 하위-저장공간을 포함하며, 복수의 코어 중 하나는 압축된 구성 데이터를 읽고 압축해제를 위해 파워업/리셋시 반도체 퓨즈 어레이에 접근하고, 그리고 복수의 코어 각각 내의 하나 이상의 캐시 메모리를 위한 복수의 압축해제된 구성 데이터 셋트를 복수의 하위-저장공간 내에 저장하도록 구성된다. 복수의 코어 각각은 파워 게이팅 이벤트 다음에 하나 이상의 캐시를 초기화하기 위한 압축해제된 구성 데이터 셋트를 검색하고 사용하기 위해 복수의 하위-저장공간 각각 중 상응하는 하나에 연속적으로 접근하도록 구성된 슬립 로직을 포함한다.
하나의 관점에서, 장치는 집적 회로 장치에 구성 데이터를 제공한다. 장치는 장치 프로그래머 및 멀티-코어 마이크로프로세서를 포함한다. 장치 프로그래머는 다이 위에 배치된 반도체 퓨즈 어레이에 결합되고, 다이 위에 배치된 복수의 코어를 위한 압축된 구성 데이터로 반도체 퓨즈 어레이를 프로그램하도록 구성된다. 멀티-코어 마이크로프로세서는 반도체 퓨즈 어레이, 저장공간 및 복수의 코어를 포함한다. 반도체 퓨즈 어레이는 다이 위에 배치되고, 다이 위에 배치된 복수의 코어를 위해 압축된 구성 데이터내로 프로그램되고, 반도체 퓨즈 어레이에 결합된다. 저장공간은 복수의 코어에 결합되고, 저장공간은 복수의 코어 각각에 각각 상응하는 복수의 하위-저장공간을 포함하며, 복수의 코어 중 하나는 압축된 구성 데이터를 읽고 압축해제를 위해 파워업/리셋시 반도체 퓨즈어레이에 접근하고, 그리고 복수의 코어 각각 내의 하나 이상의 캐시 메모리를 위한 복수의 압축해제된 구성 데이터 셋트를 복수의 하위-저장공간 내에 저장하도록 구성된다. 복수의 코어 각각은 파워 게이팅 이벤트 다음에 하나 이상의 캐시를 초기화하기 위한 압축해제된 구성 데이터 셋트를 검색하고 사용하기 위해 복수의 하위-저장공간 각각 중 상응하는 하나에 연속적으로 접근하도록 구성된 슬립 로직을 포함한다.
다른 관점에서, 집적 회로를 구성하기 위한 방법을 제공한다. 방법은 반도체 퓨즈 어레이를 다이 위에 배치하는 제 1 배치 단계; 반도체 퓨즈 어레이에 결합된 장치 프로그래머를 통해 다이 위체 배치된 복수의 코어를 위한 압축된 구성 데이터로 반도체 퓨즈 어레이를 프로그래밍하는 단계; 저장공간을 다이 위에 배치하는 제 2 배치 단계이고, 저장공간은 복수의 코어 각각에 각각 상응하는 복수의 하위-저장공간을 포함하며, 복수의 코어 중 하나는 압축된 구성 데이터를 읽고 압축해제를 위해 파워업/리셋시 반도체 퓨즈어레이에 접근하고, 그리고 복수의 코어 각각 내의 하나 이상의 캐시 메모리를 위한 복수의 압축해제된 구성 데이터 셋트를 복수의 하위-저장공간 내에 저장하도록 구성되며; 및 파워 게이팅 이벤트 다음에 하나 이상의 캐시를 초기화하기 위한 압축해제된 구성 데이터 셋트를 검색하고 사용하기 위해 복수의 하위-저장공간 각각 중 상응하는 하나에 접근하기 위해 복수의 코어 각각 내의 슬립 로직을 사용하는 단계를 포함한다.
산업적 이용가능성에 관해서, 본 발명은 범용 또는 특수 목적 컴퓨팅 디바이스에 사용될 수 있는 마이크로프로세서 내에 실행된다.
본 발명의 이러한 그리고 다른 목적, 특징, 및 이점이 다음의 설명, 및 첨부된 도면에 관련해서 더 잘 이해될 것이고, 여기서:
도 1은 마이크로프로세서 코어에 구성 데이터를 제공하기 위한 퓨즈 어레이를 포함하는 오늘 날의 마이크로프로세서 코어를 나타내는 블록도이다.
도 2는 상기 퓨즈 어레이 내의 제 1 퓨즈 뱅크를 블로우한 뒤 블로우되는 중복 퓨즈 뱅크를 포함하는 도 1의 마이크로 프로세서 코어 내의 퓨즈 어레이를 나타내는 블록도이다.
도 3은 멀티-코어 장치를 위한 구성 데이터의 압축 및 압축해제 제공하는 본 발명에 따른 시스템을 나타내는 블록도이다.
도 4는 본 발명에 따른 퓨즈 압축해제 메커니즘을 나타내는 블록도이다.
도 5는 본 발명에 따른 압축된 구성 데이터를 위한 예시적인 포맷을 나타내는 블록도이다.
도 6은 본 발명에 따른 압축해제된 마이크로코드 패치 구성 데이터를 위한 예시적인 포맷을 나타내는 블록도이다.
도 7은 본 발명에 따른 압축해제된 마이크로코드 등록 구성 데이터를 위한 예시적인 포맷을 나타내는 블록도이다.
도 8은 본 발명에 따른 압축해제된 캐시 보정 데이터를 위한 예시적인 포맷을 나타내는 블록도이다.
도 9는 본 발명에 따른 압축해제된 퓨즈 보정 데이터를 위한 예시적인 포맷을 나타내는 블록도이다.
도 10은 본 발명에 따른 압축해제된 퓨즈 보정 데이터를 위한 대체의 예시적인 포맷을 나타내는 블록도이다.
도 11은 파워 게이팅 이벤트 다음에 캐시 수리 데이터의 즉각적인 복원을 제공하는 본 발명에 따른 멀티-코어 장치를 나타내는 블록도이다.
본 발명의 예시적인 그리고 도시하는 실시예가 아래에 설명된다. 해당 기술분야의 당업자는 임의의 그러한 실제 실시예의 전개에서, 다수의 실행 특정 결정이 하나의 실행에서 또 다른 실행으로 변하는, 시스템 관련된 및 비지니스 관련된 제한을 따르는 바와 같이, 특정 목표를 달성하도록 이루어진다는 것을 인지할 것이기 때문에, 명백함의 관점에서, 실제 실행의 모든 특징이 본 명세서에 설명되지 않는다. 또한, 그러한 개발 노력은 복잡하고 시간 소모적이지만, 그럼에도 본 개시의 혜택을 갖는 해당 기술분야의 당업자가 맡는 과정일 수 있다는 것이 인지될 것이다. 바람직한 실시예에 대한 다양한 수정이 해당 기술분야의 당업자에게 명백할 것이고, 여기에 정의된 일반적인 원칙이 다른 실시예에 적용될 수 있다. 그러므로, 본 발명은 여기에 도시되거나 설명된 특정 실시예로 한정되도록 의도되지 않지만, 여기 개시된 원칙 및 신규한 특징에 일치하는 가장 넓은 범위에 부합해야 한다.
본 발명은 이제 첨부된 도면을 참조하여 설명될 것이다. 다양한 구조, 시스템, 및 디바이스는 설명의 목적을 위해서만 그리고 해당기술분야에 공지된 세부사항으로 본 발명을 모호하게 하지 않도록 도면에 개략적으로 나타난다. 그럼에도, 첨부된 도면은 본 발명의 도시적인 실시예를 설명하고 나타내도록 포함된다. 여기 사용된 단어 및 어구는 해당 기술분야의 당업자에 의해 이들 단어 및 어구의 이해에 일치하는 의미를 갖는 것으로 이해되고 해석되어야만 한다. 용어 또는 어구의 특별한 정의(즉, 해당기술분야의 당업자에 의해 이해되는 통상의 관례적인 의미와는 다른 정의)는 여기 용어 또는 어구의 일관된 사용에 의해 포함되도록 의도된다. 용어 또는 어구가 특별한 의미(즉, 당업자에 의해 이해되는 바와 다른 의미)를 갖도록 의도되는 한에는, 그러한 특별한 정의는 용어 또는 어구에 관한 특별한 정의를 직접적으로 그리고 분명히 제공하는 정의 방식으로 명세서에서 강조하여 제시될 것이다.
디바이즈 퓨즈 어레이 및 초기 파워업시 구성 데이터를 제공하기 위해 오늘 날의 집적 회로 내에 사용되는 장치 퓨즈 어레이 및 연관된 기술에 관한 상기 배경 설명의 관점에서, 이러한 기술의 한계와 난점에 관한 논의는 도 1-2를 참조하여 제시될 것이다. 이에 이어서, 본 발명의 논의는 도 3-10을 참조하여 제시될 것이다. 본 발명은 멀티-코어 다이 위에서 적은 파워와 공간(real estate)을 활용하고, 파워 게이팅 이벤트 다음에 구성 및 수리 데이터의 신속한 복원을 제공하고, 종래에 제공되었던 장치보다 신뢰성 있는 멀티-코어 다이 내에서 압축된 구성을 사용하기 위한 장치와 방법을 제공함으로써 모든 한계와 난점을 극복한다.
정의
집적 회로(IC): 반도체 물질, 일반적으로 실리콘의 작은 피스 상에 제조된 전자 회로의 셋트. IC는 또한 칩, 마이크로칩, 또는 다이로서 언급된다.
중앙 처리 장치(CPU): 산술 연산, 논리 연산, 및 입력/출력 연산을 포함하는 데이터 상에 연산을 수행하는 것에 의해 컴퓨터 프로그램(또한 "컴퓨터 응용", “응용 프로그램”, “프로그램” 또는 "응용"으로 공지됨)의 명령어를 실행하는 전자 회로(즉, "하드웨어").
마이크로프로세서: 단일 집적 회로 상에 CPU로서 기능하는 전자 디바이스. 마이크로프로세서는 입력으로서 디지털 데이터를 수신하고, 메모리(온-다이 또는 오프-다이)로부터 불러낸 명령어에 따라 데이터를 처리하며, 그리고 출력으로서 명령어에 의해 규정된 연산의 결과를 발생시킨다. 범용 마이크로프로세서는 데스크탑, 모바일, 또는 태블릿 컴퓨터를 포함하는, 그러나 이에 제한되지 않는 장치에서 사용될 수 있고, 그리고 계산, 텍스트 편집, 멀티미디어 디스플레이, 및 인터넷 브라우징과 같은, 그러나 이에 제한되지 않는 태스크를 위해 활용될 수 있다. 마이크로프로세서는 또한 어플라이언스, 휴대폰, 스마트폰, 및 산업적 제어 디바이스를 포함하는 다양한 디바이스를 제어하기 위해 임베디드된 시스템에 배치될 수 있다.
멀티-코어 프로세서: 또한 멀티-코어 마이크로프로세서로서 공지된, 멀티-코어 프로세서는 단일 집적 회로 상에 제조된 다중 CPU(또한 "코어"로서 공지된)를 갖는 마이크로프로세서이다.
명령어 셋트 아키텍쳐 ( ISA ) 또는 명령어 셋트 : 데이터 타입, 명령어, 레지스터, 어드레싱 모드, 메모리 아키텍쳐, 인터럽트 및 예외 핸들링, 및 입력/출력을 포함하는 프로그래밍에 관련된 컴퓨터 아키텍쳐의 일부. ISA는 연산코드의 셋트(즉, 기계 언어 명령어) 및 특정 CPU에 의해 실행된 원시 커맨드의 사양을 포함한다.
x86-호환 마이크로프로세서: x86 ISA에 따라 프로그램된 컴퓨터 어플리케이션을 실행할 수 있는 마이크로프로세서.
마이크로코드: 복수의 마이크로 명령어를 언급하도록 사용된 용어. 마이크로 명령어(또한 "원시 명령어"로 언급됨)는 마이크로프로세서 서브-유닛이 실행하는 레벨에서 명령어이다. 예시적인 서브유닛은 정수 유닛, 부동소수점 유닛, MMX 유닛, 및 로드/저장 유닛을 포함한다. 예를 들어, 마이크로 명령어는 명령어 축약형 셋트 컴퓨터(RISC) 마이크로프로세서에 의해 직접 실행된다. x86-호환 마이크로프로세서와 같은 복잡한 명령어 셋트 컴퓨터(CISC) 마이크로프로세서에 있어서, x86 명령어는 연관된 마이크로 명령어로 변환되고, 연관된 마이크로 명령어는 서브-유닛 또는 CISC 마이크로프로세서 내의 서브-유닛에 의해 직접 실행된다.
퓨즈: 필라멘트를 가로질러 전압을 그리고/또는 필라멘트를 통해 전류를 인가하는 것에 의해 선택 위치에서 차단될 수 있는 일반적으로 필라멘트로서 배열된 도전성 구조. 퓨즈는 모든 잠재적 프로그래머블 영역에서 필라멘트를 생성하기 위한 공지된 제조 기법을 사용하여 다이 토포그래피를 가로질러 특정된 영역에 증착될 수 있다. 퓨즈 구조는 다이 상에 배치된 대응하는 디바이스의 요구된 프로그램가능성을 제공하기 위해 제조에 이어서 블로우된다(또는 언블로우 된다).
도 1로 돌아가서, 마이크로프로세서 코어(101)에 구성 데이터를 제공하기 위한 퓨즈 어레이(102)를 포함하는 오늘날의 마이크로프로세서 코어를 도시하는 블록도(100)가 제시된다. 퓨즈 어레이(102)는 뱅크로서 공지된 그룹 내에 일반적으로 배열된 복수의 반도체 퓨즈(미도시)를 포함한다. 퓨즈 어레이(102)는 리셋 회로(104) 및 리셋 마이크로코드(105) 모두를 포함하는 리셋 로직(103)에 결합된다. 리셋 로직(103)은 제어 회로(107), 마이크로코드 레지스터(108), 마이크로코드 패치 부재(109) 및 캐시 보정 부재(110)에 결합된다. 외부 리셋 신호 RESET은 마이크로프로세서 코어(101)에 결합되고 리셋 로직(103)에 전송된다.
해당 기술분야의 당업자는 퓨즈(또한 “링크” 또는 “퓨즈 구조”로 호칭되는)가 장치가 제조된 후 장치의 구성을 제공하기 위해 많은 양의 오늘 날의 집적 회로 장치내에서 사용된다는 것을 인지할 것이다. 예를 들어, 도 1의 마이크로프로세서 코어(101)는 선택적으로 데스크탑 장치 또는 모바일 장치 중 어느 하나로서 기능성을 제공하기 위해 제조된다. 따라서 제조 다음에, 퓨즈 어레이(102) 내의 정해진 퓨즈는 장치, 가령 모바일 장치,를 구성하기 위해 블로우될 수 있다. 따라서 RESET의 행사시, 리셋 로직(103)은 퓨즈 어레이(102) 내의 정해진 퓨즈의 상태를 읽고, 리셋 회로(104)(이 예에서는 리셋 마이크로코드(105) 대신에)는 데스크탑 동작과 배타적으로 연관된 코어(101)의 부재를 비활성화하고 모바일 동작과 배타적으로 연관된 코어(101)의 부재를 활성화하는 상응하는 제어 회로(107)를 작동시킨다. 결과적으로, 코어(101)는 파워업 리셋시 모바일 장치로서 구성된다. 추가적으로, 리셋 로직(103)은 퓨즈 어레이(102) 내의 다른 퓨즈의 상태를 읽고, 리셋 회로(104)(이 예에서는 리셋 마이크로코드(105) 대신에)는 코어(101)와 연관된 하나이상의 메모리(미도시)를 위한 보정 메커니즘을 제공하는 상응하는 캐시 보정 회로(107)을 작동시킨다. 결과적으로 코어(101)는 파워업 리셋시 모바일 장치로서 구성되고 그것의 캐시 메모리를 위한 보정 메커니즘은 제 위치에 놓인다.
상술한 예는 단지 도 1의 마이크로프로세서 코어(101)와 같은 집적 회로 장치 내 구성 퓨즈를 위한 많은 다른 사용 중 하나이다. 해당 기술분야의 당업자는 구성 퓨즈를 위한 다른 사용이 장치 특정 데이터(예를들어, 시리얼 넘버, 유니크 크립토그래픽 키, 사용자에 의해 접근될 수 있는 아키텍쳐 위임 데이터, 속도 설정, 전압 설정), 초기화 데이터 및 패치 데이터의 구성을 포함하는, 그러나 이에 제한되지 않는, 것을 인지할 것이다. 예를 들어, 많은 오늘 날의 장치는 마이크로코드를 실행하고 때때로 마이크로코드에 의해 릭히는 레지스터(108)의 초기화를 요구한다. 이러한 초기화 데이터는 리셋시 읽히고 리셋 로직(103)(리셋 회로(104), 리셋 마이크로코드(105) 또는 두 부재 모두(104-105)를 사용하는)에 의해 마이크로코드 레지스터(108)에 제공되는 퓨즈 어레이(102) 내의 마이크로코드 레지스터 퓨즈(미도시)에 의해 제공될 수 있다. 본 출원의 목적을 위해, 리셋 회로(104)는 리셋 마이크로코드(105)의 실행을 통해 제공될 수 없는 구성 데이터의 특정한 타입을 제공하는 하드웨어 부재를 포함한다. 리셋 마이크로코드(105)는 코어(101)의 초기화에 상응하는 기능을 수행하기 위해 코어(101)의 리셋시 실행되는 내부 마이크로 메모리(미도시) 내에 배치된 복수의 마이크로명령어를 포함하고, 상기 기능은 퓨즈 어레이(102)로부터 마이크로 레지스터(108) 및 마이크로 패치 메커니즘(109)과 같은 부재까지 읽혀지는 구성 데이터의 제공을 포함한다. 퓨즈를 통해 제공되는 구성 데이터의 특정한 타입이 리셋 마이크로코드(105)를 통해 코어(101)내의 다양한 부재(107-110)로 분배될 수 있는지 여부를 위한 기준은 주로 코어(101)의 특정한 디자인의 기능이다. 집적 회로 장치를 초기화하기 위해 사용되는 특정한 구성 기술에 대한 포괄적인 튜토리얼을 제공하는 것은 본 출원의 의도가 아니고, 해당 기술분야의 당업자는 오늘날의 마이크로프로세서 코어(101)를 위해 구성 가능한 부재(107-110)의 타입은 도 1에 예시된 바와 같이 일반적으로 4개 카테고리 내로 나뉜다는 것을 인지할 것이다: 제어 회로, 마이크로코드 레지스터, 마이크로코드 패치 메커니즘 및 캐시 보정 메커니즘. 게다가, 당업자는 구성 데이터의 특정한 값은 데이터의 특정한 타입에 기초하여 상당히 다르다는 것을 인지할 수 있다. 예를 들어, 64-비트 제어 회로(107)는 코어(101)를 위한 시리얼 넘버를 규정하는 ASCII 데이터를 포함할 수 있다. 다른 64-비트 제어 레지스터는 64개의 다른 속도 셋팅을 가질 수 있고, 속도 셋팅중 오직 하나만 코어(101)를 위한 동작 속도를 특정하기 위해 행사될 수 있다. 마이크로코드 레지스터(108)는 일반적으로 모두 0(즉, 로직 로우 상태) 또는 모두 1(로직 하이 상태)로 초기화될 수 있다. 마이크로코드 패치 메커니즘(109)은 그 주소를 위한 대체 마이크로코드 값과 함께 마이크로코드 롬(미도시) 내의 주소를 나타내기 위해 대략 균일한 1과 0의 분포를 포함할 수 있다. 결론적으로, 캐시 보정(즉, “수리”)메커니즘은 하나 이상의 캐시 메모리의 수리를 작동시키기 위해 특별한 대체 하위-뱅크 부재로 특정한 캐시 하위-뱅크 부재(즉, 행 또는 열)를 대체하기 위한 대체 제어 신호를 나타내기 위해 셋팅들 중 매우 드문 셋팅을 포함할 수 있다.
퓨즈 어레이(102)는 장치의 제조 다음에 마이크로프로세서 코어(101)와 같은 장치를 구성하기 위한 우수한 방법을 제공한다. 퓨즈 어레이(102) 내의 선택된 퓨즈를 블로우함으로써 코어(101)는 그것의 의도된 환경 내의 동작을 위해 구성된다. 그러나 해당 기술분야의 당업자는 동작 환경이 퓨즈 어레이(102)의 프로그래밍 다음에 변할 수 있다는 것을 인지할 수 있다. 비즈니스 요구사항은 본래 구성된 장치(101), 가령 데스크탑 장치(101),가 모바일 장치(101)로서 재구성되는 것을 지시할 수 있다. 따라서 디자이너는 그 안에 선택된 퓨즈를 “언블로우(unblow)”하는 것을 제공하기 위한 퓨즈 어레이(102) 내의 퓨즈의 중복 뱅크를 활용하는 기술을 제공해왔고, 따라서 장치(101)가 재구성되고, 제조 오류가 보정되는 것 등을 가능하게 한다. 이러한 중복 어레이 기술이 이제 도 2를 참조하여 논의될 것이다.
이제 도 2를 참조하면, 퓨즈 어레이(201) 내의 제 1 퓨즈 뱅크(202) PFB1-PFBN을 블로우한 다음에 블로우될 수 있는 중복 퓨즈 뱅크(202) RFB1-RFBN을 포함하는 도 1의 마이크로프로세서 코어(101) 내의 퓨즈 어레이(201)를 나타내는 블록도(200)가 제시된다. 퓨즈 뱅크(202) PFB1-PFBN, RFB1-RFBN 각각은 코어(101)의 특정한 디자인에 상응하는 정해진 개수의 개별적인 퓨즈(203)를 포함한다. 예를 들어, 소정의 퓨즈 뱅크(202) 내의 퓨즈(203)의 개수는 코어 내에서 쉽게 실행되는 포맷 내 구성 데이터의 제공을 가능하게 하기 위해 64-비트 마이크로프로세서 코어(101) 내의 64개 퓨즈(202)일 수 있다.
퓨즈 어레이(201)는 코어(101) 내 리셋 로직 내에 일반적으로 배치된 레지스터(210-211) 셋트에 결합된다. 주 레지스터 PR1은 첫 번째 퓨즈 뱅크 PFB1-PFBN 중 하나(가령, 다이어그램(200)에 나타난 PFB3)를 읽기 위해 사용되고, 중복 레지스터 PR1은 중복 퓨즈 뱅크 RFB1-RFBN 중 상응하는 하나를 읽기 위해 사용된다. 레지스터(210-211)는 출력 FB3은 생산하는 배타적-OR 로직(212)에 결합된다.
동작에서, 코어(101)의 제작 다음에 첫 번째 퓨즈 뱅크 PFB1-PFBN은 알려진 기술에 의해 코어(101)를 위한 구성 데이터로 프로그램된다. 중복 퓨즈 뱅크 RFB1-RFBN은 블로우되지 않고 그 안에 모든 퓨즈를 위해 로직 로우 상태로 남는다. 코어(101)의 파워업/리셋시, 첫 번째 퓨즈 뱅크 PFB1-PFBN 및 중복 퓨즈 뱅크 RFB1-RFBN은 각각 기본 및 중복 레지스터(210-211) 내로 구성에 필요한 대로 읽힌다. 모든 중복 퓨즈 뱅크가 언블로우되기(즉, 로직 로우 상태) 때문에, 출력 FB3 값은 단순히 제조 다음에 첫 번째 퓨즈 뱅크 PFB1-PFBN 내로 프로그램 된 값이다.
하지만 디자인 또는 비즈니스 요구사항이 첫 번째 퓨즈 뱅크 PFB1-PFBN 으로 프로그램된 정보의 일부가 바뀔 필요가 있다고 지시하는 것을 고려해야 한다. 따라서 프로그래밍 동작은 파워업시 읽히는 정보를 바꾸기 위해 중복 퓨즈 뱅크 RFB1-RFBN 내의 상응하는 퓨즈(203)를 블로우하도록 수행된다. 선택된 중복 뱅크 RFB1-RFBN 내의 퓨즈(203)를 블로우함으로써, 기본 퓨즈 뱅크 PFB1-PFBN 내의 상응하는 퓨즈(203)의 값은 논리적으로 보완된다.
도 2의 메커니즘은 장치(101)내 퓨즈(203)의 “리블로우”를 제공하기 위해 사용된다, 그러나 해당 기술분야의 당업자는 오직 하나의 중복 퓨즈 뱅크 RFB1-RFBN 셋트가 있기 때문에 소정의 퓨즈(203)가 오직 한번 리블로우될 수 있다는 것을 인지할 것이다. 추가적인 리블로우를 제공하기 위해, 상응하는 개수의 추가적인 퓨즈 뱅크(202) 및 레지스터(210-211)가 부분(101)에 추가되어야 한다.
지금까지는, 도 1-2를 참조하여 상술한 바와 같이 퓨즈 어레이 메커니즘은 또한 제한적인 수의 리블로우를 허용하면서, 마이크로프로세서 코어 및 다른 관련 장치를 충분히 구성하기 위해 충분한 유연성을 제공해 왔다. 이는 주로 종전의 제조 기술, 가령 65나노미터 및 45나노미터 공정,이 다이 위에 배치된 코어(101)의 구성을 제공하기 위해 충분한 퓨즈의 실행을 위해 다이 위에 충분한 공간을 허용한다는 사실 때문이다. 그러나 본 발명자는 2개의 중요한 요인 때문에 앞으로 오늘 날의 기술은 제한되어 있음을 발견하였다. 첫째로, 해당 기술분야의 트렌드는 처리 성능을 향상하기 위해 멀티플 장치 코어(101)를 하나의 다이위에 배치하는 것이다. 멀티-코어 장치라고 불리는 이것은 가령, 파워업/리셋시 퓨즈 데이터와 함께 구성되어야 하는 2-16 개별적인 코어(101), 각각을 포함할 수 있다. 따라서, 개별적인 코어와 연관된 데이터의 일부가 다르므로(예를 들어, 캐시 보정 데이터, 중복 퓨즈 데이터, 등) 4-코어 장치를 위해 4개의 퓨즈 어레이(201)가 필요하다. 둘째로, 해당 기술분야의 당업자는 제조 공정 기술이 가령, 32나노미터,로 줄어들고, 이에 따라 트랜지스터 크기도 줄어드는 반면에, 퓨즈 크기는 증가하고, 따라서 45나노미터 다이 위의 퓨즈 어레이에 대비되는 32나노미터 위의 같은 크기 퓨즈 어레이를 실행하기 위해 더 많은 공간이 필요하다는 것을 인지할 수 있다.
상술한 제한 및 다른 제한 모두는 장치 디자이너, 그리고 더 구체적으로 멀티-코어 장치 디자이너에게 중요한 도전을 제기하고, 그리고 본 발명자는 종래의 장치 구성 메커니즘을 넘어서는 개선이 캐시 보정 및 퓨즈 리프로그래밍(“리블로우”) 부재의 상당한 증가와 함께 멀티-코어 장치 내 개별적인 코어의 프로그래밍을 감안하는 본 발명에 따라 실행될 수 있다는 것을 언급한다. 이제 본 발명이 도 3-12를 참조하여 논의될 것이다.
도 3으로 돌아와서, 멀티-코어 장치를 위한 구성/수리 데이터의 압축 및 압축해제를 제공하는 본 발명에 따른 시스템(300)을 나타내는 블록도가 제시된다. 멀티-코어 장치는 다이(330)위에 배치된 복수의 코어(332)를 포함한다. 예시적인 목적을 위해, 비록 본 발명이 다이(330)위에 배치된 다양한 수의 코어(332)를 고려하더라도, 4개의 코어(332) 코어 1-코어 4가 다이(330) 위에 도시된다. 하나의 실시예에서, 모든 코어(332)는 다이(330) 위에 또한 배치된 하나의 캐시 메모리(334)를 공유한다. 하나의 프로그램가능한 퓨즈 어레이(336)는 다이(330) 위에 또한 배치되고 코어(332) 각각은 파워업/리셋 동안 상기 정해진 바와 같이 구성 데이터를 검색하고 압축해제 하기 위해 퓨즈 어레이(336)에 접근하도록 구성된다.
하나의 실시예에서, 코어(332)는 멀티-코어 마이크로프로세서(330)로서 구성되는 마이크로프로세서 코어를 포함한다. 다른 실시예에서, 멀티-코어 마이크로프로세서(330)는 x86-호환 멀티-코어 마이크로프로세서로서 구성된다. 또 다른 실시예에서, 캐시(334)는 마이크로프로세서 코어(332)와 연관된 레벨2(L2) 캐시(334)를 포함한다. 하나의 실시예에서, 비록 다른 수의 퓨즈가 고려되더라도, 퓨즈 어레이(336)는 8192(8K)개의 개별적인 퓨즈(미도시)를 포함한다. 싱글-코어 실시예에서, 오직 하나의 코어(332)가 다이위에 배치되고, 코어(332)는 캐시(334) 및 물리적 퓨즈 어레이(336)에 결합된다. 본 발명자는 비록 본 발명의 특징 및 기능이 차후 멀티-코어 장치(330)의 문맥에서 논의되더라도, 이러한 특징과 기능이 싱글-코어 실시예에서 또한 동일하게 적용가능하다는 것을 언급한다.
시스템(300)은 가상 퓨즈 어레이(303)에 결합된 압축기(320)를 포함하는 장치 프로그래머(310)를 또한 포함한다. 하나의 실시예에서, 장치 프로그래머(310)는 잘 알려진 프로그래밍 기술에 따라 다이(330)의 제조 다음에 구성 데이터를 처리하고 퓨즈 어레이(336)를 프로그래밍하도록 구성된 CPU(미도시)를 포함할 수 있다. CPU는 제조 이후 장치 다이(330)을 시험하기 위해 사용되는 웨이퍼 시험 장치로 집적될 수 있다. 하나의 실시예에서, 압축기(320)는 장치 프로그래머(310)에서 실행하는 응용 프로그램을 포함할 수 있고, 가상 퓨즈 어레이(303)는 압축기(320)에 의해 접근되는 메모리 내의 장소를 포함할 수 있다. 가상 퓨즈 어레이(303)는 각각이 복수의 가상 퓨즈(302)를 포함하는 복수의 가상 퓨즈 뱅크(301)를 포함한다. 하나의 실시예에서 가상 퓨즈 어레이(303)는 8kb 크기의 가상 어레이(303)를 야기하며, 각각이 64개의 가상 퓨즈(302)를 포함하는 128개의 가상 퓨즈 뱅크(301)를 포함한다.
동작적으로, 도 1을 참조하여 상술된 바와 같이, 장치(330)를 위한 구성 정보는 제조 공정의 부분으로서 가상 퓨즈 어레이(303)로 입력된다. 따라서 구성 정보는 제어 회로 구성 데이터, 마이크로코드 레지스터를 위한 초기화 정보, 마이크로코드 패치 데이터 및 캐시 보정 데이터를 포함한다. 게다가, 상술된 바와 같이, 각 데이터 타입에 연관된 분배 값은 실질적으로 타입마다 다르다. 가상 퓨즈 어레이(303)는 다이(330) 위의 마이크로프로세서 코어(332) 각각을 위한 구성 정보 및 다이(330) 위의 캐시(334) 각각을 위한 보정 데이터를 포함하는 퓨즈 어레이(미도시)의 논리적 표현이다.
정보가 가상 퓨즈 어레이(303)에 입력된 후, 압축기(320)는 가상 퓨즈 뱅크(301) 각각 내의 가상 퓨즈(302)의 상태를 읽고 압축된 퓨즈 어레이 데이터(303)를 발생시키기 위해 데이터 타입 각각에 상응하는 고유한 압축 알고리즘을 사용하는 정보를 압축한다. 하나의 실시예에서, 제어 회로를 위한 시스템 테이터는 압축되지 않고, 대신에 압축없이 전송된다. 마이크로코드 레지스터 데이터를 압축하기 위해, 마이크로코드 레지스터 데이터에 상응하는 상태 분배를 가지는 데이터를 압축에 효율적인 마이크로코드 레지스터 데이터 압축 알고리즘이 사용된다. 마이크로코드 패치 데이터를 압축하기 위해, 마이크로코드 패치 데이터에 상응하는 상태 분배를 가지는 데이터를 압축에 효율적인 마이크로코드 패치 데이터 압축 알고리즘이 사용된다. 캐시 보정 데이터 데이터를 압축하기 위해, 캐시 보정 데이터에 상응하는 상태 분배를 가지는 데이터를 압축에 효율적인 캐시 보정 데이터 압축 알고리즘이 사용된다.
장치 프로그램(310)은 그 다음 압축되지 않은 퓨즈 어레이 데이터 및 압축된 퓨즈 어레이 데이터를 다이(330) 위의 물리적 퓨즈 어레이(336) 내로 프로그램한다.
파워업/리셋시, 코어(332) 각각은 압축되지 않은 퓨즈 어레이 데이터 및 압축된 퓨즈 어레이 데이터를 검색하기 위해 물리적 퓨즈 어레이(336)에 접근할 수 있고, 코어(332) 각각 내에 배치된 회로/마이크로코드(미도시)를 리셋할 수 있고, 그리고 압축되지 않은 퓨즈 어레이 데이터를 분배하고 가상 퓨즈 어레이(303)에 원래 입력된 값을 발생시키기 위해 상술한 데이터 타입 각각에 상응하는 고유한 압축해제 알고리즘에 따라 압축된 퓨즈 어레이 데이터를 압축해제한다. 리셋 회로/마이크로코드는 그 다음 제어 회로(미도시), 마이크로코드 레지스터(미도시), 패치 부재(미도시) 및 캐시 보정 부재(미도시)로 구성 정보를 입력한다.
유리하게, 본 발명에 따른 퓨즈 어레이 압축 시스템(300) 장치 디자이너가 지금까지 제공된 그것을 넘어서 상당히 적은 물리적 퓨즈 어레이(336) 내의 퓨즈 개수를 사용할 수 있고, 파워업/리셋동안 멀티-코어 장치(330)를 구성하기 위해 그 안에 프로그램된 압축된 정보를 활용할 수 있도록 한다.
이제 도 4로 돌아와서, 본 발명에 따른 퓨즈 압축해제 메커니즘을 나타내는 블록도(400)가 도시된다. 압축해제 메커니즘은 도 3의 마이크로프로세서 코어(332) 각각 내에 배치될 수 있다. 본 발명을 명확하게 설명하기 위해, 오직 하나의 코어(420)가 도 4에 도시되고, 다이 위에 배치된 코어(332) 각각은 코어(420)로 도시된 것과 실질적으로 동등한 부재를 포함한다. 물리적 퓨즈 어레이(401)는 압축된 마이크로코드 패치 퓨즈(403), 압축된 레지스터 퓨즈(404), 압축된 캐시 보정 퓨즈(405) 및 압축된 퓨즈 보정 퓨즈(406)를 포함한다. 물리적 퓨즈 어레이(401)는 상술한 시스템 구성 데이터 및/또는 블록 오류 검사 및 보정(ECC) 코드(미도시)와 같은 압축되지 않은 구성 데이터(미도시) 또한 포함할 수 있다. 본 발명에 따른 ECC특징의 포함은 아래에 더 자세히 논의될 것이다.
마이크로프로세서 코어(420)는 코어의 파워업시 및 코어(420)가 단계의 리셋 순서를 초기화하게 하는 이벤트에 대응하여 발생되는 리셋 신호 RESET을 수신하는 리셋 제어기(417)를 포함한다. 리셋 제어기(417)는 압축해제기(421)를 포함한다. 압축해제기(421)는 패치 퓨즈 부재(408), 레지스터 퓨즈 부재(409) 및 캐시 퓨즈 부재(410)를 가진다. 압축해제기는 버스(412)를 통해 패치 퓨즈 부재(408), 레지스터 퓨즈 부재(409) 및 캐시 퓨즈 부재(410)에 결합된 퓨즈 보정 부재(411) 또한 포함한다. 패치 퓨즈 압축해제기는 코어(420) 내의 마이크로코드 패치 부재(414)에 결합된다. 레지스터 퓨즈 부재(409)는 코어(420) 내의 마이크로코드 레지스터(415)에 결합된다. 캐시 퓨즈 부재(410)는 코어(420) 내의 캐시 보정 부재(416)에 결합된다. 하나의 실시예에서, 캐시 보정 부재(416)는 도 3의 캐시(334)와 같이 모든 코어(420)에 의해 공유되는 온-다이 L2 캐시(미도시) 내에 배치된다. 다른 실시예는 코어(420) 내의 L1 캐시(미도시) 내에 배치된 캐시 보정 부재(416)를 고려한다. 또 다른 실시예는 상술된 L2 및 L1 모두를 보정하기 위해 배치된 캐시 보정 부재(416)를 고려한다. 다른 실시예는 복수의 온-코어 캐시 및 온-코어가 아닌 공유된 캐시를 고려한다.
동작에서, RESET의 실행시 리셋 제어기(416)는 물리적 퓨즈 어레이(401) 내의 퓨즈(402-406)의 상태를 읽고, 압축된 시스템 퓨즈(402)의 상태를 압축해제기(421)로 분배한다. 퓨즈 데이터가 읽히고 분배된 후, 압축해제기(421)의 퓨즈 보정 부재(411)는 상태가 전에 프로그램된 그것으로부터 변경되는 물리적 퓨즈 어레이(410) 내의 하나 이상의 퓨즈 어드레스를 나타내는 데이터를 발생시키기 위해 압축된 퓨즈 보정 부재 상태를 압축해제 한다. 데이터는 하나 이상의 퓨즈 어드레스 각각을 위한 값을 또한 포함한다. 상응하는 그 안에 처리된 퓨즈의 상태가 그들의 상응하는 압축 데이터의 압축해제에 앞서 변경되기 위해 하나 이상의 퓨즈 어드레스(그리고 선택적인 값)는 버스(412)를 통해 부재(408-410)로 전송된다.
하나의 실시예에서, 패치 퓨즈 부재(408)는 도 3을 참조하여 설명된 마이크로코드 패치 압축 알고리즘에 상응하는 마이크로코드 패치 압축해제 알고리즘에 따라 압축된 마이크로코드 패치 퓨즈(403)의 상태를 압축해제하기 위해 동작하는 마이크로코드를 포함한다. 하나의 실시예에서, 레지스터 퓨즈 부재(409)는 도 3을 참조하여 설명된 레지스터 퓨즈 압축 알고리즘에 상응하는 레지스터 퓨즈 압축해제 알고리즘에 따라 압축된 레지스터 퓨즈(404)의 상태를 압축해제하기 위해 동작하는 마이크로코드를 포함한다. 하나의 실시예에서, 캐시 퓨즈 부재(410)는 도 3을 참조하여 설명된 캐시 보정 퓨즈 압축 알고리즘에 상응하는 캐시 보정 퓨즈 압축해제 알고리즘에 따라 압축된 캐시 보정 퓨즈(403)의 상태를 압축해제하기 위해 동작하는 마이크로코드를 포함한다. 부재(408-410) 각각이 버스(412)를 통해 주소(및 선택적인 값)가 퓨즈 보정 부재(411)로부터 제공된 어느 퓨즈의 상태를 변경한 후, 그들의 각각의 데이터는 상응하는 사용되는 알고리즘에 따라 압축해제된다. 아래에 자세히 설명될 바와 같이, 본 발명은 어느 압축해제기(407-411)에 의해 실행되는 압축해제 과정의 초기화에 앞서 물리적 퓨즈 어레이 내의 어느 퓨즈 어드레스의 멀티플 “리블로우”를 고려한다. 하나의 실시예에서 버스(412)는 그 안에 각 루틴 사이에 데이터를 전송하기 위해 사용되는 종래의 마이크로 코드 프로그래밍 메커니즘을 포함할 수 있다. 본 발명은 포괄적인 그것의 특정한 타입에 기초한 구성 데이터를 인지하고 압축해제하는 능력을 가진 압축해제기(421)를 더 고려한다. 따라서, 압축해제기(421) 내의 설명된 부재(408-411)는 본 발명의 관련된 관점을 설명하기 위해 제시된다, 그러나, 고려된 본 발명의 실행은 필수적으로 고유한 부재(408-411)를 포함하지 않을 수 있고, 대신에 상술한 부재(408-411) 각각에 상응하는 기능을 제공하는 포괄적인 압축해제기(421)를 포함할 수 있다.
하나의 실시예에서, 리셋 제어기(417)는 압축된 마이크로코드 패치 퓨즈(403)의 상태를 압축해제 하기 위해 패치 퓨즈 부재(408) 내의 마이크로코드의 실행을 초기화한다. 리셋 제어기(417)는 압축된 레지스터 퓨즈(404)의 상태를 압축해제 하기 위해 레지스터 퓨즈 부재(409) 내의 마이크로코드의 실행 또한 초기화한다. 그리고 리셋 제어기(417)는 압축된 캐시 보정 퓨즈(406)의 상태를 압축해제 하기 위해 캐시 퓨즈 부재(410) 내의 마이크로코드의 실행을 더 초기화한다. 압축해제기(421) 내의 마이크로코드는 또한 압축된 데이터의 압축해제에 앞서 압축된 퓨즈 보정 퓨즈(406)에 의해 제공된 퓨즈 보정 데이터에 의해 어드레스된 어느 퓨즈의 상태를 변경하기 위해 동작한다.
본 발명에 따른 리셋 제어기(417), 압축해제기(421) 및 그 안에 부재(408-411)는 상술한 기능과 동작을 수행하도록 구성된다. 리셋 제어기(417), 압축해제기(421) 및 그 안에 부재(408-411)는 로직, 회로, 장치, 또는 마이크로코드, 또는 로직, 회로, 장치, 또는 마이크로코드의 조합, 또는 언급한 것과 같은 본 발명에 따른 기능 및 동작을 수행하기 위해 사용되는 동등한 부재를 포함할 수 있다. 리셋 제어기(417), 압축해제기(421) 및 그 안에 부재(408-411) 내의 이러한 동작 및 기능을 수행하기 위해 사용되는 부재는 리셋 제어기(417), 압축해제기(421) 및 그 안에 부재(408-411) 내의 다른 기능 및/또는 기능을 수행하기 위해 사용되는 다른 회로, 마이크로코드 등 또는 코어(420) 내의 다른 부재와 공유될 수 있다.
물리적 퓨즈 어레이(401) 내의 퓨즈(403-406)의 상태가 변경되고 압축해제된 후, 압축해제된 “가상”퓨즈의 상태는 그 다음 적합한 마이크로코드 패치 부재(414), 마이크로코드 레지스터(415) 및 캐시 보정 부재(416)로 전송된다. 따라서, 코어(420)는 리셋 단계의 완료 다음의 동작을 위해 구성된다.
본 발명자는 상술한 압축해제 기능은 리셋 순서 동안 특정한 명령에서 반드시 수행될 필요는 없다고 언급한다. 예를 들어, 마이크로코드 패치는 마이크로코드 레지스터 초기화 데이터의 압축해제 다음에 압축해제 될 수 있다. 이와 같이, 압축해제 기능은 디자인 제약을 만족하기에 적합하도록 병렬적으로 또는 순서대로 수행될 수 있다.
게다가, 본 발명자는 부재(408-411)의 실행이 마이크로코드 대 하드웨어 회로에서 반드시 실행될 필요는 없다고 언급한다, 왜냐하면 일반적인 마이크로프로세서 코어(420)내에 마이크로코드에 의한 직접 기록에 대비되어 하드웨어(캐시에 연관된 스캔 체인과 같은)를 통해 보다 쉽게 초기화될 수 있는 코어(420)의 부재가 존재하기 때문이다. 그러한 실행 세부사항은 디자이너의 판단에 달려 있다. 그러나, 본 발명자는 선행 기술이 마이크로코드의 실행을 초기하는 것에 앞서 리셋 동안 하드웨어 회로에 의해 캐시 보정 퓨즈가 관례대로 읽히고 캐시 보정 스캔 체인에 입력되는 것을 설명하고, 그리고 마이크로코드가 작동할 때까지 코어의 캐시는 일반적으로 턴온되지 않기 때문에 하드웨어 제어 회로에 대비되어 마이크로 코드 내 캐시 퓨즈 압축해제기(410)를 실행하는 것이 본 발명의 특징이라고 한다. 캐시 퓨즈 부재(410)를 실행하기 위해 마이크로코드를 이용함으로써, 스캔 체인에 캐시 보정 데이터를 입력하기 위한 더 유연하고 유리한 메커니즘이 제공되고, 중요한 하드웨어가 저장된다.
이제 도 5를 참조하면, 본 발명에 따른 압축된 구성 데이터(500)를 위한 예시적인 포맷(500)을 도시하는 블록도가 제시된다. 압축된 구성 데이터(500)는 도 3의 압축기에 의해 가상 퓨즈 어레이(303) 내에 있는 데이터로부터 압축되고 멀티-코어 장치(330)의 물리적 퓨즈 어레이(336)로 프로그램된다(즉, 블로우된다). 리셋 순서동안, 상술한 바와 같이, 압축된 구성 데이터(500)는 각 코어(332)에 의해 물리적 퓨즈 어레이(336)로부터 검색되고 각 코어(420) 내의 압축해제기(421)의 부재(408-411)에 의해 압축해제되고 보정된다. 압축해제되고 보정된 구성 데이터는 동작을 위한 코어(420)를 초기화하기 위해 코어(420)내의 여러 부재(413-416)로 그 다음 제공된다.
압축된 구성 데이터(500)는 상술한 구성 데이터 타입 각각을 위한 하나 이상의 압축된 데이터 필드(502)를 포함하고, 이는 타입의-엔드 필드(503)에 의해 구별된다. 프로그래밍 이벤트(즉, “블로우”)는 블로우의-엔드 필드(504)에 의해 구별된다. 각 데이터 타입에 연관된 압축된 데이터 필드(502)는 각 데이터 타입에 연관된 특정한 비트 패턴을 저장하기 위해 필요한 비트(즉,“퓨즈”)의 수를 최소화하기 위해 적합화된 압축 알고리즘에 따라 부호화된다. 각 압축된 데이터 필드(502)를 구성하는 물리적 퓨즈 어레이(336) 내 퓨즈의 수는 특정한 데이터 타입을 위해 사용되는 압축 알고리즘의 기능이다. 예를 들어, 코어는 모두 1 또는 모두 0으로 초기화되어야 하는 64개 64-비트 마이크로코드 레지스터를 포함한다. 최적의 압축 알고리즘은 각 압축된 데이터 필드(502)가 레지스터 번호 순서(즉, 1-64)에서 정해지는 곳에서 데이터 타입에 대한 64 압축된 데이터 필드(502)를 생산하기 위해 채택될 수 있다. 그리고 각 압축된 데이터 필드(502)는 상응하는 마이크로코드 레지스터가 모두 1로 초기화되면 블로우되고, 상응하는 마이크로코드 레지스타가 모드 0으로 초기화되면 블로우되지 않는 싱글 퓨즈를 포함한다.
코어(420) 내의 압축해제기(421)의 부재(408-410)는 그들의 각 압축된 데이터가 물리적 퓨즈 어레이(336) 내에 위치되는 곳을 결정하기 위해 타입의-엔드 필드(503)를 활용하도록 구성되고 퓨즈 보정 압축해제기(411)는 초기 프로그래밍 이벤트 다음에 프로그램 완료된(즉, 블로우된) 압축된 퓨즈 보정 데이터를 위치시키기 위해 블로우의-엔드 필드(504)를 이용하도록 구성된다.
아래에 더 자세히 논의될 것과 같이, 상당수의 그 다음의 프로그래밍 이벤트를 감안하기 위해 물리적 퓨즈 어레이(336) 내의 상당히 드문 퓨즈의 양을 제공하는 것은 본 발명의 특징이다.
구성 데이터의 압축 및 압축해제에 연관된 본 발명의 측면을 명확하게 설명하기 위해 상술한 예시적인 압축된 타입 포맷이 제시된다. 그러나, 특정한 타입 데이터가 압축되고, 구별되는 방식, 및 퓨즈 어레이(401) 내에 압축되기 위한 데이터의 수 및 타입은 도 5의 예에 한정되지 않도록 의도된다. 다른 수, 타입 및 포맷은 본 발명을 다양한 장치 및 기술 분야에서 현존하는 아키텍쳐에 맞추는 것을 감안하는 것이 고려된다.
이제 도 6으로 돌아와서, 본 발명에 따른 압축해제된 마이크로코드 패치 구성 데이터(600)를 위한 예시적인 포맷을 도시하는 블록도가 제시된다. 리셋 순서동안, 압축된 마이크로코드 패치 구성 데이터는 각 코어(420)에 의해 물리적 퓨즈 어레이(401)로부터 읽힌다. 압축된 마이크로코드 패치 구성 데이터는 그 다음 버스(412)를 통해 제공된 퓨즈 보정 데이터에 따라 보정된다. 그다음, 보정된 압축된 마이크로코드 패치 구성 데이터는 패치 퓨즈 압축해제기(408)에 의해 압축해제된다. 압축해제 처리의 결과는 압축해제된 마이크로코드 패치 구성 데이터(600)이다. 데이터(600)는 초기화 데이터를 필요로 하는 코어(420) 내의 마이크로 패치 부재(414)의 수에 상응하는 복수의 압축해제된 데이터 블록(604)을 포함한다. 각 압축해제된 데이터 블록(604)은 코어 어드레스 필드(601), 마이크로코드 롬 어드레스 필드(602) 및 마이크로코드 패치 데이터 필드(603)를 포함한다. 필드(601-603)의 사이즈는 코어 아키텍쳐의 함수이다. 압축해제 처리의 부분으로서, 패치 퓨즈 압축해제기(408)는 마이크로코드 패치 부재(414)를 초기화하기 위해 필요한 완전한 타겟 데이터의 이미지를 생성한다. 마이크로코드 패치 구성 데이터(600)의 압축해제 다음에, 기존의 분배 메커니즘은 데이터(603)를 마이크로코드 패치 부재(414) 내 어드레스된 코어 및 마이크로코드 롬 대체 회로/레지스터 각각에 분배하기 위해 사용된다.
이제 도 7로 돌아와서, 본 발명에 따른 압축해제된 마이크로코드 레지스터 구성 데이터(700)를 위한 예시적인 포맷을 나타내는 블록도가 제시된다. 리셋 순서동안 압축된 마이크로코드 레지스터 구성 데이터는 각 코어(420)에 의해 물리적 퓨즈 어레이(401)로부터 읽힌다. 압축된 마이크로코드 레지스터 구성 데이터는 그 다음 버스(412)를 통해 제공된 퓨즈 보정 데이터에 따라 보정된다. 그 다음, 보정된 압축된 마이크로코드 레지스터 구성 데이터는 레지스터 퓨즈 압축해제기(407)에 의해 압축해제된다. 압축해제 처리의 결과는 압축해제된 마이크로코드 레지스터 구성 데이터(700)이다. 데이터(700)는 초기화 데이터를 필요로 하는 코어(420) 내의 마이크로코드 레지스터(415)의 수에 따른 복수의 압축해제된 데이터 블록(704)을 포함한다. 각 압축해제된 데이터 블록(704)은 코어 어드레스 필드(701), 마이크로코드 레지스터 어드레스 필드(702) 및 마이크로코드 레지스터 데이터 필드(703)를 포함한다. 필드(701-703)의 사이즈는 코어 아키텍쳐의 함수이다. 압축해제 처리의 부분으로서, 레지스터 퓨즈 압축해제기(407)는 마이크로코드 레지스터(415)를 초기화하기 위해 필요한 타겟 데이터의 완전한 이미지를 생성한다. 마이크로코드 레지스터 구성 데이터(700)의 압축해제 다음에, 기존의 분배 메커니즘은 데이터(703)를 어드레스된 코어 및 마이크로코드 레지스터(415) 각각에 분배하기 위해 사용된다.
이제 도 8을 참조하면, 본 발명에 따른 압축해제된 캐시 보정 데이터(800)를 위한 예시적인 포맷을 나타내는 블록도가 제시된다. 리셋 순서동안 압축된 캐시 보정 데이터는 각 코어(420)에 의해 물리적 퓨즈 어레이(401)로부터 읽힌다. 압축된 캐시 보정 데이터는 그 다음 버스(412)를 통해 제공된 퓨즈 보정 데이터에 따라 보정된다. 그 다음, 보정된 압축된 캐시 보정 데이터는 캐시 퓨즈 압축해제기(410)에 의해 압축해제된다. 압축해제 처리의 결과는 압축해제된 캐시 보정 데이터(800)이다. 다양한 캐시 메커니즘이 멀티-코어 프로세서(330) 내에서 사용될 수 있고 압축해제된 캐시 보정 데이터(800)가 모든 코어(332)가 싱글 캐시(334)에 접근할 수 있는 곳에서 공유된 영역을 이용하는 공유된 L2 캐시(334)의 문맥에서 제시된다. 따라서 예시적인 포맷이 언급된 아키텍쳐에 따라 제공된다. 데이터(800)는 복수의 보정하는 데이터를 필요로 하는 코어(420) 내의 캐시 보정 부재(416)의 수에 따라 복수의 압축해제된 데이터 블록(804)을 포함한다. 각 압축해제된 데이터 블록(804)은 하위-유닛 열 어드레스 필드(802) 및 대체 열 어드레스 필드(803)를 포함한다. 해당 기술 분야의 당업자가 인지할 것과 같이, 메모리 캐시는 비-기능적인 열(또는 행)을 대신하기 위해 특정한 하위-유닛 내 기능적인 열(또는 행)을 감안하기 위해 캐시의 하위-유닛에서 중복 열(또는 행)로 제조된다. 따라서 압축해제된 캐시 보정 데이터(800)는 비-기능적인 열을 위한 기능적 행(도 8에 도시된 것과 같이)의 대체를 감안한다. 게다가, 기술 분야의 당업자는 동의할 것과 같이, 캐시 보정에 연관된 기존의 퓨즈 어레이 메커니즘은 중복 하위-유닛 열에 의해 대체가 필요한 때 블로우되는 각 하위-유닛 행에 연관된 퓨즈를 포함한다. 따라서, 많은 수의 퓨즈가 필요하기 때문에(그 안에 모든 하위-유닛 및 열을 어드레스 하기 위해), 오직 하위-유닛의 부분만이 일반적으로 커버되고, 그 다음 초래된 기존의 캐시 보정 퓨즈는 아주 드물게 블로우된다. 그리고 본 발명자는 대체를 필요로 하는 그 하위-유닛 열만을 위한 하위-유닛 열 어드레스 및 대체 열 어드레스를 어드레스하고 압축하고, 따라서 캐시 보정 데이터를 실행하기 위해 필요한 퓨즈의 수를 최소화하는 것이 본 발명의 특징이라고 언급한다. 결과적으로, 물리적 퓨즈 어레이 사이즈 및 그 안에 프로그램된 추가적인 구성 데이터의 양에 의해 제한되기 때문에, 본 발명은 지금까지 제공된 것을 넘어 보정될 수 있는 캐시(334)내의 하위-유닛 열(또는 행)의 수를 확장하기 위한 가능성을 제공한다. 도 8에 도시된 실시예에서, 연관된 코어(332)가 구성되므로 L2 캐시(334)를 공유하는 코어(334) 중 오직 하나가 보정하는 데이터(802-803)에 접근하고 이를 그것의 각 캐시 보정 부재(416)에 제공할 수 있다는 것이 언급된다. 필드(802-803)의 사이즈는 코어 아키텍쳐의 함수이다. 압축해제 처리의 부분으로서, 캐시 보정 퓨즈 압축해제기(410)는 캐시 보정 부재(416)를 초기화하기 위해 필요한 타겟 데이터의 완전한 이미지를 생성한다. 캐시 보정 데이터(800)의 압축해제 다음에, 책임 있는 코어(420)내의 기존의 분배 메커니즘은 데이터(802-803)를 어드레스된 캐시 보정 부재(416) 각각에 분배하기 위해 사용된다.
도 9로 돌아와서, 본 발명에 따른 압축해제된 캐시 보정 데이터(900)를 위한 대체의 예시적인 포맷을 나타내는 블록도가 제시된다. 도 9의 실시예는 각 코어(420)가 레벨 1(L1) 데이터 캐시 및 L1 명령 캐시를 포함하는, 그러나 이에 제한되지 않는, 하나 이상의 온-코어 캐시(미도시)를 포함하는 곳에서, 도 4의 그것과 같은 멀티-코어 프로세서 구성 내에서 사용될 수 있다. 리셋 순서동안 압축된 캐시 보정 데이터는 각 코어(420)에 의해 물리적 퓨즈 어레이(401)로부터 판독된다. 압축된 캐시 보정 데이터는 그 다음 버스(412)를 통해 제공된 퓨즈 보정 데이터에 따라 보정된다. 그 다음, 보정된 압축된 캐시 보정 데이터는 캐시 퓨즈 압축해제기(410)에 의해 압축해제된다. 압축해제 처리의 결과는 압축해제된 캐시 보정 데이터마이크로코드 레지스터 구성 데이터(900)이다. 데이터(900)는 보정하는 데이터를 필요로 하는 코어(420) 내의 캐시 보정 부재(416)의 수에 따른 복수의 압축해제된 데이터 블록(904)을 포함한다. 각 압축해제된 데이터 블록(904)은 코어 어드레스 필드(901), 캐시 어드레스(CAD) 필드(905), 하위-유닛 열 어드레스 필드(902) 및 대체 열 어드레스 필드(903)를 포함한다. 따라서, 압축해제된 캐시 보정 데이터(800)는 코어 어드레스 필드(901)에 의해 특정된 코어(420) 내의, CAD 필드(905)에 의해 특정된 캐시 내의 비-기능적인 열(또는 행)을 위한 기능적인 열(또는 행)의 대체를 감안한다. 코어 어드레스 필드(901) 내의 미리 정의된 코어 어드레스 값은 온-코어가 아닌, L2 캐시와 같은, 공유된 캐시를 특정할 수 있다. 필드(901-903, 905)의 사이즈는 코어 아키텍쳐의 함수이다. 압축해제 처리의 부분으로서, 캐시 보정 퓨즈 압축해제기(410)는 캐시 보정 부재(416)를 초기화하기 위해 필요한 타겟 데이터의 완전한 이미지를 생성한다. 캐시 보정 데이터(900)의 압축해제 다음에, 책임 있는 코어(420) 내의 기존의 분배 메커니즘은 데이터(901-903, 905)를 어드레스된 캐시 보정 부재(416) 각각에 분배하기 위해 사용된다.
도 10으로 돌아와서, 본 발명에 따른 압축해제된 퓨즈 보정 데이터(1000)를 위한 예시적인 포맷을 나타내는 블록도가 제시된다. 상술한 바와 같이, 리셋동안 퓨즈 보정 압축해제기(411)는 물리적 퓨즈 어레이(401) 내의 압축된 퓨즈 보정 데이터(406)에 접근하고, 압축된 퓨즈 보정 데이터를 압축해제하고, 초래된 압축해제된 퓨즈 보정 데이터(1000)를 코어(420) 내의 다른 압축해제기(407-410)에 공급한다. 압축해제된 퓨즈 보정 데이터는 물리적 퓨즈 어레이(401) 내의 연속적인 프로그래밍 이벤트의 끝을 나타내는 하나 이상의 블로우의-엔드 필드(1001)를 포함한다. 만약 다음의 프로그래밍 이벤트가 발생하면, 리블로우 필드(1002)는 다음의 하나 이상의 퓨즈 보정 필드(1003)가 리블로우될 물리적 퓨즈 어레이(401) 내의 퓨즈를 나타내는 것을 나타내기 위해 프로그램된다. 각 퓨즈 보정 필드는 특정한 퓨즈를 위한 상태(즉, 블로우된 또는 언블로우된)에 따라 리블로우될 물리적 퓨즈 어레이(401) 내의 특정한 퓨즈의 어드레스를 포함한다. 오직 리블로우 될 저 퓨즈만이 퓨즈 보정 블록 필드(1003)에 제공되고, 소정의 리블로우 이벤트 내의 각 필드(1003)의 그룹은 블로우의-엔드 필드(1001)에 의해 구별된다. 만약 적절하게 부호화된 리블로우 필드(1002)가 소정의 블로우의-엔드 필드(1001) 다음에 존재한다면, 그 다음 이후의 하나 이상의 퓨즈는 상응하는 퓨즈 보정 필드에 의해 지시됨으로써 리블로우되도록 구성될 수 있다. 따라서 본 발명은 어레이 사이즈 및 그 안에 제공된 다른 데이터에 의해 제한된 것과 같이 같은 퓨즈를 위한 상당수의 리블로우를 위한 능력을 제공한다.
본 발명자는 압축된 구성 데이터 내의 공유된 물리적 퓨즈 어레이의 이용에 연관된 공간 및 파워 게인이 멀티-코어 다이 위에 배치된 추가적인 특징을 위한 저장된 현재의 기회라는 것 또한 인지하였다. 게다가, 본 발명자는 해당 기술 분야의 당업자는 오늘날의 반도체 퓨즈 구조가 때때로 그 중 하나가 “그로우 백”인 몇몇의 결점에 의해 악화된다는 것을 인지할 것이라고 언급했다. 그로우백은 프로그래밍 처리의 뒤바꿈이다, 그래서 퓨즈는, 얼마 후, 블로우 된 후 재연결될 것이다, 즉 그것은 프로그램된(블로우된) 상태로부터 프로그램되지 않은(언블로우된) 상태로 돌아간다.
다른 관점에서, 위에 시사된 바와 같이, 본 발명자는 파워 게이팅 기술이 도 3의 다이(330)와 같은 멀티-코어 다이에서의 파워 소비를 최소화하기 위해 사용되는 때 과제가 존재할 수 있다고 언급한다. 본 출원의 범위를 넘어서는 그러한 기술은 하나 이상의 코어(332)가 이용되지 않는 때, 그리고 다양한 방법에서, 하나 이상의 코어(332)가 파워-다운되는(파워 게이팅 이벤트로도 알려진) 때를 검출하기 위해 사용될 수 있다. 파워-게이티드 코어(332)가 실행을 위해 필요한 때, 파워는 코어로 복원되고 실행이 시작된다. 본 발명자의 특정한 관심은 도 9를 참조하여 논의된 바와 같이 코어(332)가 하나 이상의 온-코어 캐시를 포함하는 경우에 있다, 그리고 거기서 파워는 파워 게이팅 이벤트하에서 이러한 캐시로부터 제거된다. 해당 기술 분야의 당업자가 이해할 바와 같이, 파워 게이팅 이벤트 다음에 하나 이상의 캐시를 파워 업하기 위해, 하나 이상의 캐시는 상술된 퓨즈 보정 데이터를 사용하며 먼저 구성되어야 한다. 그러나, 당업자는 퓨즈 어레이의 과도한 읽기는 그 안에 퓨즈의 수명을 감소시킨다는 것 또한 인지할 수 있다. 파워 게이팅에 연관된 다른 문제는 캐시 보정 퓨즈를 읽고, 압축된 퓨즈 복구 데이터를 압축해제하고, 그것의 각 온-코어 캐시의 각각을 위한 보정을 구성하기 위해 각 코어에 필요한 과도한 시간이다. 따라서, 본 발명의 다른 실시예는 1) 파워 게이팅 이벤트 다음에 그들의 각 온-코어 캐시를 압축해제하고 구성하기 위한 모든 코어를 위해 필요한 시간을 줄이고, 2) 파워 게이팅 조건하에서 코어에 의한 접근의 수를 줄이는 것에 의해 퓨즈 어레이의 전체 수명을 증가시키기 위해 제공된다.
이제 도 11로 관심을 돌리면, 처음에 그리고 파워 게이팅 이벤트 다음에, 캐시 보정 데이터를 멀티-코어 디바이스(1100)로 빠르게 불러오기 위한 본 발명에 따른 상세한 메커니즘을 나타내는 블록도가 나타나는 도 11로 관심이 향한다. 장치(1100)는 도 3-10을 참조하여 많이 상술한 바와 같이 구성된 복수의 코어(1101)를 포함한다. 게다가 각 코어(1101)는 하나 이상의 온-코어 캐시 CACHE1-CACHEN(1102), 캐시 복구 저장공간(1103), 구성 데이터 저장공간(1104), 리셋 로직(1105) 및 슬립 로직(1106)을 포함한다. 각 코어(1102)는 도 3-10을 참조하여 상술한 것과 같이 구성된 물리적 퓨즈 어레이(1110) 및 코어(1101)가 배치된 것과 같은 다이 위에 배치되나 어떠한 코어(1101) 내에든 배치되지 않는 저장공간(예를 들어, 랜덤 접근 메모리(RAM))(1130)에 결합된다. 따라서 저장공간(1105)은 앞으로 "언코어" 저장공간(1105)이라고 언급된다. 언코어 저장공간(1130)은 각 코어(1101)에 각각 상응하는 지정된 하위-저장공간(1131-1134)을 포함한다. 멀티-코어 장치(1100)는 각 코어에 결합된 파워 제어(1120)를 더 포함한다. 싱크 버스 SYNC는 파워업, 리셋 및 파워 게이팅 이벤트동안 거기 사이의 동기화 통신을 제공하기 위한 코어(1101) 각각에 결합된다.
예시의 목적을 위해, 오직 4개의 코어(1101), 싱글 물리적 퓨즈 어레이(1110) 및 싱글 언코어 저장공간(1130)이 나타난다, 그러나 본 발명자는 본 발명에 따른 신규하고 진보한 개념은 어떠한 개수의 복수의 코어(1101), 퓨즈 어레이(1110) 및 언코어 저장공간(1130)으로 확장될 수 있다는 것을 언급한다. 하나의 실시예에서, 언코어 저장공간(1130)은 파워 게이팅 이벤트 동안 파워를 유지하는 랜덤 접근 메모리(RAM)를 포함한다. 하나의 실시예에서, 언코어 저장공간(1130)은 ,다른 사이즈가 고려되더라도, 4KB RAM을 포함한다.
동작에서, 파워 제어(1120)는 하나 이상의 코어(1101)에 파워를 제거하고 복원시키기 위한 파워 게이팅을 수행하도록 구성된다. 파워업/리셋동안, 각 코어(1101) 상의 리셋 로직(1105)은 ,다른 동작 가운데, 상술한 바와 같이 코어(1101)의 구성을 수행하도록 구성된다. 게다가, 리셋 로직(1105)은 코어(1101)가 마스터 코어인지, 슬레이브 코어인지를 결정하기 위한 구성 데이터 레지스터(1104)를 읽도록 구성된다. 만약 구성 데이터가 코어(1101)가 , 리셋 처리의 부분으로서, 슬레이브 코어임을 나타내는 경우, 각 코어(1101)를 위해 압축해제된 캐시 복구 데이터가 퓨즈 어레이(1110)로부터 읽히고 언코어 저장공간(1130) 내의 상응하는 하위-저장공간(1131-1134) 내로 기록되었음을 마스터 코어가 동기화 버스 SYNC를 통해 신호를 보낼 때까지 슬레이브 코어는 대기한다. 상응하는 하위-저장공간(1131-1134)이 기록된 SYNC를 통해 표시시 각 슬레이브 코어는 상응하는 하위-저장공간(1131-1134)로부터 그들의 각 압축된 복구 데이터를 읽고 계속해서 상술한 바와 같이 그들의 각 온-코어 캐시를 구성한다. 만약 구성 데이터가, 그 다음 파워업/리셋의 부분으로서, 코어(1101)가 마스터 코어임을 나타내는 경우, 마스터 코어는 퓨즈 어레이(1110)로부터 모든 코어(1101)를 위한 캐시 보정 데이터를 읽고, 모든 코어(1101)를 위한 압축된 보정 데이터를 압축해제하고, 압축해제된 캐시 복구 데이터를 각 코어(1101)에 상응하는 하위-저장공간(1131-1134)에 기록한다. 마스터 코어는 그 다음 압축해제된 캐시 복구 데이터의 기록이 완료되었음을 SYNC를 통해 다른 코어(1101)에 신호를 보낸다.
파워 게이팅 이벤트동안, 파워 제어(1120)는 파워가 코어의 온-코어 캐시(1102)로부터 또한 제거되는 정도까지 하나 이상의 코어(1101)로부터 파워를 제거한다. 그러나, 파워는 언코어 저장공간(1130)으로부터 제거되지는 않고, 따라서 각 코어(1101)를 위한 압축해제된 복구 데이터를 보존한다. 슬립 로직(1106)은 파워가 파워 게이팅 이벤트 다음에 각 코어(1101)로 복원되는 때를 정하고, 그것의 각 하위-저장공간(1131-1134)으로부터 그것의 온-코어 캐시를 위한 캐시 복구 데이터를 직접 읽고, 그리고 그것의 온-코어 캐시(1102)의 보정을 위한 그것의 각 복구 데이터 저장공간(1103)을 구성하도록 구성되며, 따라서 파워 게이팅 이벤트 가음의 동작으로 돌아오기 위해 필요한 시간을 급격하게 줄여주며, 동시에 퓨즈 어레이(1110)의 수명을 상당히 증가시킨다.
본 발명의 부분 및 대응하는 세부적인 설명이 소프트웨어, 또는 알고리즘 및 컴퓨터 메모리 내의 데이터 비트 상의 동작의 심볼 표현의 관점에서 제시된다. 이들 설명 및 표현은 해당기술분야의 통상의 기술자가 해당기술분야의 다른 통상의 기술자에게 연구의 요지를 효과적으로 전달하는 것에 의한 것이다. 용어가 여기에 사용되는 바와 같고 그것이 일반적으로 사용되는 바와 같은, 알고리즘은 요구되는 결과로 유도하는 단계의 자가-충족적 시퀀스인 것으로 간주된다. 단계는 물리적 양의 물리적 조작을 요구하는 이들이다. 일반적으로, 필수적이지 않음에도, 이들 양은 저장되고, 전달되며, 비교되고, 그렇지 않으면 조작될 수 있는 광학, 전기, 또는 자기 신호의 형태를 취한다. 그것은 원칙적으로, 비트, 값, 부재, 심볼, 특징, 용어, 수, 또는 그와 유사한 것과 같은 이들 신호를 언급하도록 공통 사용하는 이유 때문에 때때로 편리하다.
그러나 모든 이들 그리고 유사한 용어가 적절한 물리적 양과 연관되어야만 하고 단지 이들 양에 적용된 편리한 라벨일 뿐임을 유념해야 한다. 달리 구체적으로 언급되거나 논의로부터 명백한 바와 같지 않다면, "처리하는" 또는 "컴퓨팅" 또는 "계산하는" 또는 "결정하는" 또는 "디스플레이하는" 또는 그와 유사한 것과 같은 용어는 컴퓨터 시스템 메모리 또는 레지스터 또는 다른 그러한 정보 저장소, 전달, 또는 디스플레이 디바이스 내의 물리적 양으로서 유사하게 표현된 다른 데이터로의 컴퓨터 시스템의 레지스터 및 메모리 내의 물리적, 전자량으로 표현된 데이터를 조작하고 변형하는 컴퓨터 시스템, 마이크로프로세서, 중앙처리장치, 또는 유사한 전자 컴퓨팅 디바이스의 작동 및 프로세스를 말한다.
본 발명의 소프트웨어 실행된 측면은 일반적으로 프로그램 저장 매체의 일부 형태 상에 인코딩되거나 전달 매체의 일부 타입을 통해 실행된다. 프로그램 저장 매체는 전자(예, 판독 전용 메모리, 플래쉬 판독 전용 메모리, 전기적으로 프로그래머블 판독 전용 메모리), 랜덤 액세스 메모리 자기(예, 플로피 디스크 또는 하드 드라이브) 또는 광학(예, 컴팩트 디스크 판독 전용 메모리, 또는 "CD ROM")일 수 있고, 그리고 판독 전용 또는 랜덤 액세스일 수 있다. 유사하게, 전달 매체는 금속 트레이스, 연선 페어, 동축 케이블, 광섬유, 또는 당업자에게 공지된 일부 다른 적절한 송신 매체일 수 있다. 본 발명은 임의의 주어진 실행의 이들 측면에 의해 한정되지 않는다.
위에 논의된 특정 실시예는 설명적으로만 도시되며, 해당 기술분야의 당업자는 본 발명의 동일한 목적을 실행하기 위해 다른 구조를 설계하거나 수정하기 위한 토대로서 개시된 개념 및 특정 실시예를 용이하게 사용할 수 있고, 다양한 수정, 대체 및 대안이 첨부된 청구항에 의해 제시된 바와 같이 본 발명의 범위로부터 벗어나지 않고 여기 이루어질 수 있다는 것을 인지할 것이다.

Claims (21)

  1. 집적회로에 구성 데이터를 제공하는 장치에 있어서,
    다이 위에 배치된 반도체 퓨즈 어레이에 결합되고, 다이 위에 배치된 복수의 코어를 위한 압축된 구성 데이터로 반도체 퓨즈 어레이를 프로그램하도록 구성된 장치 프로그래머;
    복수의 코어에 결합되고, 저장공간은 복수의 코어 각각에 각각 상응하는 복수의 하위-저장공간을 포함하며, 복수의 코어 중 하나는 압축된 구성 데이터를 읽고 압축해제를 위해 파워업/리셋시 반도체 퓨즈 어레이에 접근하고, 그리고 복수의 코어 각각 내의 하나 이상의 캐시 메모리를 위한 복수의 압축해제된 구성 데이터 셋트를 복수의 하위-저장공간 내에 저장하도록 구성된 저장공간;을 포함하고,
    복수의 코어 각각은,
    파워 게이팅 이벤트 다음에 하나 이상의 캐시를 초기화하기 위한 압축해제된 구성 데이터 셋트를 검색하고 사용하기 위해 복수의 하위-저장공간 각각 중 상응하는 하나에 연속적으로 접근하도록 구성된 슬립 로직을 포함하는 것을 특징으로 하는 집적회로에 구성 데이터를 제공하는 장치.
  2. 제 1 항에 있어서,
    복수의 코어 중 하나 내의 캐시 퓨즈 압축해제기는 파워업/리셋 동안 마이크로코드를 실행함으로써 압축된 구성 데이터를 압축해제하는 것을 특징으로 하는 집적회로에 구성 데이터를 제공하는 장치.
  3. 제 1 항에 있어서,
    압축해제된 구성 데이터 셋트 각각은 정상 동작 동안 사용되지 않기 위한 하나 이상의 캐시메모리 중 하나 내에 하나 이상의 하위-유닛 위치를 나타내는 복수의 제 1 반도체 퓨즈를 포함하는 것을 특징으로 하는 집적회로에 구성 데이터를 제공하는 장치.
  4. 제 3 항에 있어서,
    압축해제된 구성 데이터 셋트 각각은 하나 이상의 하위-유닛 위치 중 상응하는 일부의 대체물 내에 정상 동작 동안 사용되기 위한 하나 이상의 캐시메모리 중 하나 내에 하나 이상의 대체 하위-유닛 위치를 나타내는 복수의 제 2 반도체 퓨즈를 더 포함하는 것을 특징으로 하는 집적회로에 구성 데이터를 제공하는 장치.
  5. 제 4 항에 있어서,
    하위-유닛 위치 및 대체 하위-유닛 위치는 하나 이상의 캐시 메모리 중 하나 내에 열(column) 및 중복 열(column)을 각각 포함하는 것을 특징으로 하는 집적회로에 구성 데이터를 제공하는 장치.
  6. 제 4 항에 있어서,
    하위-유닛 위치 및 대체 하위-유닛 위치는 하나 이상의 캐시 메모리 중 하나 내에 행(row) 및 중복 행(row)을 각각 포함하는 것을 특징으로 하는 집적회로에 구성 데이터를 제공하는 장치.
  7. 제 1 항에 있어서,
    집적회로는 x86-호환 멀티-코어 마이크로프로세서를 포함하는 것을 특징으로 하는 집적회로에 구성 데이터를 제공하는 장치.
  8. 집적회로 장치에 구성 데이터를 제공하는 장치에 있어서,
    다이 위에 배치된 반도체 퓨즈 어레이에 결합되고, 다이 위에 배치된 복수의 코어를 위한 압축된 구성 데이터로 반도체 퓨즈 어레이를 프로그램하도록 구성된 장치 프로그래머; 및
    멀티-코어 마이크로 프로세서;를 포함하고,
    멀티-코어 마이크로 프로세서는,
    다이 위에 배치되고, 다이 위에 배치된 복수의 코어를 위해 압축된 구성 데이터내로 프로그램되고, 반도체 퓨즈 어레이에 결합된 반도체 퓨즈 어레이; 및
    복수의 코어에 결합되고, 저장공간은 복수의 코어 각각에 각각 상응하는 복수의 하위-저장공간을 포함하며, 복수의 코어 중 하나는 압축된 구성 데이터를 읽고 압축해제를 위해 파워업/리셋시 반도체 퓨즈어레이에 접근하고, 그리고 복수의 코어 각각 내의 하나 이상의 캐시 메모리를 위한 복수의 압축해제된 구성 데이터 셋트를 복수의 하위-저장공간 내에 저장하도록 구성된 저장공간;를 포함하고,
    복수의 코어 각각은,
    파워 게이팅 이벤트 다음에 하나 이상의 캐시를 초기화하기 위한 압축해제된 구성 데이터 셋트를 검색하고 사용하기 위해 복수의 하위-저장공간 각각 중 상응하는 하나에 연속적으로 접근하도록 구성된 슬립 로직을 포함하는 것을 특징으로 하는 집적회로 장치에 구성 데이터를 제공하는 장치.
  9. 제 8 항에 있어서,
    복수의 코어 중 하나 내의 캐시 퓨즈 압축해제기는 파워업/리셋 동안 마이크로코드를 실행함으로써 압축된 구성 데이터를 압축해제하는 것을 특징으로 하는 집적회로 장치에 구성 데이터를 제공하는 장치.
  10. 제 8 항에 있어서,
    압축해제된 구성 데이터 셋트 각각은 정상 동작 동안 사용되지 않기 위한 하나 이상의 캐시메모리 중 하나 내에 하나 이상의 하위-유닛 위치를 나타내는 복수의 제 1 반도체 퓨즈를 포함하는 것을 특징으로 하는 집적회로 장치에 구성 데이터를 제공하는 장치.
  11. 제 10 항에 있어서,
    압축해제된 구성 데이터 셋트 각각은 하나 이상의 하위-유닛 위치 중 상응하는 일부의 대체물 내에 정상 동작 동안 사용되기 위한 하나 이상의 캐시메모리 중 하나 내에 하나 이상의 대체 하위-유닛 위치를 나타내는 복수의 제 2 반도체 퓨즈를 더 포함하는 것을 특징으로 하는 집적회로 장치에 구성 데이터를 제공하는 장치.
  12. 제 11 항에 있어서,
    하위-유닛 위치 및 대체 하위-유닛 위치는 하나 이상의 캐시 메모리 중 하나 내에 열(column) 및 중복 열(column)을 각각 포함하는 것을 특징으로 하는 집적회로 장치에 구성 데이터를 제공하는 장치.
  13. 제 11 항에 있어서,
    하위-유닛 위치 및 대체 하위-유닛 위치는 하나 이상의 캐시 메모리 중 하나 내에 행(row) 및 중복 행(row)을 각각 포함하는 것을 특징으로 하는 집적회로 장치에 구성 데이터를 제공하는 장치.
  14. 제 8 항에 있어서,
    멀티-코어 마이크로프로세서는 x86-호환 멀티-코어 마이크로프로세서를 포함하는 것을 특징으로 하는 집적회로에 구성 데이터를 제공하는 장치.
  15. 집적회로를 구성하는 방법에 있어서,
    반도체 퓨즈 어레이를 다이 위에 배치하는 제 1 배치 단계;
    반도체 퓨즈 어레이에 결합된 장치 프로그래머를 통해 다이 위체 배치된 복수의 코어를 위한 압축된 구성 데이터로 반도체 퓨즈 어레이를 프로그래밍하는 단계;
    저장공간을 다이 위에 배치하는 제 2 배치 단계이고, 저장공간은 복수의 코어 각각에 각각 상응하는 복수의 하위-저장공간을 포함하며, 복수의 코어 중 하나는 압축된 구성 데이터를 읽고 압축해제를 위해 파워업/리셋시 반도체 퓨즈어레이에 접근하고, 그리고 복수의 코어 각각 내의 하나 이상의 캐시 메모리를 위한 복수의 압축해제된 구성 데이터 셋트를 복수의 하위-저장공간 내에 저장하도록 구성되며; 및
    파워 게이팅 이벤트 다음에 하나 이상의 캐시를 초기화하기 위한 압축해제된 구성 데이터 셋트를 검색하고 사용하기 위해 복수의 하위-저장공간 각각 중 상응하는 하나에 접근하기 위해 복수의 코어 각각 내의 슬립 로직을 사용하는 단계;를 포함하는 것을 특징으로 하는 집적회로를 구성하는 방법.
  16. 제 15 항에 있어서,
    복수의 코어 중 하나 내의 캐시 퓨즈 압축해제기는 파워업/리셋 동안 마이크로코드를 실행함으로써 압축된 구성 데이터를 압축해제하는 것을 특징으로 하는 집적회로를 구성하는 방법.
  17. 제 15 항에 있어서,
    압축해제된 구성 데이터 셋트 각각은 정상 동작 동안 사용되지 않기 위한 하나 이상의 캐시메모리 중 하나 내에 하나 이상의 하위-유닛 위치를 나타내는 복수의 제 1 반도체 퓨즈를 포함하는 것을 특징으로 하는 집적회로를 구성하는 방법.
  18. 제 17 항에 있어서,
    압축해제된 구성 데이터 셋트 각각은 하나 이상의 하위-유닛 위치 중 상응하는 일부의 대체물 내에 정상 동작 동안 사용되기 위한 하나 이상의 캐시메모리 중 하나 내에 하나 이상의 대체 하위-유닛 위치를 나타내는 복수의 제 2 반도체 퓨즈를 더 포함하는 것을 특징으로 하는 집적회로를 구성하는 방법.
  19. 제 18 항에 있어서,
    하위-유닛 위치 및 대체 하위-유닛 위치는 하나 이상의 캐시 메모리 중 하나 내에 열(column) 및 중복 열(column)을 각각 포함하는 것을 특징으로 하는 집적회로를 구성하는 방법.
  20. 제 18 항에 있어서,
    하위-유닛 위치 및 대체 하위-유닛 위치는 하나 이상의 캐시 메모리 중 하나 내에 행(row) 및 중복 행(row)을 각각 포함하는 것을 특징으로 하는 집적회로를 구성하는 방법.
  21. 제 15 항에 있어서,
    집적회로는 x86-호환 멀티-코어 마이크로프로세서를 포함하는 것을 특징으로 하는 집적회로를 구성하는 방법.
KR1020157033143A 2014-05-22 2014-12-12 멀티-코어 데이터 어레이 파워 게이팅 캐시 복원 프로그래밍 메커니즘 KR101757572B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/285,412 2014-05-22
US14/285,412 US9606933B2 (en) 2014-05-22 2014-05-22 Multi-core apparatus and method for restoring data arrays following a power gating event
PCT/IB2014/003198 WO2015177593A1 (en) 2014-05-22 2014-12-12 Multi-core data array power gating cache restoral programming mechanism

Publications (2)

Publication Number Publication Date
KR20160008562A KR20160008562A (ko) 2016-01-22
KR101757572B1 true KR101757572B1 (ko) 2017-07-12

Family

ID=52358980

Family Applications (4)

Application Number Title Priority Date Filing Date
KR1020157033145A KR101721790B1 (ko) 2014-05-22 2014-12-12 멀티-코어 마이크로프로세서 파워 게이팅 캐시 복원 프로그래밍 메커니즘
KR1020157033146A KR101721791B1 (ko) 2014-05-22 2014-12-12 멀티-코어 마이크로프로세서 내의 캐시 어레이를 복구하는 프로그래밍 장치 및 방법
KR1020157033142A KR101757571B1 (ko) 2014-05-22 2014-12-12 파워 게이팅 이벤트 다음에 데이터 어레이를 복원하기 위한 멀티-코어 프로그래밍 장치 및 방법
KR1020157033143A KR101757572B1 (ko) 2014-05-22 2014-12-12 멀티-코어 데이터 어레이 파워 게이팅 캐시 복원 프로그래밍 메커니즘

Family Applications Before (3)

Application Number Title Priority Date Filing Date
KR1020157033145A KR101721790B1 (ko) 2014-05-22 2014-12-12 멀티-코어 마이크로프로세서 파워 게이팅 캐시 복원 프로그래밍 메커니즘
KR1020157033146A KR101721791B1 (ko) 2014-05-22 2014-12-12 멀티-코어 마이크로프로세서 내의 캐시 어레이를 복구하는 프로그래밍 장치 및 방법
KR1020157033142A KR101757571B1 (ko) 2014-05-22 2014-12-12 파워 게이팅 이벤트 다음에 데이터 어레이를 복원하기 위한 멀티-코어 프로그래밍 장치 및 방법

Country Status (6)

Country Link
US (5) US9606933B2 (ko)
EP (4) EP2989637B1 (ko)
JP (4) JP6161808B2 (ko)
KR (4) KR101721790B1 (ko)
CN (5) CN104538059B (ko)
WO (4) WO2015177595A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9378560B2 (en) * 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
US9223715B2 (en) 2013-08-21 2015-12-29 Via Alliance Semiconductor Co., Ltd. Microprocessor mechanism for decompression of cache correction data
US9348690B2 (en) 2013-08-21 2016-05-24 Via Alliance Semiconductor Co., Ltd. Correctable configuration data compression and decompression system
US9665490B2 (en) 2014-05-22 2017-05-30 Via Alliance Semiconductor Co., Ltd. Apparatus and method for repairing cache arrays in a multi-core microprocessor
US9395802B2 (en) 2014-05-22 2016-07-19 Via Alliance Semiconductor Co., Ltd. Multi-core data array power gating restoral mechanism
US9606933B2 (en) 2014-05-22 2017-03-28 Via Alliance Semiconductor Co., Ltd. Multi-core apparatus and method for restoring data arrays following a power gating event
US9524241B2 (en) 2014-05-22 2016-12-20 Via Alliance Semiconductor Co., Ltd. Multi-core microprocessor power gating cache restoral mechanism
US10565494B2 (en) * 2016-12-31 2020-02-18 Via Alliance Semiconductor Co., Ltd. Neural network unit with segmentable array width rotator
CN110622096B (zh) * 2017-06-23 2021-06-18 日立汽车系统株式会社 电子控制装置
CN109343794B (zh) * 2018-09-12 2021-11-09 杭州晨晓科技股份有限公司 一种存储器的配置方法及配置装置
US11886722B2 (en) * 2021-03-31 2024-01-30 Lenovo (Singapore) Pte. Ltd. Smart inclusion of technology at time of build
CN114203245B (zh) * 2022-02-18 2022-05-10 深圳市芯茂微电子有限公司 一种eFuse控制方法及相关组件

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060004942A1 (en) 2004-06-30 2006-01-05 Sun Microsystems, Inc. Multiple-core processor with support for multiple virtual processors
US20090080232A1 (en) 2007-09-26 2009-03-26 Zhanping Chen Area efficient programmable read only memory (prom) array
US20130070514A1 (en) 2011-09-16 2013-03-21 Advanced Micro Devices, Inc. Integrated circuit with on-die distributed programmable passive variable resistance fuse array and method of making same
US20140006763A1 (en) 2011-12-29 2014-01-02 Steven S. Chang Initialization of multi-core processing system

Family Cites Families (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5155484A (en) 1991-09-13 1992-10-13 Salient Software, Inc. Fast data compressor with direct lookup table indexing into history buffer
US5513346A (en) 1993-10-21 1996-04-30 Intel Corporation Error condition detector for handling interrupt in integrated circuits having multiple processors
US5745734A (en) 1995-09-29 1998-04-28 International Business Machines Corporation Method and system for programming a gate array using a compressed configuration bit stream
US5784625A (en) 1996-03-19 1998-07-21 Vlsi Technology, Inc. Method and apparatus for effecting a soft reset in a processor device without requiring a dedicated external pin
US5889679A (en) 1997-07-15 1999-03-30 Integrated Device Technology, Inc. Fuse array control for smart function enable
US6349395B2 (en) 1997-09-17 2002-02-19 Kabushiki Kaisha Toshiba Configurable integrated circuit and method of testing the same
JPH11143704A (ja) 1997-11-12 1999-05-28 Nec Software Hokkaido Ltd 圧縮データパッチ修正方式
US6028445A (en) 1997-12-30 2000-02-22 Xilinx, Inc. Decoder structure and method for FPGA configuration
US6772356B1 (en) 2000-04-05 2004-08-03 Advanced Micro Devices, Inc. System for specifying core voltage for a microprocessor by selectively outputting one of a first, fixed and a second, variable voltage control settings from the microprocessor
US6748518B1 (en) 2000-06-06 2004-06-08 International Business Machines Corporation Multi-level multiprocessor speculation mechanism
US6525678B1 (en) 2000-10-06 2003-02-25 Altera Corporation Configuring a programmable logic device
US6577156B2 (en) 2000-12-05 2003-06-10 International Business Machines Corporation Method and apparatus for initializing an integrated circuit using compressed data from a remote fusebox
JP2003100097A (ja) 2001-09-25 2003-04-04 Mitsubishi Electric Corp 半導体記憶装置及びそのテスト方法
JP4856848B2 (ja) 2001-10-11 2012-01-18 アルテラ コーポレイション プログラマブルロジックリソース上のエラー検出
EP1324495B1 (en) 2001-12-28 2011-03-30 Fujitsu Semiconductor Limited Programmable logic device with ferrroelectric configuration memories
US7805766B2 (en) 2002-06-21 2010-09-28 Thomson Licensing Broadcast router having a shared configuration repository
US7120068B2 (en) 2002-07-29 2006-10-10 Micron Technology, Inc. Column/row redundancy architecture using latches programmed from a look up table
US7415640B1 (en) 2003-10-13 2008-08-19 Virage Logic Corporation Methods and apparatuses that reduce the size of a repair data container for repairable memories
US7400167B2 (en) 2005-08-16 2008-07-15 Altera Corporation Apparatus and methods for optimizing the performance of programmable logic devices
US7350119B1 (en) 2004-06-02 2008-03-25 Advanced Micro Devices, Inc. Compressed encoding for repair
JP2006079262A (ja) * 2004-09-08 2006-03-23 Matsushita Electric Ind Co Ltd Eeprom制御システム
DE102004047330B4 (de) 2004-09-29 2011-04-07 Qimonda Ag Integrierter Halbleiterspeicher
US7383423B1 (en) 2004-10-01 2008-06-03 Advanced Micro Devices, Inc. Shared resources in a chip multiprocessor
US7328335B1 (en) 2004-10-01 2008-02-05 Xilinx, Inc. Bootable programmable logic device for internal decoding of encoded configuration data
US7308598B2 (en) 2004-11-04 2007-12-11 International Business Machines Corporation Algorithm to encode and compress array redundancy data
US7268577B2 (en) 2004-12-17 2007-09-11 International Business Machines Corporation Changing chip function based on fuse states
JP4158922B2 (ja) * 2004-12-20 2008-10-01 インターナショナル・ビジネス・マシーンズ・コーポレーション マイクロコンピュータ
US7529997B2 (en) 2005-03-14 2009-05-05 International Business Machines Corporation Method for self-correcting cache using line delete, data logging, and fuse repair correction
US7251756B2 (en) 2005-04-26 2007-07-31 International Business Machines Corporation Method and apparatus for increasing fuse programming yield through preferred use of duplicate data
US7805761B2 (en) 2005-04-29 2010-09-28 Microsoft Corporation Disposable red partitions
US7640541B2 (en) 2005-05-23 2009-12-29 Intel Corporation In-system reconfiguring of hardware resources
JP5035239B2 (ja) 2006-03-15 2012-09-26 日本電気株式会社 再構成可能デバイスのテストシステム及びその方法並びにそれに用いる再構成可能デバイス
US7529992B1 (en) 2006-03-27 2009-05-05 Tabula, Inc. Configurable integrated circuit with error correcting circuitry
US7702978B2 (en) 2006-04-21 2010-04-20 Altera Corporation Soft error location and sensitivity detection for programmable devices
US7898882B2 (en) 2006-06-23 2011-03-01 Synopsys, Inc. Architecture, system and method for compressing repair data in an integrated circuit (IC) design
WO2008001671A1 (fr) 2006-06-27 2008-01-03 Nec Corporation Système multiprocesseur et terminal portable l'utilisant
US20080046891A1 (en) 2006-07-12 2008-02-21 Jayesh Sanchorawala Cooperative asymmetric multiprocessing for embedded systems
US7757135B2 (en) 2006-09-11 2010-07-13 Mentor Graphics Corporation Method and apparatus for storing and distributing memory repair information
EP1912121B1 (en) 2006-09-13 2009-08-12 STMicroelectronics S.r.l. NAND flash memory device with ECC protected reserved area for non volatile storage of redundancy data
US7538597B2 (en) 2007-08-13 2009-05-26 Hong Kong Applied Science And Technology Research Institute Co. Ltd. Fuse cell and method for programming the same
US8112681B2 (en) 2008-01-29 2012-02-07 Arm Limited Method and apparatus for handling fuse data for repairing faulty elements within an IC
US7710813B1 (en) 2008-03-05 2010-05-04 Xilinx, Inc. Electronic fuse array
US7663957B2 (en) 2008-05-27 2010-02-16 Via Technologies, Inc. Microprocessor with program-accessible re-writable non-volatile state embodied in blowable fuses of the microprocessor
US7839707B2 (en) 2008-09-09 2010-11-23 Vitesse Semiconductor Corporation Fuses for memory repair
CN101493809B (zh) 2009-03-03 2010-09-08 哈尔滨工业大学 一种基于fpga的多核心星载计算机
US8234543B2 (en) 2009-03-06 2012-07-31 Via Technologies, Inc. Detection and correction of fuse re-growth in a microprocessor
US7795899B1 (en) 2009-04-08 2010-09-14 Oracle America, Inc. Enabling on-chip features via efuses
US8281198B2 (en) 2009-08-07 2012-10-02 Via Technologies, Inc. User-initiatable method for detecting re-grown fuses within a microprocessor
US8194489B2 (en) 2010-01-21 2012-06-05 International Business Machines Corporation Paired programmable fuses
KR101131557B1 (ko) * 2010-04-30 2012-04-04 주식회사 하이닉스반도체 반도체 메모리 장치의 리페어 회로 및 리페어 방법
US8242800B2 (en) 2010-06-25 2012-08-14 Via Technologies, Inc. Apparatus and method for override access to a secured programmable fuse array
US8117498B1 (en) * 2010-07-27 2012-02-14 Advanced Micro Devices, Inc. Mechanism for maintaining cache soft repairs across power state transitions
US9323527B2 (en) 2010-10-15 2016-04-26 International Business Machines Corporation Performance of emerging applications in a virtualized environment using transient instruction streams
US8930676B2 (en) 2010-12-22 2015-01-06 Via Technologies, Inc. Master core discovering enabled cores in microprocessor comprising plural multi-core dies
JP5636276B2 (ja) * 2010-12-27 2014-12-03 ルネサスエレクトロニクス株式会社 半導体装置
US20130022951A1 (en) 2011-07-21 2013-01-24 Hughes timothy p Individualized, genetically-determined dietary supplementation and exercise recommendation with container and dispenser for same
US8719648B2 (en) 2011-07-27 2014-05-06 International Business Machines Corporation Interleaving of memory repair data compression and fuse programming operations in single fusebay architecture
US8467260B2 (en) 2011-08-05 2013-06-18 International Business Machines Corporation Structure and method for storing multiple repair pass data into a fusebay
US8484543B2 (en) 2011-08-08 2013-07-09 International Business Machines Corporation Fusebay controller structure, system, and method
US8537627B2 (en) 2011-09-01 2013-09-17 International Business Machines Corporation Determining fusebay storage element usage
US9201834B2 (en) 2011-10-11 2015-12-01 Etron Technology, Inc. Reconfigurable high speed memory chip module and electronic device with a reconfigurable high speed memory chip module
KR20130072094A (ko) * 2011-12-21 2013-07-01 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그 동작 방법
KR101847541B1 (ko) 2012-01-18 2018-04-11 에스케이하이닉스 주식회사 반도체 메모리 장치의 메모리 셀 구조 및 그의 구동 방법
KR101890820B1 (ko) 2012-04-30 2018-08-22 에스케이하이닉스 주식회사 어레이 일렉트릭 퓨즈를 구비하는 반도체 집적회로 및 그의 구동방법
US8879345B1 (en) * 2013-08-21 2014-11-04 Via Technologies, Inc. Microprocessor mechanism for decompression of fuse correction data
US9348690B2 (en) 2013-08-21 2016-05-24 Via Alliance Semiconductor Co., Ltd. Correctable configuration data compression and decompression system
US8982655B1 (en) 2013-08-21 2015-03-17 Via Technologies, Inc. Apparatus and method for compression and decompression of microprocessor configuration data
US9223715B2 (en) 2013-08-21 2015-12-29 Via Alliance Semiconductor Co., Ltd. Microprocessor mechanism for decompression of cache correction data
US9606933B2 (en) 2014-05-22 2017-03-28 Via Alliance Semiconductor Co., Ltd. Multi-core apparatus and method for restoring data arrays following a power gating event
US9395802B2 (en) 2014-05-22 2016-07-19 Via Alliance Semiconductor Co., Ltd. Multi-core data array power gating restoral mechanism
US9665490B2 (en) 2014-05-22 2017-05-30 Via Alliance Semiconductor Co., Ltd. Apparatus and method for repairing cache arrays in a multi-core microprocessor
US9524241B2 (en) 2014-05-22 2016-12-20 Via Alliance Semiconductor Co., Ltd. Multi-core microprocessor power gating cache restoral mechanism

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060004942A1 (en) 2004-06-30 2006-01-05 Sun Microsystems, Inc. Multiple-core processor with support for multiple virtual processors
US20090080232A1 (en) 2007-09-26 2009-03-26 Zhanping Chen Area efficient programmable read only memory (prom) array
US20130070514A1 (en) 2011-09-16 2013-03-21 Advanced Micro Devices, Inc. Integrated circuit with on-die distributed programmable passive variable resistance fuse array and method of making same
US20140006763A1 (en) 2011-12-29 2014-01-02 Steven S. Chang Initialization of multi-core processing system

Also Published As

Publication number Publication date
JP2016522954A (ja) 2016-08-04
US20160179690A1 (en) 2016-06-23
JP6078691B2 (ja) 2017-02-08
JP2016522955A (ja) 2016-08-04
KR20160008562A (ko) 2016-01-22
KR101721790B1 (ko) 2017-03-30
EP2989553A4 (en) 2018-03-14
US9606933B2 (en) 2017-03-28
EP2989637A4 (en) 2018-04-25
CN104538059A (zh) 2015-04-22
EP2989635B1 (en) 2022-12-21
WO2015177593A1 (en) 2015-11-26
EP2989553B1 (en) 2022-10-12
KR101721791B1 (ko) 2017-03-30
EP2989635A1 (en) 2016-03-02
WO2015177596A1 (en) 2015-11-26
JP6161808B2 (ja) 2017-07-12
WO2015177595A1 (en) 2015-11-26
CN104538059B (zh) 2018-11-09
KR20160008563A (ko) 2016-01-22
US9594690B2 (en) 2017-03-14
US20160179692A1 (en) 2016-06-23
KR20160007539A (ko) 2016-01-20
CN105849813A (zh) 2016-08-10
JP6078693B2 (ja) 2017-02-08
EP2989637B1 (en) 2023-03-01
CN105849810B (zh) 2018-08-07
US9582429B2 (en) 2017-02-28
CN105849714A (zh) 2016-08-10
JP2016528593A (ja) 2016-09-15
JP2016526245A (ja) 2016-09-01
CN105849714B (zh) 2019-03-01
WO2015177592A1 (en) 2015-11-26
EP2989636A1 (en) 2016-03-02
US9594691B2 (en) 2017-03-14
EP2989636A4 (en) 2018-03-14
CN105849812B (zh) 2019-02-12
US20160179689A1 (en) 2016-06-23
EP2989635A4 (en) 2018-04-25
CN105849813B (zh) 2018-11-09
KR101757571B1 (ko) 2017-07-12
CN105849810A (zh) 2016-08-10
CN105849812A (zh) 2016-08-10
US20150338904A1 (en) 2015-11-26
JP6078692B2 (ja) 2017-02-08
US20160179691A1 (en) 2016-06-23
EP2989553A1 (en) 2016-03-02
EP2989637A1 (en) 2016-03-02
US9582428B2 (en) 2017-02-28
KR20160008561A (ko) 2016-01-22

Similar Documents

Publication Publication Date Title
KR101757572B1 (ko) 멀티-코어 데이터 어레이 파워 게이팅 캐시 복원 프로그래밍 메커니즘
US8879345B1 (en) Microprocessor mechanism for decompression of fuse correction data
US9378147B2 (en) Extended fuse reprogrammability mechanism
US9690511B2 (en) Multi-core data array power gating restoral mechanism
US9665490B2 (en) Apparatus and method for repairing cache arrays in a multi-core microprocessor
US9524241B2 (en) Multi-core microprocessor power gating cache restoral mechanism
US8982655B1 (en) Apparatus and method for compression and decompression of microprocessor configuration data
EP2840509B1 (en) Apparatus and method for storage and decompression of configuration data
EP2840490B1 (en) Core-specific fuse mechanism for a multi-core die
EP2840507B1 (en) Apparatus and method for configurable redundant fuse banks
EP2840491B1 (en) Extended fuse reprogrammability mechanism
EP2840508B1 (en) Apparatus and method for extended cache correction
EP2840510B1 (en) Apparatus and method for rapid fuse bank access in a multi-core processor

Legal Events

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