KR101623892B1 - 분산된 멀티코어 메모리 초기화 - Google Patents
분산된 멀티코어 메모리 초기화 Download PDFInfo
- Publication number
- KR101623892B1 KR101623892B1 KR1020127014955A KR20127014955A KR101623892B1 KR 101623892 B1 KR101623892 B1 KR 101623892B1 KR 1020127014955 A KR1020127014955 A KR 1020127014955A KR 20127014955 A KR20127014955 A KR 20127014955A KR 101623892 B1 KR101623892 B1 KR 101623892B1
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- processing nodes
- memory initialization
- subtasks
- initialization
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4405—Initialisation of multiprocessor systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/177—Initialisation or configuration control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Stored Programmes (AREA)
- Multi Processors (AREA)
Abstract
다수의 프로세싱 노드들을 구비한 시스템에서, 하나의 제어 노드가 하나의 태스크를 다수의 서브태스크들로 분할하고, 상기 서브태스크들을 하나 이상의 추가적인 프로세싱 노드들에 할당하고, 상기 추가적인 프로세싱 노드들은 상기 할당된 서브태스크들을 실행하고 그 결과를 상기 제어 노드에 다시 전송하여, 상기 다수의 프로세싱 노드들로 하여금 효율적이고 빠르게 메모리 초기화를 수행하고 모든 할당된 서브태스크들을 테스트할 수 있도록 한다.
Description
본 발명은 일반적으로 데이터 프로세싱 시스템(data processing system)에 관한 것이다. 한 태양으로서, 본 발명은 시스템 부트(system boot) 중의 메모리 초기화(memory initialization)를 위한 방법 및 장치에 관한 것이다.
데이터 프로세싱(data processing) 또는 컴퓨터 시스템들은 한 명 이상의 사용자들에게 독립적인 연산 능력을 제공하도록 설계되고, 예를 들어 메인프레임들, 미니컴퓨터들, 워크스테이션들, 서버들, 개인용 컴퓨터들, 인터넷 터미널들, 노트북들 및 임베디드 시스템(embedded system)들을 포함하는 다양한 형태로 발견된다. 일반적으로 컴퓨터 시스템 아키텍쳐(architecture)들은 선택된 구성요소들로의 고속 및 광대역폭 접근 능력을 갖춘 하나 이상의 마이크로프로세서 코어들, 연계된 메모리 및 제어 로직(통상적으로 시스템 보드 상에 존재함), 그리고 시스템을 위하여 입력 및/또는 출력(I/O)을 제공하는 다수의 주변 장치들을 포함하도록 설계된다. 예를 들어, 도 1은 종래의 컴퓨터 시스템(100)을 위한 예시적 아키텍쳐를 보여준다. 컴퓨터 시스템(100)은 "노스" 브리지("north" bridge)(104)를 통하여 시스템 메모리(108)에 연결되는 하나 이상의 프로세서(102)들을 포함한다. 통상적으로, 메모리 어레이(memory array)(108)는 하나 이상의 메모리 모듈(memory module)들을 포함하고, 또한 메모리 모듈들의 추가 또는 교환을 위한 메모리 슬롯(memory slot)들을 포함할 수 있다. 상기 노스 브리지 회로(104)는 다양한 메모리 모듈들과 인터페이스(interface)하도록 프로그래밍될 수 있고, 도시된 바와 같이, 상기 노스 브리지 회로(104)는 다수의 메모리 모듈(108)들 간에 공유된다. 그 결과로서, 서로 다른 메모리 모듈들이 배치되면, 상기 노스 브리지는 각각의 메모리 모듈이 올바르게 작동할 수 있도록 해주는 파라미터들로 프로그래밍되어야 한다. 도시된 노스 브리지 회로(104)는, 고속 광대역폭 버스(high-speed high-bandwidth bus)(예를 들어, 메모리 버스(107))를 통하여, 상기 메모리(108)에 연결되고, 또한 고속 광대역폭 버스(예를 들어, Alink 또는 PCI 버스)를 통하여 "사우스" 브리지("south" bridge)(112)에 연결된다. 상기 사우스 브리지(112)는, PCI(Peripheral Component Interconnect)버스(110)(PCI 버스는 다시 네트워크 인터페이스 카드(NIC)(120)에 연결됨), SATA(serial AT attachment) 인터페이스(114), USB(universal serial bus) 인터페이스(116), 및 LPC(low pin count) 버스(118)(LPC 버스는 다시 수퍼 입/출력 제어기 칩(Super I/O controller chip) 및 BIOS 메모리(124)에 연결됨)와 같은, 하나 이상의 I/O 장치들에 연결된다. 이해할 수 있는 바와 같이, 캐쉬(cache)들, 모뎀(modem)들, 병렬 및 직렬 인터페이스들, SCSI 인터페이스들 등과 같은, 다른 버스들, 장치들, 및/또는 서브시스템들이 필요에 따라 상기 컴퓨터 시스템(100)에 포함될 수 있다. 또한 상기 노스 브리지(104) 및 사우스 브리지(112)는 단일 칩 으로 구현되거나, "칩셋"(chipset)이라고 일컬어지는 다수의 칩들로 구현될 수 있다. 대안적으로, 상기 브리지 칩들의 모든 또는 일부의 기능들은 상기 프로세서(102) 안에 존재할 수 있다.
컴퓨터 시스템들은, 통상적으로 BIOS(basic input/output system)이라고 불리고 프로그래머 및 사용자가 시스템 하드웨어와 상호작용을 할 수 있도록 시스템 하드웨어와 운영체제(OS) 사이의 소프트웨어 인터페이스를 제공하는, 한 세트의 내장된(built-in) 소프트웨어 루틴들을 포함한다. 상기 BIOS 명령들은 비휘발성 메모리(124)(예를 들어, ROM(read only memory), PROM(programmable ROM), EPROM( Erasable PROM), EERPROM(electrically erasable PROM), flash RAM(random access memory), 또는 그와 유사한 것) 안에 저장되고, 메모리의 테스트 및 초기화, 시스템의 인벤토링(inventorying) 및 초기화, 그리고 시스템 테스트를 포함하는, 기동(power-up) 시의 중요한 컴퓨터 시스템 기능들을 제어하기 위하여 사용된다. 기동 시의 상기 기능들은 "시스템 부트" 또는 "시스템 부팅"이라 칭해지는데, 시스템에 전원이 들어오거나 리셋되는 경우에 언제나 수행될 수 있다. 도 1에 보인 종래의 컴퓨터 시스템(100)에서, 상기 BIOS는 컴퓨터 시스템(100)을 부팅시키기 위하여, 상기 프로세서(102)들 중 부트 스트랩 프로세서(boot strap processor)라고 불리는 하나를 실행시킨다. 작동 중에 상기 부트 스트랩 프로세서(102)는 상기 노스 브리지(104)를 통하여 상기 메모리 어레이(108)와 통신한다. 상기 노스 브리지 회로(104)는, DDR(double data rate) 버스와 같은 메모리 버스(107)와 인터페이스를 이루는 하나 이상의 채널 제어기(channel controller)들에 연결되는, 메모리 제어기를 포함한다. 또한 상기 노스 브리지 회로(104)는, 예를 들어 PCI 버스와 같은 표준 버스(109) 위에서 하나 이상의 사우스 브리지(112)들과 통신한다. 상기 사우스 브리지(112)들은 하나 이상의 입/출력(I/O) 장치들(120, 122, 124)과 통신하는데, 다만 추가적인 또는 아주 소수의(additional or fewer) 장치들(도면에는 생략)이 상기 사우스 브리지(112)에 부착될 수 있다.
시스템 초기화 시에, 상기 부트 스트랩 프로세서(102)는 상당한 시간이 소요될 수 있는 모든 메모리 테스트 및 시스템 부트 동안의 삭제를 수행한다. 대형 서버 시스템들은 부팅에 수 분이 소요될 수 있고, 그 동안 다른 프로세서들은 한가하게 대기한다. 도시된 예에 있어서, 상기 부트 스트랩 프로세서에서 실행되는 BIOS는, DIMM 메모리(108)로부터 제공되는 DDR 메모리 버스(107) 위의 정보에 근거하여 상기 부트 스트랩 프로세서(102)의 레지스터들을 프로그래밍함으로서, 상기 메모리 제어기(106) 및 노스 브리지 회로(104)를 초기화한다. 메모리 초기화는 메모리 모듈들의 분포를 확인하는 것, 메모리의 적절한 작동(스턱 비트(stuck bit)들의 부재)을 확인하는 것, 그리고 메모리를 알려진 값으로 초기화 또는 삭제하는 것을 포함할 수 있다. 대형 메모리(108)(예를 들어, 8, 16, 또는 32 기가바이트 메모리)에 있어서, 종래의 시스템들은 상기 메모리 초기화에 수 분(minutes)이 소요될 수 있는데, 특히 태스크(task) 간 의존성에 상관없이 순차적인 일련의 메모리 초기화 태스크(memory initialization task)들을 차례로 실행함으로써 메모리를 초기화하도록, "DDR 트레이닝"(DDR training) 프로세스가 상기 부트 스트랩 프로세서(102)를 사용할 때 시간이 소요된다. 이러한 지연은 각각의 제어기(106)에 대량의 메모리(108)가 부착되어 있는 경우에 더욱 악화된다.
따라서, 본 발명의 기술분야의 통상의 기술자는 이어지는 상세한 설명 및 첨부된 도면들을 참조하여 본 명세서의 나머지 부분을 검토함으로써 종래 해결책들 및 기술들의 한계와 단점들을 명확히 이해할 수 있을 것이고, 상기 분야에서의 여러 가지 문제점들을 해결할 수 있는 향상된 메모리 초기화 장치, 방법, 및 시스템에 대한 필요가 존재함을 이해할 수 있는데, 다만 본 명세서의 배경기술에서 설명된 상기 내용들은 설명된 내용들이 종래 기술에 속한 것임을 인정하는 것으로 해석되어서는 아니 된다는 점을 이해할 필요가 있다.
포괄적으로 말하자면, 본 발명의 실시예들은, 메모리 초기화 태스크들을 코어들에 분산시켜서 이전 태스크들에 대한 의존성 및 순서에 상관없이 그 실행이 이루어지도록 함으로써, 멀티코어 컴퓨터 시스템에서 메모리 초기화를 위한 시스템, 방법, 및 장치를 제공한다. 선택된 실시예들에서는, 다수의 프로세싱 노드들 또는 코어들(processing nodes or cores)과 다수의 시스템 메모리 요소들을 포함하는 시스템이 제공된다. 선택된 실시예들에서, 메모리 초기화 태스크들을 다수이 CPU 노드들/코어들에 의하여 처리되는 개별적인 서브태스크(sub-task)들로 분할하기 위한 제어 노드/코어 기능을 제공하도록, 상기 프로세싱 노드들 또는 코어들 중 하나가 선택된다. 상기 개별적인 서브태스크들은 실행을 위하여 다른 "슬레이브"(slave) 코어들로 보내지거나 분산된다. 각각의 슬레이브 코어에서, 상기 서브태스크들은, 해당 슬레이브 코어가 상기 서브태스크(들)을 처리할 자원이 있을 때 실행되도록 스케줄링된다. 결과적으로, 주어진 서브태스크의 특정 슬레이브 코어에서의 실행 시간은 다른 슬레이브 코어들에서의 다른 서브태스크들의 실행과 겹칠 수도 있고 겹치지 않을 수도 있다. 결과적으로, 상기 슬레이브 코어들은 서브태스크들을 병렬적으로 또는 순차적으로 실행시키는 것이 가능하다. 상기 서브태스크들이 처리된 후에, 코어들은 상기 제어 코어에 의하여 다시 합쳐져서 원래의 태스크를 완료시키게 된다. 이는, 상기 슬레이브 코어들이 서브태스크들을 병렬로 실행시킬 수 있도록 함으로써, 감소된 총 실행 시간과 최적의 성능을 가져오는 동시적 태스크 실행(concurrent task execution)을 가능하게 한다.
본 발명의 다양한 실시예들에 따라, 다수의 프로세싱 노드들로 하여금 메모리 초기화 태스크와 같은 부트 프로세스 태스크를 수행할 수 있도록 하는 방법이 제공된다. 본 방법의 하나의 예시적인 실시예에서, 하나의 제어 프로세싱 노드는 하나의 부트 프로세스 태스크(예를 들어, 메모리 초기화 태스크)를 다수의 부트 프로세스 서브태스크들(예를 들어, 메모리 초기화 서브태스크들)로 분할하고, 각각의 서브태스크는 대응되는 하나의 프로세싱 노드를 갖도록, 다수의 프로세싱 노드들 사이에서 상기 서브태스크들을 분배하는데, 분배되는 프로세싱 노드들은 상기 제어 프로세싱 노드를 포함할 수 있다. 상기 서브태스크들을 분배하기 전에, 상기 제어 프로세싱 노드는 상기 다수의 프로세싱 노드들 사이의 통신 링크(communication link)를 초기화한다. 상기 서브태스크 분배의 예로서, 상기 프로세싱 노드들 중 하나는 DIMM 메모리로부터 SPD(serial presence detect) 값을 읽어들이는 메모리 초기화 서브태스크를 할당받고, 상기 프로세싱 노드들 중 다른 하나는 상기 SPD 값에 의존적이지 않은 복합 초기화 태스크들을 실행시키는 메모리 초기화 서브태스크를 할당받을 수 있다. 각각의 메모리 초기화 서브태스크는 실행을 위하여 스케줄링되고, 이후에 해당 서브태스크 결과를 생성하도록 대응되는 프로세싱 노드에서 실행된다. 선택된 실시예들에서, 상기 메모리 초기화 서브태스크를 대응되는 프로세싱 노드에서 실행시키기 위하여 소프트웨어 루틴이 사용된다. 상기 제어 프로세싱 노드는 상기 대응되는 프로세싱 노드들에서의 메모리 초기화 서브태스크들의 실행과 관련된 상태 보고(status report)들을 수신하고, 상기 다수의 프로세싱 노드들로부터의 서브태스크 결과들이 상기 제어 프로세싱 노드에서 조합되는데, 상기 다수의 메모리 초기화 서브태스크들은 상기 다수의 프로세싱 노드들에서 병렬적으로 또는 순차적으로 실행될 수 있다. 예를 들어, 상기 프로세싱 노드들 중 하나는, 각자 자신에게 대응되는 메모리 초기화 서브태스크를 처리하는 다른 프로세싱 노드에 대하여 병렬로, 자신에게 할당된 상기 메모리 초기화 서브태스크를 실행할 수 있다.
다른 실시예들에서는, 하나의 시스템 메모리(예를 들어, DIMM-기반 어레이)와 다수의 프로세싱 노드들을 포함하는 컴퓨터 시스템이 제공되는데, 각각의 프로세싱 노드는 하나의 프로세싱 코어, 다른 프로세싱 코어(들)로의 통신 인터페이스, 그리고 상기 시스템 메모리로부터의 데이터 흐름 및 상기 시스템 메모리로의 데이터 흐름을 관리하기 위한 메모리 제어기를 포함한다. 상기 프로세싱 노드들 중 하나는 시스템 메모리 상의 메모리 초기화 태스크를 수행하도록 구성된 마스터 프로세싱 노드(master processing node)가 되는데, 상기 마스터 프로세싱 노드는 메모리 초기화 태스크를 메모리 초기화 서브태스크들로 분할하고 상기 메모리 초기화 서브태스크들을 하나 이상의 실행 프로세싱 노드들(상기 마스터 프로세싱 노드 포함될 수 있음) 사이에 할당하여 각각의 할당된 메모리 초기화 서브태스크가 하나의 대응되는 실행 프로세싱 노드를 갖도록 한다. 각각의 실행 프로세싱 노드는 상기 마스터 프로세싱 노드에 의하여 자신에게 할당된 각각의 메모리 초기화 서브태스크를 실행하고, 그로부터 서브태스크 결과를 생성하도록 구성된다. 상기 마스터 프로세싱 노드는, 상기 실행 프로세싱 노드(들)에서의 다수의 메모리 초기화 서브태스크들의 실행 결과에 근거하여 상기 마스터 프로세싱 노드의 메모리 제어기 안의 하나 이상의 레지스터들을 프로그래밍함으로써 메모리 초기화 태스크를 수행할 수 있도록, 상기 실행 프로세싱 노드들로부터 메모리 초기화 서브태스크들의 상태를 수신하고, 상기 실행 프로세싱 노드들로부터의 서브태스크 결과들을 조합하도록 구성된다. 선별된 실시예들에서, 상기 마스터 프로세싱 노드는 메모리 초기화 서브태스크들을 분할 및 할당하여, 상기 실행 프로세싱 노드들 중 하나에 할당된 메모리 초기화 서브태스크들이, 다른 실행 프로세싱 노드들에 할당된 다른 메모리 초기화 서브태스크들에 의존하지 않고 순서에 상관없이 실행될 수 있도록 한다. 이러한 방식으로, 제1 실행 프로세싱 노드는, 각자에게 대응되는 메모리 초기화 서브태스크를 실행하는 다른 실행 프로세싱 노드(들)과는 병렬적으로, 자신의 대응되는 메모리 초기화 서브태스크를 실행하여, 상기 다수의 메모리 초기화 서브태스크들이 상기 실행 프로세싱 노드들에서 병렬적으로 또는 순차적으로 실행될 수 있도록 한다.
또 다른 실시예들에서는, 하나의 메모리 어레이와 다수의 프로세싱 노드들을 포함하는 컴퓨터 시스템이 제공된다. 상기 메모리 어레이는 상기 다수의 프로세싱 노드들에 DDR(double data rate) 버스를 통하여 연결된 다수의 듀얼 인라인 메모리 모듈(dual inline memory module)들로서 구현될 수 있다. 상기 프로세싱 노드 각각은 하나의 프로세서, 상기 메모리 어레이와 통신하기 위한 하나의 메모리 제어기, 그리고 상기 다수의 프로세싱 노드들 중 적어도 다른 하나로의 통신 인터페이스로서 구현될 수 있다. 작동에 있어서, 제1 프로세싱 노드는 하나의 메모리 초기화 태스크를 다수의 서브태스크들로 분할하고 상기 다수의 서브태스크들을 상기 프로세싱 노드들에 할당한다. 각각의 프로세싱 노드는 상기 할당된 서브태스크들을 실행하는 동안 상기 메모리 어레이의 어떠한 일부분으로부터라도 정보를 획득할 수 있다. 추가로, 각각의 프로세싱 노드는 상기 제1 프로세싱 노드로 상기 서브태스크 실행 결과를 다시 전송하고, 따라서 상기 다수의 프로세싱 노드들로 하여금 효율적이고 빠르게 상기 메모리 어레이의 메모리 초기화를 수행할 수 있도록 한다. 이러한 방식으로, 상기 제1 프로세싱 노드는, 상기 프로세싱 노드들에서의 상기 다수의 서브태스크들의 실행 결과에 근거하여 자신의 메모리 제어기 안의 하나 이상의 레지스터들을 프로그래밍함으로써 상기 메모리 초기화 태스크를 수행하고, 따라서 상기 프로세싱 노드들 중 오직 하나에서 상기 메모리 초기화 태스크를 수행하는 경우에 부팅에 필요한 시간의 양과 비교했을 때, 요구되는 부트 시간(boot time)을 감소시키도록 구성된다.
첨부된 도면을 참조함으로써, 본 발명이 더욱 잘 이해되고, 본 발명의 많은 객체(object)들, 특징(feature)들, 및 장점들이 본 발명의 기술분야에서 통상의 기술자들에게 명확하게 파악될 수 있다. 여러 도면들에 걸쳐서 동일한 도면 부호는 동일하거나 유사한 요소들을 가리킨다.
도 1은 멀티코어 컴퓨터 시스템의 간략화된 구조적 블록 다이어그램을 도시하는 도면이다.
도 2는, 본 발명의 선택된 실시예들에 따른, 분산된 멀티코어 메모리 초기화를 갖춘 컴퓨터 시스템 아키텍쳐를 도시하는 도면이다.
도 3은, 본 발명의 선택된 실시예에 따른, 예시적인 프로세싱 노드를 도시하는 도면이다.
도 4는 예시적인 DIMM(dual inline memory module)을 도시하는 도면이다.
도 5는, 본 발명의 선택된 실시예에 따른, 최적화된 메모리 초기화 및 테스팅의 흐름도를 도시하는 도면이다.
도 1은 멀티코어 컴퓨터 시스템의 간략화된 구조적 블록 다이어그램을 도시하는 도면이다.
도 2는, 본 발명의 선택된 실시예들에 따른, 분산된 멀티코어 메모리 초기화를 갖춘 컴퓨터 시스템 아키텍쳐를 도시하는 도면이다.
도 3은, 본 발명의 선택된 실시예에 따른, 예시적인 프로세싱 노드를 도시하는 도면이다.
도 4는 예시적인 DIMM(dual inline memory module)을 도시하는 도면이다.
도 5는, 본 발명의 선택된 실시예에 따른, 최적화된 메모리 초기화 및 테스팅의 흐름도를 도시하는 도면이다.
마스터 코어의 제어 아래 메모리 초기화 태스크들을 서브태스크들로 분할하기 위한, 분산된 멀티코어 메모리 테스트 및 초기화의 방법 및 장치가 제공된다. 이후에 상기 마스터 코어는 상기 서브태스크들을, 다수의 코어들에 의하여 별도로 실행되도록, 전송 또는 분산시키고, 완료 시에는 그 결과들이 상기 마스터 코어로 다시 보내져서, 원래의 태스크를 완료하도록 재조합(recombination)된다. 메모리 초기화 태스크들을 분리된 코어들로 분산시킴으로써, 서브태스크들의 실행은 순서가 없고 이전 태스크에 대한 의존성 없이 수행된다. 이러한 분산된 실행은 일부 태스크들이 이전 서브태스크가 완료되는 동안 대기하지 않고 순서에 상관없이 완료될 수 있도록 함으로써, 메모리 초기화 시간에 필요한 시간을 감소시켜 장치 성능을 향상시킨다.
이제 본 발명의 다양한 예시적 실시예들이 첨부된 도면을 참조하여 상세하게 설명된다. 아래의 상세한 설명에서 다양한 세부내용들이 명시되고 있지만, 본 발명은 이렇게 명시된 세부내용들 없이도 실시될 수 있고, 본 명세서에서 설명된 본 발명의 내용에 대하여 수많은 구현상의 결정들이 만들어질 수 있는데, 이는 공정처리 기술과의 호환성 또는 설계 관련 제약조건들과 같은 장치 설계자의 구체적인 목표들을 성취하기 위하여 구현 사례들에 따라 다양하게 변화할 수 있다. 이러한 개발 노력이 복잡하고 시간을 요하는 것일 수 있지만, 본 발명의 개시 내용을 이용함으로써, 본 발명의 기술분야에서 통상의 기술자에 의하여 쉽게 수행될 수 있다. 예를 들어, 본 발명을 한정하거나 모호하게 하지 않도록, 선택된 태양들은 세부내용을 설명하기 보다는 블록 다이어그램 형식으로 도시되었다. 본 명세서에서 제공된 상세한 설명의 일부 부분들은 컴퓨터 메모리 안에 저장된 데이터에 작용하는 알고리즘 및 명령(instruction)들로 표현되었다. 이러한 설명 및 표현들은 본 발명의 기술 분야에게 통상의 기술자에 의하여 연구 내용을 설명하거나 전달하기 위한 방법으로 사용되고 있다. 일반적으로, 알고리즘이란 원하는 결과를 얻기 위한 정연한(self-consistent) 일련의 단계들을 가리키는데, 여기서 '단계'란, 필요조건은 아닐지라도, 저장되고 전송되고 조합되고 비교되고 그리고 다르게는 가공될 수 있는 전기적 또는 자기적 신호들의 형태를 취할 수 있는, 물리적 양(physical quantities)의 가공을 가리킨다. 흔히 상기 신호들은 비트들(bits), 값들(values), 요소들(elecments), 기호들(symbols), 문자들(characters), 항들(terms), 숫자들(numbers), 또는 그와 유사한 것들로 지칭된다. 상기 용어들 및 유사 용어들은 적절한 물리적 양들과 연계될 수 있고, 이러한 양들에 적용된 간편한 라벨(label)에 불과하다. 이어지는 설명에서 달리 명시되지 않는 한, 본 명세서에 걸쳐서 "프로세싱" 또는 "컴퓨팅" 또는 "계산" 또는 "결정" 또는 "디스플레이" 또는 이와 유사한 용어들은, 컴퓨터 시스템의 레지스터 및 메모리 안에서 물리적(전자적) 양들로서 표현된 데이터를 컴퓨터 시스템의 메모리 또는 레지스터 또는 다른 정보 저장 매체나 전송 또는 디스플레이 장치들 내에서 물리적 양들로서 유사하게 표현되는 다른 데이터들로 변형시키는, 컴퓨터 시스템 또는 유사한 전자적 연산 장치의 작용 및 처리들을 가리킨다.
이제 도 2를 참조하면, 본 발명의 선택된 실시예에 따른, 분산된 멀티코어 메모리 초기화를 구비한 컴퓨팅 시스템 아키텍쳐(200)가 도시되어 있다. 도시된 컴퓨팅 시스템(200)에서는, 링크(203)를 통하여 서로 통신하는 다수의 프로세싱 노드(202[0:3])들이 존재한다. 각각의 프로세싱 노드(202)는, 예를 들어, 프로세싱 코어, 메모리 제어기, 및 링크 인터페이스 회로를 포함한다. 상기 링크(203)들은, 예를 들어 HT(hypertransport) 프로토콜과 같은 스플릿-트랜잭션 버스 프로토콜(split-transaction bus protocol)에 따른 듀얼 포인트-투-포인트 링크(dual point to point link)들일 수 있다. 상기 링크(203)들은 다운스트림(downstream) 데이터 흐름 및 업스트림(upstream) 데이터 흐름을 포함할 수 있다. 통상적으로 링크 신호들은 클락, 제어, 명령, 주소, 데이터 정보, 그리고 장치들 사이에 흐르는 트래픽(traffic)을 보장(qualify)하고 동기화(synchronize)하는 링크 사이드밴드 신호들(link sideband signals)을 포함한다. 상기 프로세싱 노드(202)의 각각의 메모리 제어기는 대응되는 메모리 어레이(206[0:3])와 통신한다. 상기 프로세싱 노드(202) 및 메모리 어레이(206)는 시스템의 "일관적인"(coherent) 부분에 속하고, 따라서 모든 메모리 트랜잭션들은 일관적이다. 하나의 노스 브리지 장치가 상기 하나 이상의 프로세싱 노드(202)들에 포함되거나, 또는 또 다른 HT 링크를 통하여 상기 프로세싱 노드(202)들 중 하나에 결합된 별도의 노스 브리지 장치(208)로서 제공될 수도 있다. 상기 두 가지 경우들 중 어느 경우에도, 상기 노스 브리지 장치는 또 다른 HT 링크를 통하여 사우스 브리지(210)에 결합될 수 있다. 추가로, 하나 이상의 입/출력 장치(212)들이 상기 사우스 브리지(210)에 결합될 수 있다. BIOS ROM(214)은 상기 사우스 브리지(210)에 결합될 수 있다. 상기 노스 브리지 장치(208), 사우스 브리지(210), 및 입/출력 장치들(212)은 시스템의 "비일관적인"(non-coherent) 부분에 속한다.
각각의 메모리 어레이(206)는, 메모리 모듈들의 추가 또는 교체를 위한, 장착되거나 장착되지 않은 여러 개의 메모리 슬롯들로 구성될 수 있다. 예를 들어 서버 시스템(200)에서, 각각의 메모리 슬롯은 512 메가바이트(Mbytes)의 저장 용량을 제공하여서, 전체 서버 시스템(200)이 대용량의 메모리, 예를 들어 32 기가바이트(GBytes)의 저장 용량을 갖도록 한다. 상기 각 프로세싱 노드(202)의 메모리 제어기는 서로 다르게 프로그래밍될 수 있지만, 연계된 프로세싱 노드(202)에 결합된 메모리 모듈(206)들의 지역적 특성(local variety)에 맞추어 인터페이스를 이루도록 프로그래밍되어야 한다. 상기 시스템(200)이 도시된 것보다 더 복잡할 수 있다는 사실도 주지할 필요가 있다. 예를 들어, 상기 시스템의 일관적인 부분 안에 추가적인 프로세싱 노드(202)들이 존재할 수 있다. 비록 상기 프로세싱 노드(202)들이 사다리 구조의 아키텍쳐로 도시되었지만, 상기 프로세싱 노드(202)들은 다양한 방식으로 상호 연결될 수 있고, 추가적인 HT 링크(들)을 이용하여 더욱 복잡하게 결합될 수 있다.
도 3은 본 발명의 선택된 실시예에 따른 예시적인 프로세싱 노드(202)를 도시하고 있다. 도시된 바와 같이, 프로세싱 노드(202)는 하나의 프로세서 코어(302), 다수의 HT 링크 인터페이스(304), 및 하나의 메모리 제어기(306)를 포함한다. 상기 프로세서 코어(302)는 메모리 초기화를 위한 코드 명령(code instruction)들 및 상기 프로세서 노드에 의해 수행되는 테스트 작업들을 실행한다. 예를 들어, 만약 프로세서 노드가 제어 또는 마스터 노드로서의 역할을 수행한다면, 상기 프로세서 코어(302)는, 메모리 초기화 및 테스팅 태스크들을 다른 프로세싱 노드들로 할당 및 분산되는 다수의 서브태스크들로 분할하기 위한, 코드 명령들을 수행한다. 대안적으로, 만약 프로세서 노드가 실행 또는 슬레이브 노드의 역할을 수행한다면, 상기 프로세서 코어(302)는 할당된 메모리 초기화 및 테스팅을 위한 서브태스크들을 획득하고, 스케줄링하고, 실행하기 위한 코드 명령들과, 해당 결과를 상기 제어/마스터 노드에 돌려주기 위한 코드 명령들을 실행한다. 크로스바(308)는 요청들, 응답들, 및 브로드캐스트(broadcast) 메시지들을 상기 프로세서(302) 및/또는 적절한 HT 링크 인터페이스(304)(들)에 전달한다. 상기 요청들, 응답들, 및 브로드캐스트 메시지들의 전달은, 각각의 프로세싱 노드(202)에 위치하고 BIOS에 의하여 설정되어야 하는 복수 구성 라우팅 테이블들(multiple configuration routing tables)에 의하여 통제된다(directed). 추가로, 상기 메모리 제어기(306)는, BIOS에 의하여 프로그래밍되어야 하는 작동 관련 파라미터들을 위하여, 복수 구성 레지스터들(multiple configuration registers)을 포함한다.
도 4는 하나의 예시적인 DIMM(dual inline memory module)(400)을 도시하고 있다. 이해할 수 있듯이, 여러 개(통상적으로 여덟 개)의 DIMM들이 하나의 메모리 어레이(206)를 이룰 수 있는데, 이때 각각의 DIMM(400)은 다수의 RAM 집적회로(random access memory integrated circuit) 또는 DDR(double data rate) 메모리 칩과 같은 칩(402[1:N])들을 포함한다. 추가로, 상기 DIMM(400)은 하나의 ECC(error correction code) 회로(404)를 구비할 수 있다. 상기 ECC 회로(404)는 메모리 에러들이 발견되고 교정될 수 있도록 하는 에러 교정 코드(error correction code)들을 저장한다. 추가로, 상기 DIMM(400)은 하나의 SPD(serial presence detect) 회로(406)를 구비할 수 있다. 상기 SPD 회로(406)는 상기 DIMM(400)의 작동 범위를 명시하는 읽기 전용 정보와 데이터 시트(data sheet)에서 볼 수 있는 것과 유사한 다른 정보들을 포함한다. 예를 들어, 상기 SPD 회로(406)는 상기 DIMM(400)의 메모리 저장 용량, 최소 주기와 같은 작동관련 파라미터들, CAS 지연시간(latency), 및 그와 유사한 정보를 식별한다.
시스템 초기화 시에, 각각의 메모리 모듈(206)은 초기화되고 테스트되어야 한다. 이는 메모리 모듈들 배치의 확인, 메모리의 적절한 작동에 대한 확인(스턱 비트의 부재), 및 메모리를 정해진 값으로 초기화 또는 삭제하는 것을 포함할 수 있다. 메모리 에러들을 교정하기 위하여 각각의 메모리 모듈은 정기적으로 ECC를 활용하여 지워질 수 있다.
도 5는, 본 발명의 선택된 실시예들에 따른, 최적화된 메모리 초기화 및 테스팅 시퀀스(optimized memory initialization and testing sequence)(500)의 흐름도를 도시하고 있다. 상기 시퀀스는 단계 502에서 각각의 프로세싱 노드가 다른 프로세싱 노드들 및 메모리와 통신할 수 있도록 시스템 링크들을 초기화함으로써 시작된다. 이는 통상적으로 부트 스트랩 프로세서 위에서 실행되는 BIOS에 의하여 수행된다. 대안으로서, 하드와이어드 시스템(hard-wired system)들에서는, 상기 프로세싱 노드들이 시스템 기동(power-up) 시에 서로 그리고 메모리와 통신할 수 있도록 자동으로 설정될 수 있다.
단계 504에서, 부트 스트랩 프로세서(BSP)로 지정된 프로세싱 노드는, 메모리 초기화/테스팅 태스크를 다수의 서브태스크들로 분할하고, 이후 각각의 서브태스크를 하나의 실행 프로세싱 노드에 할당함으로써, 메모리 초기화 및/또는 테스팅 절차를 시작한다. 예를 들어, BSP는, 할당된 서브태스크들과 함께, 시작 메시지를 각각의 프로세싱 노드에 보낼 수 있다. 추가로 또는 대안적으로, 하나의 비트(bit)가 각각의 프로세싱 노드에 씌여져서, 할당된 서브태스크들이 상기 BSP에 의하여 전달되거나 실행 프로세싱 노드(들)에 의하여 입수될(retrieved) 수 있도록 메모리 초기화 및 테스팅이 시작되어야 함을 나타내도록 할 수 있다. 대안적으로, 예를 들어 임의의 프로세서에서 실행되는 코드가 하나 이상의 레지스터들에 기록할 때, 디렉티드 인터럽트(directed interrupt)가 상기 프로세스를 시작시킬 수 있다. 상기 기록된 값들은 하나 이상의 프로세서들로 하여금 각자 할당된 서브태스크들에 대하여 특정한 작업을 수행하도록 할 수 있다. 예를 들어, 상기 기록된 값은 상기 디렉티드 인터럽트의 대상(target)을 식별하는 노드 식별자(node identifier)와, 코드 실행을 시작할 주소(address)를 직접적으로 또는 간접적으로 명시함으로써 실행될 일련의 명령들 및 서브태스크들을 지칭하는 하나의 벡터(vector)를 포함할 수 있다. 필요한 경우에는, 하드웨어 메커니즘이 대상 프로세서에 시작 메시지를 전달하여, 상기 대상 프로세서로 하여금 상기 벡터에 의하여 명시된 할당된 서브태스크들의 실행을 시작하도록 할 수 있다.
단계 506에서, 각각의 프로세싱 노드(202)는 각자 할당된 메모리 초기화 및 테스팅 서브태스크들을 수행하는데, 상기 서브태스크들은 연계된 메모리(206)에 대응하는 것일 수도 있고 또는 그렇지 않을 수도 있다. 도 2에 도시된 하나의 예시적인 실시예에서, 컴퓨팅 시스템(200)은 네 개의 코어들, 즉 하나의 제어 코어(202[0]) 및 세 개의 슬레이브 코어들(202[1:3])을 포함한다. 메모리 초기화/테스팅 태스크는 상기 제어 코어(202[0])에 의하여 다수의 서브태스크들(예를 들어, 서브태스크1, 서브태스크2, 서브태스크3, 등)로 분할된다. 상기 제어 코어(202[0])는 상기 서브태스크1은 제1 슬레이브 코어(202[1])에, 상기 서브태스크2는 제2 슬레이브 코어(202[2])에, 그리고 상기 서브태스크3은 제3 슬레이브 코어(202[3])에 전송한다. 단계 504에서, 각각의 슬레이브 코어(202[1:3])는 각자의 서브태스크들을 수신하고, 실행을 위하여 스케줄링한다. 추가로, 상기 제어 코어(202[0])는 다른 서브태스크의 실행을 계속하거나, 또는 상기 슬레이브 코어들의 실행을 기다리거나, 또는 그 자신의 별도의 서브태스크를 실행시킬 수 있다. 각각의 슬레이브 코어(202[1:3])는 해당 태스크를 처리할 자원이 존재하는 일정 시점에 상기 서브태스크를 실행하고, 그 결과로, 상기 실행은 다른 슬레이브 코어들과 겹칠 수도 있고 겹치지 않을 수도 있다. 결과적으로, 상기 할당된 메모리 초기화/테스팅 서브태스크들은, 해당 슬레이브 코어들에서 자원의 유무에 따라, 상기 코어들(202)에 의하여 순차적인 방식으로 또는 병렬적으로 실행될 수 있다. 상기 서브태스크 실행은 프로세싱 노드에 의하여 수행되거나 또는 각각의 프로세싱 노드의 노스 브리지 안에 있는 회로에 의하여 수행될 수 있다.
이해할 수 있는 것처럼, 상기 제어 및 슬레이브 코어들은 독립적인 플랫폼 시스템들에 존재할 수 있다. 이러한 구현예들에 있어서, 상기 제어 코어는 참여하고 있는 플랫폼 시스템 각각에게 서브태스크들을 전송하여, 해당 시스템에 있는 하나 이상의 코어들 각각이 자신에게 할당된 서브태스크(들)를 처리할 수 있도록 한다. 이러한 시나리오에서, 상기 실행은 순차적으로, 또는 병렬적으로 행해진다. 상기 메모리 초기화 태스크 실행의 분산된 성질의 결과로서, 상기 실행이 병렬적으로 또는 순차적으로 행해진다는 사실은 상기 태스크의 완료에 있어서 중요하지 않게 된다. 만약 상기 태스크가 병렬적으로 실행되면, 상기 태스크는 더욱 빨리 완료되겠지만, 해당 데이터의 전송 지연시간이 상기 제어 코어에서의 직렬화(serialization)를 유발할 수 있다.
단계 508에서는, 각각의 프로세싱 노드가 상태를 상기 BSP에 다시 보고한다. 상태 보고(status report)는, 예를 들어, 상기 메모리 초기화 및 테스트 도중에 연속적으로 이루어지거나, 주기적으로 이루어지거나, 또는 상기 메모리 초기화 및 테스팅이 완료된 경우에 이루어질 수 있다. 추가로, 상기 상태 보고는 다양한 방식으로 보고될 수 있다. 예를 들어, 할당된 서브태스크들이 실행되었는지 여부를 문의하기 위하여, 상기 부트 스트랩 프로세서가 각각의 프로세싱 노드에게 주기적으로 문의(query)를 보낼 수 있다. 다른 대안으로서, 각각의 프로세싱 노드가 각자의 상태를 상기 부트 스트랩 프로세서에 알려주는 메시지를 보낼 수 있다. 또 다른 대안으로서, 각각의 프로세싱 노드가 지역 레지스터(local register) 또는 부트 스트랩 프로세서의 지역 메모리에 기록함으로써 상태를 보고할 수 있다.
모든 프로세싱 노드들이 각자에게 할당된 메모리 초기화/테스팅 서브태스크들의 실행을 완료한 후에, 단계 510에서, 상기 부트 스트랩 프로세서는 상기 시스템 부트를 계속하고, 다른 프로세싱 노드들은 작동을 중지(halt)한다. 만약 하나의 메모리 초기화/테스팅 태스크가 실행되어야 하는 경우에는, 단계 504에서 상기 프로세스가 다시 시작된다. 그렇지 않으면, 단계 514에서, 프로세스가 종료한다.
메모리 초기화/테스팅 서브태스크들을 서로 다른 프로세싱 노드들에 할당함으로써, 시스템 부트는 훨씬 빨리 완료될 수 있다. 비록 일부 서브태스크들은 이전 서브태스크들의 완료에 의존적이고 다른 태스크들은 이전 서브태스크이 완료되는 것을 기다리지 않고 순서에 상관없이 완료될 수 있지만, 상기 의존성을 갖는 태스크들과 상기 의존성을 갖지 않는 태스크들에 상관없이, 전체적인 성능 및 기동 시간(startup time)은 서브태스크들의 분할, 할당, 및 분산에 의하여 향상될 수 있다. 이러한 향상은, 실행 순서에 있어서 먼저이지만 먼저 실행되어야 하는 의존성을 갖지 않는 다른 태스크들을 기다릴 필요없이 서브태스크들 중 일부가 실행됨으로 인하여, 전체적인 "시스템 부트" 또는 "시스템의 부팅" 시간이 감소된다는 사실로부터 기인한다. 물론, 상기 부트 스트랩 프로세서가 각각의 서브태스크에 대한 개별적인 의존성을 고려하여 상기 메모리 초기화/테스팅 태스크를 분할하는 경우에는, 상기 메모리 초기화가 더욱 향상될 수 있다. 예를 들어, 하나 이상의 지정된 프로세싱 노드들에는 다른 서브태스크의 결과에 의존적인 서브태스크들이 할당될 수 있고, 하나 이상의 다른 프로세싱 노드들에는 이전 서브태스크(들)가 완료되기를 기다려야 할 필요가 없는 서브태스크들이 순서와 무관하게 할당될 수 있다.
본 명세서에서 설명된 것처럼, 상기 분산된 메모리 초기화 루틴은, 메모리 태스크들을 분할하여 별개의 노드들에 분산 및 실행하고 따라서 향상된 실행 시간을 가져오는, 멀티프로세서 시스템 내의 다수의 노드들 가운데 분산된 메모리를 설정, 초기화, 및 테스트할 수 있는 BIOS 코드로서 구현될 수 있다. 예를 들어, 하나의 코어는 SMBus(저속 버스)로부터 SPD를 판독하는 작업을 수행하고, 다른 코어는 SPD 의존성이 없는 복잡한 초기화 태스크들을 수행할 수 있다. 또한 본 발명에서 개시된 분산된 처리 방식은 일정 BIOS 알고리즘들의 정확도를 향상시킬 수 있다. 예를 들어, 지연 설정(delay setting)들의 최적화된 구성을 결정하기 위하여 사용될 수 있는 데이터 아이(data eye)가 생성되는, 더 빠른 실행을 위하여 BIOS가 최적화되도록 하는 훈련 알고리즘(training algorithm)들이 개발되어 있다. 그러나 상기 생성된 데이터 아이는 상기 훈련 알고리즘을 실행하는 코어에 의하여 처리될 수 있는 데이터의 양에 의하여 제한된다. 본 발명에서 개시된 분산된 처리 방식은, 주 프로세서로 하여금 데이터를 모으고 시스템 내의 다른 코어들로 분산시킬 수 있도록 분할하여 상기 다른 코어들이 해당 정보를 처리하고 그 결과를 주 프로세서에 반환하도록 함으로써, 정확도를 향상시킬 수 있다. 또한 상기 개시된 분할-및-분산 방식은, 할당된 서브태스크들이 순서에 상관없이 실행됨에 따라 빠른 부트 시간을 가져온다. 또 다른 장점으로서는, 부트 스트랩 프로세서로 하여금 모든 BIOS 초기화 태스크들을 수행하도록 하지 않고 서브태스크들이 각각의 코어에 분산되도록 함으로써, BIOS 초기화 중에 프로세싱 코어들이 보다 효율적으로 사용될 수 있다는 점이다.
메모리 초기화 태스크들이 어떻게 분할되고 다수의 프로세싱 노드들로 분산되는지를 추가적인 예와 설명을 제공하기 위하여, 아래에서 메모리 초기화 루틴 또는 알고리즘이 제공되는데, 여기서 서브태스크들의 총 개수 st는 시스템 내의 코어들의 총 개수 이하이다.
T = { st[1] + st[2] + st[3] + ... st[X]}, 여기서 st는 메모리 초기화 서브태스크;
C0 = "T"를 생성하기 위하여 "st"를 조합하는 역할을 수행하는 주 초기화 코어;
c[n] = n이 {1 ... N}일 때 서브태스크 코어;
N = 코어들의 최대 개수로서, N ≥ X;
X = 임의의 T를 위한 서브태스크들의 최대 개수;
n - 현재 코어 번호;
x - 현재 서브태스크 번호;
단계 1 - 서브태스크들을 코어들로 분산시킨다;
단계 2 - For c[n];
단계 3 - For st[x];
단계 4 - c0로부터 c[n]으로 st[x] 초기화 정보 및 코드를 보낸다;
단계 5 - c[n]이 st[x]의 실행을 시작한다;
단계 6 - c0가 c[n]으로부터 st[x] 결과들을 수신하고 실행을 시작한다;
단계 7 - c0가 n 및 x를 증가시킨다;
단계 8 - c0가 단계 2 내지 단계 7을 모든 X에 대하여 반복한다;
단계 9 - n = N이면 단계10으로 이동한다;
단계 10 - c0가 분산된 서브태스크 데이터를 수집한다;
단계 11 - For c[n];
단계 12 - c0가 c[n]으로부터 st[x]를 요청한다;
단계 13 - c[n]이 실행을 완료하고 그 결과를 c0에게 보낸다;
단계 14 - c0가 n 및 x를 증가시킨다;
단계 15 - c0가 단계 11 내지 단계 14를 n = N이 될 때까지 모든 X에 대하여 반복한다;
단계 16 - c0가 모든 st[1-X]로부터의 데이터를 재조합함으로써 T를 생성한다;
단계 17 - 다음 태스크에 대하여 모든 단계들이 반복된다;
이해할 수 있는 것처럼, 상기 루틴은 유사코드(pseudo-code) 형태로 표현될 수 있고 그리고/또는 사용되는 특정 명령 세트 아키텍쳐(instruction set architecture)를 위한 대응되는 어셈블리 언어 또는 고급 언어 코드로 번역될 수 있다. 추가로, 본 명세서에서 설명된 작업들은 컴퓨터 시스템 사용자에 의하여 직접 입력된 명령들 및/또는 소프트웨어 모듈들에 의해 실행된 단계들을 포함할 수 있다. 본 명세서에서 참조된 단계들의 기능은 모듈들의 기능 또는 모듈들 일부의 기능에 대응될 수 있다. 소프트웨어 모듈들에 추가로, 상기 흐름들 또는 상기 흐름들의 일부는 애플리케이션 명령들로서 구현될 수도 있다. 본 명세서에서 참조된 작업들은 모듈들이거나 또는 모듈들의 일부일 수 있다(예를 들어, 소프트웨어, 펌웨어(firmware), 하드웨어 모듈들). 예를 들어, 본 명세서에서 논의된 소프트웨어 모듈들은 스크립트, 배치(batch) 또는 기타 실행가능한 파일들, 또는 이들의 조합 및/또는 일부분들을 포함할 수 있다. 상기 소프트웨어 모듈들은 컴퓨터로 판독 가능한 매체 위에 인코딩된 컴퓨터 프로그램 또는 컴퓨터 프로그램의 서브루틴들을 포함할 수 있다.
추가로, 본 발명의 기술분야에서 통상의 기술자는, 상기 모듈들 간의 경계선들은 단지 설명을 위한 것이고, 대안적인 실시예들에서는 모듈들을 통합하거나 또는 모듈들의 기능을 다르게 분리하는 것도 가능하다는 것을 이해할 수 있을 것이다. 나아가, 대안적인 실시예들은 특정 모듈 또는 서브모듈의 다수의 객체들을 조합할 수도 있다. 더 나아가, 본 발명의 기술분야에서 통상의 기술자는, 상기 예시적인 실시예들에서 설명된 작업들은 오직 설명을 위하여 제공된 것이라는 점을 이해할 수 있을 것이다. 상기 작업들이 조합되거나, 상기 작업들의 기능이 본 발명의 원리에 따라 추가적인 작업들로 분산될 수 있다. 따라서, 본 명세서에서 설명된 작업흐름(flows), 상기 작업들(operations), 그리고 상기 모듈들은, 상기 작업흐름의 작업들을 실행할 수 있도록 설정된 컴퓨터 시스템 상에서 실행되거나, 그리고/또는 컴퓨터 판독가능한 매체로부터 실행될 수 있다. 상기 작업흐름은, 상기 흐름도를 실행하도록 컴퓨터 시스템을 설정하기 위한 기계 판독가능 및/또는 컴퓨터 판독가능한 매체 안에 구현될 수 있다. 마찬가지로, 상기 소프트웨어 모듈들은, 상기 모듈의 기능들을 수행하도록 컴퓨터 시스템을 설정하기 위하여 컴퓨터 시스템 메모리 안에 저장되거나 그리고/또는 컴퓨터 시스템 메모리로 전송될 수 있다.
지금까지 개시된 구체적인 실시예들은 오직 설명을 위한 것이고, 본 발명의 기술분야에서 통상의 기술자는 본 발명의 가르침을 통하여 쉽게 본 발명을 비록 다르지만 균등한 방식으로 변형하고 실시할 수 있기 때문에, 본 발명을 제한하는 것으로 해석되어서는 아니 된다. 따라서, 상기 설명은 본 발명을 위에서 제시된 특정 형태로 제한하는 것으로 해석되어서는 아니 되고, 반대로, 첨부된 청구범위의 청구항들에 의하여 정의되는 본 발명의 원리 및 범위 내에서, 그러한 대안들, 변형형태들, 및 균등물을 모두 포함하는 것으로 이해되어야 하고, 광범위한 형태로 정의된 본 발명의 원리 및 범위를 벗어남이 없이도, 본 발명의 기술분야에서 통상의 기술자는 다양한 변화, 대체, 및 변경들을 만들 수 있음을 이해하여야 한다.
Claims (20)
- 다수의 프로세싱 노드(processing node)들로 하여금 메모리 초기화 태스크(memory initialization task)를 포함하는 부트 프로세스(boot process)를 수행하도록 하는 방법으로서,
제어 프로세싱 노드(control processing node)에서 메모리 초기화 태스크를 다수의 메모리 초기화 서브태스크들로 분할(dividing)하는 단계와;
상기 다수의 프로세싱 노드들 중 하나에 DIMM 메모리로부터 SPD(serial presence detect) 값을 판독하는 메모리 초기화 서브태스크를 할당하고, 그리고 상기 다수의 프로세싱 노드들 중 다른 하나에 상기 SPD 값에 의존적이지 않은 복합 초기화 태스크들을 실행시키는 메모리 초기화 서브태스크를 할당함으로써, 각 메모리 초기화 서브태스크가 대응하는 프로세싱 노드를 갖도록 다수의 프로세싱 노드들 사이에서 상기 다수의 메모리 초기화 서브태스크들을 분산(distributing)시키는 단계와;
서브태스크 결과를 생성하도록 상기 대응하는 프로세싱 노드에서 각 메모리 초기화 서브태스크를 실행(executing)시키는 단계와; 그리고
상기 다수의 프로세싱 노드들로부터의 서브태스크 결과들을 상기 제어 프로세싱 노드에서 조합(combining)하는 단계를 포함하고,
상기 다수의 메모리 초기화 서브태스크들은 상기 다수의 프로세싱 노드들에서 병렬적으로 또는 순차적으로 실행될 수 있는 것을 특징으로 하는 부트 프로세스를 수행하는 방법. - 제1항에 있어서,
상기 다수의 메모리 초기화 서브태스크들을 분산시키기 전에, 상기 다수의 프로세싱 노드들 사이의 통신 링크들을 초기화하는 단계를 더 포함하는 것을 특징으로 하는 부트 프로세스를 수행하는 방법. - 제1항에 있어서,
상기 대응하는 프로세싱 노드에서 각 메모리 초기화 서브태스크를 실행시키는 단계는, 상기 대응하는 프로세싱 노드에서의 실행을 위해 각 메모리 초기화 서브태스크를 스케줄링하는 단계를 포함하는 것을 특징으로 하는 부트 프로세스를 수행하는 방법. - 제1항에 있어서,
상기 대응하는 프로세싱 노드에서 각 메모리 초기화 서브태스크를 실행시키는 단계는, 소프트웨어 루틴을 실행하는 단계를 포함하는 것을 특징으로 하는 부트 프로세스를 수행하는 방법. - 제1항에 있어서,
상기 대응하는 프로세싱 노드들에서 이루어진 상기 메모리 초기화 서브태스크들의 실행과 관련된 상태 보고들을 상기 제어 프로세싱 노드에서 수신하는 단계를 더 포함하는 것을 특징으로 하는 부트 프로세스를 수행하는 방법. - 제1항에 있어서,
상기 다수의 프로세싱 노드들 중 각각의 하나는, 각자에게 대응하는 메모리 초기화 서브태스크를 실행하는 상기 다수의 프로세싱 노드들 중 다른 노드들과는 병렬적으로, 각자에게 대응하는 메모리 초기화 서브태스크를 실행하는 것을 특징으로 하는 부트 프로세스를 수행하는 방법. - 시스템 메모리; 및
다수의 프로세싱 노드들을 포함하는 컴퓨터 시스템으로서,
상기 프로세싱 노드 각각은 하나의 프로세서 코어, 상기 다수의 프로세싱 노드들 중 적어도 다른 하나와의 통신 인터페이스, 그리고 상기 시스템 메모리로부터 데이터 흐름 및 상기 시스템 메모리로의 데이터 흐름을 관리하기 위한 메모리 제어기를 포함하고, 상기 다수의 프로세싱 노드들은 하나의 마스터 프로세싱 노드(master processing node)와 다수의 실행 프로세싱 노드(execution processing node)들을 포함하며, 상기 마스터 프로세싱 노드는, 각 할당된 메모리 초기화 서브태스크가 하나의 대응하는 실행 프로세싱 노드를 갖도록 메모리 초기화 태스크를 다수의 메모리 초기화 서브태스크들로 분할하고 상기 다수의 메모리 초기화 서브태스크들을 상기 다수의 실행 프로세싱 노드들에 할당함으로써 상기 시스템 메모리 상에서 메모리 초기화 태스크를 수행하도록 되어 있고, 상기 다수의 실행 프로세싱 노드들 중 하나에 할당된 메모리 초기화 서브태스크들이 상기 다수의 실행 프로세싱 노드들 중 다른 노드에 할당된 다른 메모리 초기화 서브태스크들에 의존하지 않고 순서에 상관없이 실행될 수 있도록 상기 다수의 메모리 초기화 서브태스크들은 상기 다수의 실행 프로세싱 노드들에서 병렬적으로 또는 순차적으로 실행될 수 있는 것을 특징으로 하는 컴퓨터 시스템. - 제7항에 있어서,
상기 실행 프로세싱 노드 각각은 상기 마스터 프로세싱 노드에 의하여 각자에게 할당된 메모리 초기화 서브태스크 각각을 실행하고 그로부터 해당 서브태스크 결과를 생성하도록 되어있는 것을 특징으로 하는 컴퓨터 시스템. - 제7항에 있어서,
상기 마스터 프로세싱 노드는 또한 상기 다수의 실행 프로세싱 노드들로부터의 서브태스크 결과들을 조합하도록 되어있는 것을 특징으로 하는 컴퓨터 시스템. - 제7항에 있어서,
상기 시스템 메모리는 다수의 듀얼 인라인 메모리 모듈(dual inline memory module)들을 포함하는 것을 특징으로 하는 컴퓨터 시스템. - 제7항에 있어서,
상기 마스터 프로세싱 노드는 또한 상기 다수의 실행 프로세싱 노드들로부터 상기 메모리 초기화 서브태스크들의 상태를 수신하도록 되어있는 것을 특징으로 하는 컴퓨터 시스템. - 제7항에 있어서,
상기 마스터 프로세싱 노드가, 메모리 초기화 서브태스크들을 실행시키는 상기 다수의 실행 프로세싱 노드들 중의 하나인 것을 특징으로 하는 컴퓨터 시스템. - 제7항에 있어서,
상기 다수의 실행 프로세싱 노드들 중 하나는, 각자에게 대응하는 메모리 초기화 서브태스크를 실행시키는 상기 다수의 실행 프로세싱 노드 중 다른 노드에 대하여 병렬적으로, 자신에게 대응하는 메모리 초기화 서브태스크를 실행하는 것을 특징으로 하는 컴퓨터 시스템. - 제7항에 있어서,
상기 마스터 프로세싱 노드는, 상기 다수의 실행 프로세싱 노드들에서 실행된 상기 다수의 메모리 초기화 서브태스크들의 결과에 근거하여 상기 마스터 프로세싱 노드의 메모리 제어기 안에 있는 하나 이상의 레지스터들을 프로그래밍함으로써 상기 메모리 초기화 태스크를 수행하는 것을 특징으로 하는 컴퓨터 시스템. - 메모리 어레이; 및
다수의 프로세싱 노드들을 포함하는 컴퓨터 시스템으로서,
상기 프로세싱 노드들 각각은 하나의 프로세서, 상기 메모리 어레이와 통신하기 위한 메모리 제어기, 그리고 상기 다수의 프로세싱 노드들 중 적어도 다른 하나와의 통신 인터페이스를 포함하고;
상기 다수의 프로세싱 노드들 중 하나는 메모리 초기화 태스크를 다수의 서브태스크들로 분할하고 그리고 상기 다수의 서브태스크들을 상기 다수의 프로세싱 노드들에 할당하며; 그리고
상기 다수의 프로세싱 노드들 각각은 상기 할당된 서브태스크들을 실행하는 동안 상기 메모리 어레이의 어떠한 일부분으로부터도 정보를 획득할 수 있고, 상기 다수의 프로세싱 노드들 중 하나에 상기 서브태스크 실행 결과를 다시 전송하여, 상기 다수의 프로세싱 노드들로 하여금 효율적이고 빠르게 상기 메모리 어레이의 메모리 초기화를 수행할 수 있도록 하는 것을 특징으로 하는 컴퓨터 시스템. - 제15항에 있어서,
상기 메모리 어레이는 상기 다수의 프로세싱 노드들에 DDR(double data rate) 버스를 통하여 연결된 다수의 듀얼 인라인 메모리 모듈(dual inline memory module)들을 포함하는 것을 특징으로 하는 컴퓨터 시스템. - 제15항에 있어서,
상기 다수의 프로세싱 노드들 중 하나는, 상기 다수의 프로세싱 노드들에서 실행된 다수의 서브태스크들의 결과들을 기반으로 자신의 메모리 제어기 안의 하나 이상의 레지스터들을 프로그래밍함으로써 상기 메모리 초기화 태스크를 수행하여, 상기 다수의 프로세싱 노드들 중 오직 하나에서 상기 메모리 초기화 태스크를 실행하는 경우에 부팅에 필요한 시간의 양에 비하여, 요구되는 부트 시간(boot time)을 감소시키는 것을 특징으로 하는 컴퓨터 시스템. - 삭제
- 삭제
- 삭제
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/624,626 US8307198B2 (en) | 2009-11-24 | 2009-11-24 | Distributed multi-core memory initialization |
US12/624,626 | 2009-11-24 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20120112454A KR20120112454A (ko) | 2012-10-11 |
KR101623892B1 true KR101623892B1 (ko) | 2016-05-24 |
Family
ID=43501297
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020127014955A KR101623892B1 (ko) | 2009-11-24 | 2010-11-22 | 분산된 멀티코어 메모리 초기화 |
Country Status (6)
Country | Link |
---|---|
US (2) | US8307198B2 (ko) |
EP (1) | EP2504761A1 (ko) |
JP (1) | JP5646644B2 (ko) |
KR (1) | KR101623892B1 (ko) |
CN (1) | CN102648453B (ko) |
WO (1) | WO2011066202A1 (ko) |
Families Citing this family (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101872308A (zh) * | 2009-04-25 | 2010-10-27 | 鸿富锦精密工业(深圳)有限公司 | 内存条控制系统及其控制方法 |
WO2012001777A1 (ja) * | 2010-06-29 | 2012-01-05 | 富士通株式会社 | マルチコアプロセッサシステム、通信制御方法、および通信制御プログラム |
US9936209B2 (en) * | 2011-08-11 | 2018-04-03 | The Quantum Group, Inc. | System and method for slice processing computer-related tasks |
US8954639B2 (en) * | 2011-09-06 | 2015-02-10 | International Business Machines Corporation | Integrated link calibration and multi-processor topology discovery |
US20130081050A1 (en) * | 2011-09-23 | 2013-03-28 | Elwha LLC, a limited liability company of the State of Delaware | Acquiring and transmitting tasks and subtasks to interface devices |
US20130081049A1 (en) * | 2011-09-23 | 2013-03-28 | Elwha LLC, a limited liability company of the State of Delaware | Acquiring and transmitting tasks and subtasks to interface devices |
US9269063B2 (en) | 2011-09-23 | 2016-02-23 | Elwha Llc | Acquiring and transmitting event related tasks and subtasks to interface devices |
US9336130B2 (en) * | 2011-11-30 | 2016-05-10 | Sandisk Technologies Inc. | Methods, systems, and computer readable media for providing basic input/output system (BIOS) data and non-BIOS data on the same non-volatile memory |
US9367329B2 (en) | 2011-12-29 | 2016-06-14 | Intel Corporation | Initialization of multi-core processing system |
WO2013142861A1 (en) | 2012-03-23 | 2013-09-26 | Polycore Software, Inc. | Apparatus and method for providing a multicore programming platform |
CN102779075B (zh) | 2012-06-28 | 2014-12-24 | 华为技术有限公司 | 一种在多处理器核系统中进行调度的方法、装置及系统 |
KR20140036731A (ko) * | 2012-09-18 | 2014-03-26 | 한국전자통신연구원 | 응용 프로그램 개발 방법 및 시스템 |
FR2996020A1 (fr) * | 2012-09-27 | 2014-03-28 | Thales Sa | Dispositif de traitement numerique comportant plusieurs coeurs, systeme radar comportant un tel dispositif et procedes associes de traitement de donnees et de generation d'une table d'evenements |
CN102999385B (zh) * | 2012-11-06 | 2016-05-25 | 国网山东省电力公司枣庄供电公司 | 计算设备中多处理器协同处理方法 |
CN103870334B (zh) * | 2012-12-18 | 2017-05-31 | 中国移动通信集团公司 | 一种大规模漏洞扫描的任务分配方法及装置 |
KR102183274B1 (ko) * | 2013-01-16 | 2020-11-26 | 에스케이플래닛 주식회사 | 분산 처리 시스템 및 그 방법, 그리고 이에 적용되는 장치 |
RU2630171C2 (ru) * | 2013-03-15 | 2017-09-05 | Хуавей Текнолоджиз Ко., Лтд. | Способ начальной загрузки компьютерной системы с множеством центральных процессоров |
JP5942904B2 (ja) * | 2013-03-19 | 2016-06-29 | 株式会社デンソー | 処理装置 |
US9846598B2 (en) * | 2013-04-03 | 2017-12-19 | Hewlett Packard Enterprise Development Lp | Modifying a flow of operations to be executed in a plurality of execution environments |
US20150006776A1 (en) * | 2013-06-29 | 2015-01-01 | Yen-Cheng Liu | On-chip mesh interconnect |
US10229043B2 (en) * | 2013-07-23 | 2019-03-12 | Intel Business Machines Corporation | Requesting memory spaces and resources using a memory controller |
US9792112B2 (en) | 2013-08-28 | 2017-10-17 | Via Technologies, Inc. | Propagation of microcode patches to multiple cores in multicore microprocessor |
US9507404B2 (en) | 2013-08-28 | 2016-11-29 | Via Technologies, Inc. | Single core wakeup multi-core synchronization mechanism |
US9465432B2 (en) | 2013-08-28 | 2016-10-11 | Via Technologies, Inc. | Multi-core synchronization mechanism |
CN105580001A (zh) * | 2013-09-27 | 2016-05-11 | 慧与发展有限责任合伙企业 | 对与服务类别相关联的混合流进行处理 |
US9658858B2 (en) * | 2013-10-16 | 2017-05-23 | Xilinx, Inc. | Multi-threaded low-level startup for system boot efficiency |
JP6206097B2 (ja) * | 2013-11-01 | 2017-10-04 | 富士通株式会社 | 情報処理装置、起動方法及び起動プログラム |
US9239711B1 (en) * | 2013-12-31 | 2016-01-19 | Google Inc. | Run benchmark or analysis tools against massive repository of archived webpages on machines in the cloud for continuous builds or AD-HOC requests |
US10108253B2 (en) | 2014-01-30 | 2018-10-23 | Hewlett Packard Enterprise Development Lp | Multiple compute nodes |
BR112016026264B1 (pt) * | 2014-05-09 | 2022-01-18 | Huawei Technologies Co., Ltd | Método implementado por computador para otimizar um tempo de inicialização de um sistema de computador e sistema de computador |
CN104520811B (zh) * | 2014-05-09 | 2017-07-28 | 华为技术有限公司 | 优化具有多个中央处理器的计算机的启动时间的系统及方法 |
CN105100179B (zh) * | 2014-05-23 | 2018-10-19 | 杭州华为数字技术有限公司 | 服务器集群系统 |
US9710381B2 (en) | 2014-06-18 | 2017-07-18 | International Business Machines Corporation | Method and apparatus for cache memory data processing |
CN104298576B (zh) * | 2014-09-25 | 2018-09-04 | 小米科技有限责任公司 | 终端测试方法及装置 |
CN105528199B (zh) * | 2014-09-30 | 2019-04-19 | 华为技术有限公司 | 一种节点的处理方法及装置 |
WO2016068903A1 (en) | 2014-10-29 | 2016-05-06 | Hewlett Packard Enterprise Development Lp | Trans-fabric instruction set for a communication fabric |
US20160164696A1 (en) * | 2014-12-08 | 2016-06-09 | Ebay Inc. | Modular internet of things |
US10248487B1 (en) * | 2015-01-27 | 2019-04-02 | Violin Systems Llc | Error recovery for multi-stage simultaneously running tasks |
US10528443B2 (en) * | 2015-01-30 | 2020-01-07 | Samsung Electronics Co., Ltd. | Validation of multiprocessor hardware component |
US10193826B2 (en) | 2015-07-15 | 2019-01-29 | Intel Corporation | Shared mesh |
TWI554945B (zh) * | 2015-08-31 | 2016-10-21 | 晨星半導體股份有限公司 | 例行工作的分配方法及應用其之多核心電腦 |
CN106708727B (zh) * | 2016-08-03 | 2020-04-28 | 腾讯科技(深圳)有限公司 | 一种分布式病毒特征样本验证方法及系统 |
WO2019066780A1 (en) * | 2017-09-26 | 2019-04-04 | Intel Corporation | METHODS AND APPARATUS FOR REDUCING BOOT TIME IN A PROCESSOR AND PROGRAMMABLE LOGIC DEVICE ENVIRONMENT |
KR102623918B1 (ko) * | 2017-12-25 | 2024-01-11 | 인텔 코포레이션 | 프리-메모리 초기화 멀티스레드 병렬 컴퓨팅 플랫폼 |
US11042644B2 (en) * | 2018-02-01 | 2021-06-22 | Quixant Plc | Method and system for security verification in a booting process with a multi-core processor |
CN109448777A (zh) * | 2018-11-12 | 2019-03-08 | 郑州云海信息技术有限公司 | 一种nvme固态硬盘的测试方法及装置 |
CN109581925A (zh) * | 2018-12-05 | 2019-04-05 | 北京和利时系统工程有限公司 | 一种任务处理方法及装置、计算机可读存储介质 |
CN113703934B (zh) * | 2020-05-22 | 2024-09-06 | 腾讯科技(深圳)有限公司 | 任务处理方法、装置、计算机设备和存储介质 |
US20200341776A1 (en) * | 2020-07-07 | 2020-10-29 | Krishnaprasad H | Apparatus for initializing memory using a hardware engine for minimizing boot time |
JP7460743B1 (ja) | 2022-12-27 | 2024-04-02 | Necプラットフォームズ株式会社 | メモリコントローラ及びメモリコントローラ制御方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5673388A (en) * | 1995-03-31 | 1997-09-30 | Intel Corporation | Memory testing in a multiple processor computer system |
US5768585A (en) * | 1995-11-21 | 1998-06-16 | Intel Corporation | System and method for synchronizing multiple processors during power-on self testing |
US6158000A (en) * | 1998-09-18 | 2000-12-05 | Compaq Computer Corporation | Shared memory initialization method for system having multiple processor capability |
US7065688B1 (en) * | 2003-02-19 | 2006-06-20 | Advanced Micro Devices, Inc. | Simultaneous multiprocessor memory testing and initialization |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6336185B1 (en) * | 1998-09-24 | 2002-01-01 | Phoenix Technologies Ltd. | Use of other processors during BIOS boot sequence to minimize boot time |
US6766474B2 (en) * | 2000-12-21 | 2004-07-20 | Intel Corporation | Multi-staged bios-based memory testing |
JP3773195B2 (ja) * | 2002-10-25 | 2006-05-10 | インターナショナル・ビジネス・マシーンズ・コーポレーション | メモリモジュール、情報処理装置、メモリモジュールに関する初期設定方法、並びにプログラム |
US7194660B2 (en) * | 2003-06-23 | 2007-03-20 | Newisys, Inc. | Multi-processing in a BIOS environment |
US7539909B2 (en) * | 2003-09-30 | 2009-05-26 | Intel Corporation | Distributed memory initialization and test methods and apparatus |
US7251744B1 (en) * | 2004-01-21 | 2007-07-31 | Advanced Micro Devices Inc. | Memory check architecture and method for a multiprocessor computer system |
US7281127B2 (en) * | 2004-12-27 | 2007-10-09 | Intel Corporation | Concurrent processing of operations in a boot sequence to initialize a storage device including an operating system loader to load |
JP4569368B2 (ja) * | 2005-04-26 | 2010-10-27 | 日本電気株式会社 | 計算機システム、メモリ初期化方法、および計算機システムのプログラム |
US20070050561A1 (en) * | 2005-08-23 | 2007-03-01 | Advanced Micro Devices, Inc. | Method for creating critical section code using a software wrapper for proactive synchronization within a computer system |
US7526639B2 (en) * | 2006-02-13 | 2009-04-28 | International Business Machines Corporation | Method to enhance boot time using redundant service processors |
US7779244B2 (en) * | 2006-12-28 | 2010-08-17 | Intel Corporation | Multi-socket boot |
JP4234766B1 (ja) * | 2007-10-31 | 2009-03-04 | 株式会社東芝 | 電子機器およびその制御方法 |
CN101464813A (zh) * | 2007-12-19 | 2009-06-24 | 国际商业机器公司 | 用于多核处理器上的自动工作量分配的系统和方法 |
JP5068188B2 (ja) * | 2008-01-21 | 2012-11-07 | インターナショナル・ビジネス・マシーンズ・コーポレーション | メモリのテストを実行する方法、コンピュータ・プログラム、およびシステム |
US20090193175A1 (en) * | 2008-01-28 | 2009-07-30 | Advanced Micro Devices, Inc. | Identification of an onboard memory buffer device from a system address |
JP5217520B2 (ja) * | 2008-03-06 | 2013-06-19 | 株式会社リコー | 電子機器 |
-
2009
- 2009-11-24 US US12/624,626 patent/US8307198B2/en active Active
-
2010
- 2010-11-22 CN CN201080055347.6A patent/CN102648453B/zh active Active
- 2010-11-22 KR KR1020127014955A patent/KR101623892B1/ko active IP Right Grant
- 2010-11-22 WO PCT/US2010/057561 patent/WO2011066202A1/en active Application Filing
- 2010-11-22 EP EP10782514A patent/EP2504761A1/en not_active Ceased
- 2010-11-22 JP JP2012541131A patent/JP5646644B2/ja active Active
-
2012
- 2012-10-10 US US13/648,648 patent/US8566570B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5673388A (en) * | 1995-03-31 | 1997-09-30 | Intel Corporation | Memory testing in a multiple processor computer system |
US5768585A (en) * | 1995-11-21 | 1998-06-16 | Intel Corporation | System and method for synchronizing multiple processors during power-on self testing |
US6158000A (en) * | 1998-09-18 | 2000-12-05 | Compaq Computer Corporation | Shared memory initialization method for system having multiple processor capability |
US7065688B1 (en) * | 2003-02-19 | 2006-06-20 | Advanced Micro Devices, Inc. | Simultaneous multiprocessor memory testing and initialization |
Also Published As
Publication number | Publication date |
---|---|
EP2504761A1 (en) | 2012-10-03 |
US20130042096A1 (en) | 2013-02-14 |
JP2013512509A (ja) | 2013-04-11 |
US8307198B2 (en) | 2012-11-06 |
WO2011066202A1 (en) | 2011-06-03 |
CN102648453B (zh) | 2015-11-25 |
CN102648453A (zh) | 2012-08-22 |
KR20120112454A (ko) | 2012-10-11 |
JP5646644B2 (ja) | 2014-12-24 |
US20110126209A1 (en) | 2011-05-26 |
US8566570B2 (en) | 2013-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101623892B1 (ko) | 분산된 멀티코어 메모리 초기화 | |
US9229730B2 (en) | Multi-chip initialization using a parallel firmware boot process | |
US10120694B2 (en) | Embedded system boot from a storage device | |
US8972702B2 (en) | Systems and methods for power management in a high performance computing (HPC) cluster | |
US10572434B2 (en) | Intelligent certificate discovery in physical and virtualized networks | |
US11893379B2 (en) | Interface and warm reset path for memory device firmware upgrades | |
US8615770B1 (en) | System and method for dynamically spawning thread blocks within multi-threaded processing systems | |
US20210294772A1 (en) | Systems, Apparatus And Methods For Rapid Peripheral Component Interconnect Express (PCIE) System Boot | |
JP2022060151A (ja) | 低レイテンシのブート性能を可能にするファームウェアのブートタスクの分配 | |
CN114090498A (zh) | 一种嵌入式soc系统实现多核启动与业务的相互解耦方法 | |
Wessman et al. | De-risc: A complete risc-v based space-grade platform | |
US9934045B1 (en) | Embedded system boot from a storage device | |
US7454687B2 (en) | Method and infrastructure for recognition of the resources of a defective hardware unit | |
CN111694787A (zh) | 一种芯片启动的方法、网络设备和机器可读存储介质 | |
Afonso et al. | A prototyping environment for high performance reconfigurable computing | |
US11372792B1 (en) | Automatic bus resource adjustment in a multiple root bridge computing system | |
US20230024607A1 (en) | System-on-chip for sharing graphics processing unit that supports multimaster, and method for operating graphics processing unit | |
US8176303B2 (en) | Multiprocessor communication device and methods thereof | |
EP3699913B1 (en) | Delayed reset for code execution from memory device | |
US20060156291A1 (en) | System and method for managing processor execution in a multiprocessor system | |
CN115878272B (zh) | 图任务调度方法、执行端设备、存储介质及程序产品 | |
US8555046B2 (en) | Computer system and its HW abstraction method | |
Cvek et al. | GNU/Linux and reconfigurable multiprocessor FPGA platform | |
US20090077322A1 (en) | System and Method for Getllar Hit Cache Line Data Forward Via Data-Only Transfer Protocol Through BEB Bus | |
KR20240111293A (ko) | Numa 아키텍처 기반의 nmp 에뮬레이터 및 그 작동 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A302 | Request for accelerated examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20190417 Year of fee payment: 4 |