KR20140057369A - 메모리에 에러들을 인젝션하기 위한 방법 및 장치 - Google Patents
메모리에 에러들을 인젝션하기 위한 방법 및 장치 Download PDFInfo
- Publication number
- KR20140057369A KR20140057369A KR1020147008424A KR20147008424A KR20140057369A KR 20140057369 A KR20140057369 A KR 20140057369A KR 1020147008424 A KR1020147008424 A KR 1020147008424A KR 20147008424 A KR20147008424 A KR 20147008424A KR 20140057369 A KR20140057369 A KR 20140057369A
- Authority
- KR
- South Korea
- Prior art keywords
- error
- error injection
- memory
- register
- system address
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/26—Functional testing
- G06F11/263—Generation of test inputs, e.g. test vectors, patterns or sequences ; with adaptation of the tested hardware for testability with external testers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Detection And Correction Of Errors (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
메모리에 에러들을 인젝션하기 위한 장치 및 방법이 개시된다. 일 실시예에서, 전용 인터페이스는 에러 인젝션 시스템 어드레스 레지스터 및 에러 인젝션 시스템 어드레스 레지스터에 결합된 에러 인젝션 마스크 레지스터를 포함한다. 에러 인젝션 시스템 어드레스 레지스터가 인입하는 기입 어드레스와 매치되는 시스템 어드레스를 포함하는 경우, 에러 인젝션 마스크 레지스터는 메모리에 에러를 출력한다.
Description
본 발명의 실시예들은 일반적으로 메모리에 에러들을 인젝션하기 위한 방법 및 장치에 관한 것이다.
복잡한 에러 핸들링 및 에러 복구 소프트웨어(SW)를 개발하고 검증하기 위해, 운영체제(OS) 벤더들, 가상 머신 매니저들(VMM) 등과 같은 SW 벤더들은 소프트웨어 테스트를 위해 에러들을 주어진 시스템 어드레스에 인젝션할 수 있는 간단한 인터페이스를 원한다.
현재의 구현예들에서는, 에러들을 메모리에 인젝션하는데 사용될 수 있는 간단한 인터페이스가 없다. 대신에, BIOS(basic input/output system) 이용을 수반하고 에러 인젝션 메커니즘을 테스트하기 위해 설계된(DFx) 복잡한 방법들이 활용되고, 이것들이 에러 인젝션을 달성하도록 사용된다.
불행하게도, 이들 방법들은 복잡하고, 테스트될 각각의 제품들과 연관된 많은 설계 문제 이슈들을 포함한다. 또한, 이들 방법들은 테스트될 각각의 제품마다 "재-개발"되어야 하기 때문에, 이들 방법은 통상적으로 비-이동식(non-portable)이다. 예를 들어, 주어진 시스템 어드레스는 (DFx 메커니즘들은 메모리 어드레스와 함께 동작하기 때문에) 메모리 어드레스로 변환되어야 하고, 또한 그것들은 테스트될 특정한 제품만을 위해 사용되는 것으로 여겨졌던 특정 능력들을 언록(unlock)하기 위해 마이크로코드로부터의 도움을 요청할 수 있다.
따라서, 제품을 테스트하기 위해, 에러들을 인젝션하는 간단한 인터페이스를 활용하는 것이 도움이 될 수 있다.
이하의 도면들과 함께 이하의 상세한 설명으로부터 본 발명에 대한 보다 나은 이해를 얻을 수 있다.
도 1은 본 발명의 실시예들과 함께 활용될 수 있는 컴퓨터 시스템 아키텍쳐를 도시한다.
도 2는 본 발명의 실시예들과 함께 활용될 수 있는 컴퓨터 시스템 아키텍쳐를 도시한다.
도 3은 본 발명의 일 실시예에 따른 MCH 전용 인터페이스의 블록도이다.
도 4는 본 발명의 일 실시예에 따라, 테스트 소프트웨어 플로우 및 MCH 전용 인터페이스 플로우(예를 들어, 하드웨어(HW) 플로우)를 도시하는 흐름도(400)이다.
도 1은 본 발명의 실시예들과 함께 활용될 수 있는 컴퓨터 시스템 아키텍쳐를 도시한다.
도 2는 본 발명의 실시예들과 함께 활용될 수 있는 컴퓨터 시스템 아키텍쳐를 도시한다.
도 3은 본 발명의 일 실시예에 따른 MCH 전용 인터페이스의 블록도이다.
도 4는 본 발명의 일 실시예에 따라, 테스트 소프트웨어 플로우 및 MCH 전용 인터페이스 플로우(예를 들어, 하드웨어(HW) 플로우)를 도시하는 흐름도(400)이다.
이하의 명세서에서, 설명의 목적을 위해, 다양한 특정 상세들이 아래에 설명된 본 발명의 실시예들에 대한 전체적인 이해를 제공하기 위해 설명될 것이다. 그러나, 본 발명의 실시예들이 이들 특정 상세들의 일부가 없이도 실시될 수 있다는 것은 본 기술 분야의 당업자에게 자명할 것이다. 다른 예들에서, 본 발명의 실시예들의 근본적인 원리들을 모호하게 하지 않게 하기 위해 주지의 구조들 및 디바이스들이 블록도 형태로 도시된다.
후속 내용은, 이하에서 논의될 본 발명의 실시예들과 함께 활용될 수 있고, 여기에서 상세화된 명령어(들)를 실행하기 위한 예시적인 컴퓨터 시스템들이다. 랩탑들, 데스크탑들, 핸드헬드 PC들, 개인 휴대 정보 단말기들, 엔지니어링 워크스테이션들, 서버들, 네트워크 디바이스들, 네트워크 허브들, 스위치들, 임베디드 프로세서들, DSP들(digital signal processors), 그래픽스 디바이스들, 비디오 게임 디바이스들, 셋탑 박스들, 마이크로 컨트롤러들, 휴대폰들, 휴대용 미디어 플레이어들, 핸드헬드 디바이스들 및 다양한 다른 전자 디바이스들에 대한 기술 분야에서 공지된 다른 시스템 설계들 및 구성들이 또한 적합하다. 일반적으로, 여기서 개시된 바와 같이, 프로세서 및/또는 다른 실행 로직을 통합하는 것이 가능한 굉장히 다양한 시스템들 또는 전자 디바이스들이 일반적으로 적합하다.
이제 도 1을 참조하면, 도시된 것은 본 발명의 일 실시예에 따른 컴퓨터 시스템(100)의 블록도이다. 이 시스템(100)은 하나 이상의 프로세싱 엘리먼트(110, 115)를 포함할 수 있고, 이들 엘리먼트는 그래픽 메모리 제어기 허브(GMCH)(120)에 연결된다. 선택적인 속성의 부가적인 프로세싱 엘리먼트들(115)은 도 1에 파선으로 도시되어 있다. 각각의 프로세싱 엘리먼트는 단일 코어일 수 있거나, 또는 대안적으로 다수의 코어를 포함할 수 있다. 선택적으로, 프로세싱 엘리먼트들은, 집적 메모리 제어기 및/또는 집적 I/O 제어 로직과 같이, 프로세싱 코어들 외에 다른 온-다이 엘리먼트들을 포함할 수 있다. 또한, 적어도 하나의 실시예에 있어서, 프로세싱 엘리먼트들의 코어(들)는, 이들이 코어당 하나보다 많은 하드웨어 스레드 콘텍스트를 포함할 수 있다는 점에서 멀티스레드형일 수 있다.
도 1은, 예를 들어 동적 랜덤 액세스 메모리(DRAM)일 수 있는 메모리(140)에 GMCH(120)가 연결될 수 있음을 도시한다. 적어도 하나의 실시예에 있어서, DRAM은 비휘발성 캐시와 연관될 수 있다. GMCH(120)는 칩셋 또는 칩셋의 일부일 수 있다. GMCH(120)는 프로세서(들)(110, 115)와 통신하며, 프로세서(들)(110, 115)와 메모리(140) 사이의 상호작용을 제어할 수 있다. 또한, GMCH(120)는 프로세서(들)(110, 115)와 시스템(100)의 다른 엘리먼트들 사이에 가속화된 버스 인터페이스의 역할을 할 수 있다. 적어도 하나의 실시예에 있어서, GMCH(120)는 프론트사이드 버스(FSB: frontside bus)(195)와 같은 멀티 드롭 버스를 통해 프로세서(들)(110, 115)와 통신한다. 또한, GMCH(120)는 (평판 디스플레이와 같은) 디스플레이(140)에 연결된다. GMCH(120)는 집적 그래픽 가속기를 포함할 수 있다. GMCH(120)는 입/출력(I/O) 제어기 허브(ICH)(150)에 또한 연결되는데, 이는 다양한 주변 디바이스들을 시스템(100)에 연결하는데 사용될 수 있다. 도 1의 실시예에서 예를 들어 외부 그래픽 디바이스(160)가 도시되어 있는데, 이는 다른 주변 디바이스(170)와 함께 ICH(150)에 연결된 별개의 그래픽 디바이스일 수 있다.
대안적으로, 부가적이거나 상이한 프로세싱 엘리먼트들이 또한 시스템(100)에 존재할 수 있다. 예를 들어, 부가적인 프로세싱 엘리먼트(들)(115)는 프로세서(110)와 동일한 부가적인 프로세서(들), 프로세서(110)에 대해 비대칭이거나 이종인 부가적인 프로세서(들), (예를 들어 그래픽 가속기들 또는 디지털 신호 프로세싱(DSP) 유닛들과 같은) 가속기들, 필드 프로그래머블 게이트 어레이들, 또는 임의의 다른 프로세싱 엘리먼트를 포함할 수 있다. 구조적(architectural), 마이크로구조적, 열적, 전력 소모 특성들 등의 메리트의 메트릭들의 스펙트럼에 관하여 물리적 리소스들(110, 115) 사이에 각종 차이가 존재할 수 있다. 이들 차이점은 효과적으로 프로세싱 엘리먼트들(110, 115) 사이의 비대칭성 및 이종성(heterogeneity)으로서 나타날 수 있다. 적어도 하나의 실시예에 있어서, 다양한 프로세싱 엘리먼트들(110, 115)은 동일한 다이 패키지에 상주할 수 있다.
이하, 도 2를 참조하면, 본 발명의 일 실시예에 따른 다른 컴퓨터 시스템(200)의 블록도가 도시되어 있다. 도 2에 도시된 바와 같이, 멀티프로세서 시스템(200)은 점대점 인터커넥트 시스템이며, 점대점 인터커넥트(250)를 통해 연결된 제1 프로세싱 엘리먼트(270) 및 제2 프로세싱 엘리먼트(280)를 포함한다. 도 2에 도시된 바와 같이, 프로세싱 엘리먼트들(270 및 280) 각각은, 제1 및 제2 프로세서 코어들(즉, 프로세서 코어들(274a 및 274b) 및 프로세서 코어들(284a 및 284b))을 포함한 멀티코어 프로세서들일 수 있다. 대안적으로, 프로세싱 엘리먼트들(270, 280) 중 하나 이상은 가속기나 필드 프로그래머블 게이트 어레이와 같이 프로세서와 다른 엘리먼트일 수 있다. 2개의 프로세싱 엘리먼트(270, 280)만이 도시되어 있지만, 본 발명의 범위는 이와 같이 제한되지는 않는다는 것이 이해되어야 한다. 다른 실시예들에 있어서, 주어진 프로세서에 하나 이상의 부가적인 프로세싱 엘리먼트가 존재할 수 있다.
제1 프로세싱 엘리먼트(270)는, 전용 인터페이스(273)(후술됨) 및 점대점(P-P) 인터페이스들(276 및 278)을 포함하는 메모리 제어기 허브(MCH)(272)를 더 포함할 수 있다. 유사하게, 제2 프로세싱 엘리먼트(280)는, 전용 인터페이스(283)(후술됨) 및 P-P 인터페이스들(286 및 288)을 포함하는 MCH(282)를 포함할 수 있다. 프로세서들(270, 280)은 PtP 인터페이스 회로들(278, 288)을 사용하여 점대점(PtP) 인터페이스(250)를 통해 데이터를 교환할 수 있다. 도 2에 도시된 바와 같이, MCH(272, 282)는 프로세서들을 각각의 메모리(즉, 메모리(242) 및 메모리(244))에 연결하는데, 이들 메모리는 각각의 프로세서에 로컬 부착된 메인 메모리의 부분일 수 있다.
프로세서들(270, 280) 각각은 점대점 인터페이스 회로들(276, 294, 286, 298)을 사용하여 개별 PtP 인터페이스들(252, 254)을 통해 칩셋(290)과 데이터를 교환할 수 있다. 또한, 칩셋(290)은 고성능 그래픽 인터페이스(239)를 통해 고성능 그래픽 회로(238)와 데이터를 교환할 수 있다. 본 발명의 실시예들은 임의의 개수의 프로세싱 코어들을 갖는 임의의 프로세싱 엘리먼트 내에 위치될 수 있다. 일 실시예에서, 임의의 프로세서 코어는 로컬 캐시 메모리(도시되지 않음)를 포함하거나 그렇지 않으면 로컬 캐시 메모리와 연관될 수 있다. 또한, 공유 캐시(도시되지 않음)가 두 프로세서들의 외부에 있거나 프로세서 중 하나에 포함될 수 있는데, 이는 p2p 인터커넥트를 통해 프로세서들과 접속될 수 있어서, 프로세서가 저전력 모드로 있는 경우, 프로세서들 중 하나 또는 모두의 로컬 캐시 정보가 공유 캐시에 저장될 수 있다. 제1 프로세싱 엘리먼트(270) 및 제2 프로세싱 엘리먼트(280)는 각각, P-P 인터커넥트들(276, 286 및 284)을 통해 칩셋(290)에 결합될 수 있다. 도 2에 도시된 바와 같이, 칩셋(290)은 P-P 인터페이스들(294 및 298)을 포함한다. 또한, 칩셋(290)은 칩셋(290)을 고성능 그래픽 엔진(248)과 결합시키기 위한 인터페이스(292)를 포함한다. 일 실시예에서, 버스(249)는 그래픽 엔진(248)을 칩셋(290)에 결합시키기 위해 사용될 수 있다. 대안적으로, 점대점 인터커넥트(249)는 이러한 컴포넌트들을 결합시킬 수 있다. 차례로, 칩셋(290)은 인터페이스(296)를 통해 제1 버스(216)에 결합될 수 있다. 일 실시예에서, 본 발명의 범위가 그렇게 제한되지 않지만, 제1 버스(216)는 PCI(Peripheral Component Interconnect) 버스, 또는 PCI 익스프레스 버스와 같은 버스 또는 다른 제3 세대 I/O 인터커넥트 버스일 수 있다.
도 2에 도시된 바와 같이, 다양한 I/O 디바이스들(214)은 제1 버스(216)를 제2 버스(220)에 결합하는 버스 브릿지(218)와 함께, 제1 버스(216)에 결합될 수 있다. 일 실시예에서, 제2 버스 (220)는 로우 핀 카운트(LPC: low pin count) 버스일 수 있다. 일 실시예에서, 예를 들어 키보드/마우스(222), 통신 디바이스들(226), 및 코드(230)를 포함할 수 있는 디스크 드라이브 또는 다른 대용량 저장 디바이스와 같은 데이터 저장부(228)를 포함하여 다양한 디바이스들이 제2 버스(220)에 결합될 수 있다. 또한, 오디오 I/O(224)는 제2 버스(220)에 결합될 수 있다. 다른 아키텍처들이 가능한 것에 유의하라. 예를 들어, 점대점 아키텍처 대신, 시스템은 멀티 드롭 버스 또는 다른 그러한 아키텍처를 구현할 수 있다.
일 실시예에서, 프로세싱 엘리먼트(270)는 전용 인터페이스(273)를 포함하는 MCH(272)를 포함할 수 있다. 다른 프로세싱 엘리먼트들은 마찬가지로 전용 인터페이스들(예를 들어, 프로세싱 엘리먼트(280)의 전용 인터페이스(283))를 포함하는 MCH들을 포함할 수 있다는 것을 이해해야 한다. 설명되는 바와 같이, MCH(272)의 전용 인터페이스(273)는, 에러가 인젝션될 시스템 어드레스를 프로그래밍하기 위한 컴퓨터 시스템(200)의 테스트 소프트웨어에 의해 사용될 수 있고, 어느 종류의 에러가 인젝션될지를 선택하기 위한 마스크 레지스터를 포함할 수 있다.
이제 도 3에서, MCH 전용 인터페이스(273)의 블록도가 본 발명의 일 실시예에 따라 도시된다. 일 실시예에서, MCH 전용 인터페이스(273)는 에러 인젝션 시스템 어드레스 레지스터(302) 및 에러 인젝션 시스템 어드레스 레지스터에 결합되는 에러 인젝션 마스크 레지스터(330)를 포함한다. 에러 인젝션 시스템 어드레스 레지스터(302)가 인입(incoming) 기입 어드레스들(325)과 매치되는 시스템 어드레스를 포함하는 경우, 에러 인젝션 마스크 레지스터(330)는 에러를 메모리(350)에 출력한다.
이제 MCH 전용 인터페이스(273)의 개요가 제공될 것이다. 도 3에 도시된 바와 같이, 에러 인젝션 시스템 어드레스 레지스터(302)가 제공되어, 컴퓨터 시스템의 테스트 소프트웨어는 에러가 인젝션되길 원하는 시스템 어드레스를 프로그래밍할 수 있다. 또한, 로직(310)이 인입하는 요청에 대한 어드레스(325)와 프로그래밍된 어드레스 사이의 매치를 찾기 위해 제공된다. 시스템 어드레스가 에러 인젝션 시스템 어드레스 레지스터(302) 내에 프로그래밍되면, 이후 테스트 소프트웨어는 이 시스템 어드레스(325)에의 기입을 수행할 수 있다. 어드레스 매치는 이후, 메모리(350)의 위치로 에러(예컨대, 데이터(333))를 트리거할 수 있다. (정정 또는 정정되지 않은) 에러의 유형은 어느 비트들이 에러를 포함할지 제어하는 에러 인젝션 마스크 레지스터(330)의 소프트웨어 프로그래밍에 의해 선택될 수 있다. 예로서, MCH 전용 인터페이스(273)는 메모리(232)와 연관된 컴퓨터 시스템(200)의 프로세싱 엘리먼트(270)의 MCH(272)와 함께 사용될 수 있으나, 인식되어야 하는 바와 같이, 임의의 컴퓨터 시스템과 함께 사용될 수 있다. 예를 들어, 본 발명의 실시예들은 도 1의 컴퓨터 시스템(100)과 함께 구현될 수 있다.
하나의 예로서, 도 3에 도시된 바와 같이, 록킹 메커니즘(301)이 보안의 목적을 위해 에러 인젝션 시스템 어드레스 레지스터(302)에 결합될 수 있다. 특정 예로서, 록킹 메커니즘(301)은 시스템 관리 모드(SMM) 동안에 언록(unlock)될 수 있다. 테스트 소프트웨어는 인버터(322)를 통해 AND 게이트(324)에 결합된 로크(lock)(320)를 언록할 수 있고 레지스터에의 기입(321)을 AND 게이트(324)로 전송할 수 있다. 이러한 방식으로, 유효 비트(304)가 에러 인젝션 시스템 어드레스 레지스터(302)에 설정될 수 있고 시스템이 언록될 수 있다.
전술한 바와 같이, 테스트 소프트웨어는 에러 인젝션 시스템 어드레스 레지스터(302)에 에러 인젝션 시스템 어드레스를 제공할 수 있다. 판정 로직 블록(310)은 테스트 소프트웨어 프로그램 기입 어드레스(325)와 에러 인젝션 시스템 어드레스 레지스터(302) 사이의 매치를 찾기 위해 이용된다. 구체적으로, AND 게이트(306)가 판정 로직 블록(310)에 신호를 송신함으로써 메모리에의 기입 신호(309) 및 유효 신호(304)가 수신되고 판정 로직 블록(310)이 레지스터(302)로부터의 에러 인젝션 시스템 어드레스를 테스트 소프트웨어 프로그램 기입 어드레스(325)와 매치시킨다면, 판정 로직 블록(310)은 에러 인젝션 신호(312)를 에러 인젝션 마스크 레지스터(330)로 전송한다.
따라서, 일단 에러 인젝션 시스템 어드레스가 레지스터(302) 내에 프로그래밍되었다면, 테스트 소프트웨어는 시스템 어드레스(325)에 기입을 수행할 수 있고, 일단 판정 로직 블록(310)에 의해 어드레스 매치가 판정되면, 판정 블록(310)은 에러 인젝션 마스크 레지스터(330)를 통해 해당 위치로 인젝션되도록 에러 인젝션 신호(312)를 트리거할 수 있다. (정정된 또는 정정되지 않은) 에러의 유형은, 테스트 소프트웨어가, 어느 비트들이 에러를 포함해야 하는지를 제어하는 에러 인젝션 마스크 레지스터(330)의 데이터 마스크 레지스터들을 사전-프로그래밍함으로써 선택될 수 있다. 도 3에서 알 수 있는 바와 같이, 테스트 목적을 위하여 데이터 에러(333)가 데이터 버퍼(340)를 통해 메모리(350)로 제공될 수 있다.
이러한 방식으로, 이 전술된 구조 및 방법론은 컴퓨터 시스템(200)의 테스트 소프트웨어에 의해 소프트웨어 문제들을 검출 및 정정하기 위하여 (정정된 또는 정정되지 않은) 메모리 에러들(333)을 메모리(350)에 인젝션할 수 있게 해준다.
도 4를 더 참조하여 보면, 도 4는 테스트 소프트웨어 플로우 및 MCH 전용 인터페이스 플로우(예를 들어, 하드웨어(HW) 플로우)를 도시하는 흐름도(400)이다. 도 4에서 알 수 있는 바와 같이, 테스트 소프트웨어가 록킹 메커니즘(301)을 언록하는데(써클 402), 이는 앞에서도 언급한 바 있다. 그 다음, 테스트 소프트웨어는 X를 에러 인젝션 시스템 어드레스 레지스터(302) 내에 프로그래밍한다(써클 404). X는 테스트 소프트웨어가 에러를 인젝션하기 원하는 시스템 어드레스라는 점이 인식되어야 한다.
그 다음, 테스트 소프트웨어는 에러 인젝션 마스크 레지스터(330)가 원하는 에러를 일으키도록 프로그래밍한다(써클 406). 또한, 테스트 소프트웨어는 인젝션을 위한 하드웨어 로직이 사용 준비(arm)되도록 유효 비트(304)를 설정한다(써클 408). 그 다음, 테스트 소프트웨어는 어드레스 X에 기입을 수행한다(써클 410).
하드웨어 또는 MCH 전용 인터페이스 플로우를 참조하여 보면, 메모리에 기입하기 위한 액세스가 존재하는지 여부가 판정된다(판정 써클 420). 존재하지 않는다면, 에러 인젝션 없이 트랜잭션이 지속된다(써클 422). 그러나, 메모리에 기입이 있다면, 어드레스 X에 액세스되는지와 메커니즘이 사용 준비되었는지 여부가 판정된다(판정 써클 425). 아니라면, 에러 인젝션 없이 트랜잭션이 지속된다(써클 422).
그러나, 메커니즘이 사용 준비되었고, 어드레스 X에 액세스된다면(예를 들어, 로직 블록(310)에 의해 판정됨), 에러 인젝션 마스크(330)가 적용될 수 있다(써클 430). 이 예에서, 에러(434)를 갖는 데이터(333)가 메모리(350)에 기입된다. 전술한 바와 같이, (정정된 또는 정정되지 않은) 에러의 유형은 테스트 소프트웨어가, 어느 비트들이 에러를 포함해야 하는지를 제어하는 에러 인젝션 마스크 레지스터(330)의 데이터 마스크 레지스터들을 사전-프로그래밍함으로써 선택될 수 있다.
또한, 테스트 소프트웨어가 어드레스 X에 대한 판독을 수행할 수 있고(써클 450), 하드웨어가 에러를 검출할 수 있다(써클 452). 그 다음 하드웨어가 에러를 로깅하고 시그널링할 수 있고(써클 454), 에러 핸들링 소프트웨어가 에러를 취급할 수 있다(써클 456).
이러한 방식으로, 이 전술된 구조 및 방법론은 컴퓨터 시스템의 테스트 소프트웨어에 의해 소프트웨어 문제들을 검출 및 정정하기 위하여 (정정된 또는 정정되지 않은) 메모리 에러들을 메모리에 인젝션할 수 있게 해준다. 또한, 전술한 전용 인터페이스 및 소프트웨어 방법론의 실시예들의 사용은, 최초의 장비 제조자들 뿐만 아니라 운영체제 벤더들 및 가상 머신 관리 벤더들과 같은 소프트웨어 벤더들에 의한 에러 인젝션 요구사항들을 만족시키기 위해 사용될 수 있다. 전술한 발명은 테스트를 위해 메모리에 에러를 인젝션하도록 특별히 설계될 수 있는 간단한 인터페이스를 제공한다. 특히, 본 방법론은 검출 및 정정을 위해 (정정된 및/또는 정정되지 않은) 메모리 에러들의 인젝션을 가능하게 한다. 본질적으로, 전술한 구조 및 방법론은 메모리에의 실제 에러 인젝션을 가능하게 하고 에러 복구 플로우의 개발 및 검증을 가능하게 한다.
본 명세서에 개시된 메커니즘의 실시예들은 하드웨어, 소프트웨어, 펌웨어, 또는 이러한 구현 접근법의 조합으로 구현될 수 있다. 본 발명의 실시예들은 적어도 하나의 프로세서, 데이터 저장소 시스템(휘발성 및 비휘발성 메모리 및/또는 저장소 엘리먼트들을 포함함), 적어도 하나의 입력 디바이스, 및 적어도 하나의 출력 디바이스를 포함하는 프로그램 가능한 시스템 상에서 실행하는 컴퓨터 프로그램 또는 프로그램 코드로서 구현될 수 있다.
프로그램 코드가 본 명세서에 설명된 기능들을 수행하기 위해 데이터를 입력하고 출력 정보를 생성하기 위해 적용될 수 있다. 출력 정보는 알려진 방식으로 하나 이상의 출력 디바이스에 적용될 수 있다. 이 애플리케이션의 목적을 위해, 프로세싱 시스템은 예를 들면 디지털 신호 프로세서(DSP), 마이크로컨트롤러, 주문형 반도체(ASIC), 또는 마이크로프로세서와 같은 프로세서를 갖는 임의의 시스템을 포함한다.
프로그램 코드는 프로세싱 시스템과 통신하기 위해 고급 절차 프로그래밍 언어 또는 객체 지향 프로그래밍 언어로 구현될 수 있다. 프로그램 코드는 또한 원하는 경우 어셈블리 언어 또는 기계어로 구현될 수 있다. 사실, 본 명세서에 설명된 메커니즘들은 임의의 특정 프로그래밍 언어로 범위가 한정되지 않는다. 임의의 경우에, 언어는 컴파일되거나 해석형 언어일 수 있다.
적어도 하나의 실시예의 하나 이상의 양태들은, 프로세서 내의 다양한 로직을 나타내는, 기계 판독가능한 매체 상에 저장된 표현 데이터에 의해 구현될 수 있으며, 기계에 의해 판독될 때 기계로 하여금 본 명세서에 설명된 기술들을 수행하는 로직을 제조하게 한다. "IP 코어"로 알려진 이러한 표현들은 유형의 기계 판독가능한 매체 상에 저장될 수 있고, 로직 또는 프로세서를 실제로 만드는 제조 기계에 로드하기 위해 다양한 고객들 또는 제조 시설들에 공급될 수 있다. 이러한 기계 판독가능한 저장 매체는 기계 또는 디바이스에 의해 제조되거나 형성되는 제조물의 비일시적, 유형의 장치들을 제한없이 포함하며, 이는 하드 디스크, 플로피 디스크, 광 디스크, 컴팩트 디스크 읽기 전용 메모리(CD-ROM), 재기록 가능 컴팩트 디스크(CD-RW), 및 광 자기 디스크를 포함하는 임의의 다른 타입의 디스크, 읽기 전용 메모리(ROM), 동적 랜덤 액세스 미모리(DRAM), 정적 랜덤 액세스 메모리(SRAM)와 같은 랜덤 액세스 메모리(RAM), 소거 및 프로그램 가능한 읽기 전용 메모리(EPROM), 플래시 메모리, 전기적으로 소거 및 프로그램 가능한 읽기 전용 메모리(EEPROM)와 같은 반도체 디바이스, 자기 또는 광 카드, 또는 전자 명령어들을 저장하기에 적합한 임의의 다른 타입의 매체와 같은 저장 매체를 포함한다.
따라서, 본 발명의 실시예들은, 본 발명의 실시예들의 동작들을 수행하는 명령어들을 포함하거나 본 명세서에 설명된 구조, 회로, 장치, 프로세서 및/또는 시스템 특징들을 정의하는 HDL과 같은 설계 데이터를 포함하는 비일시적의, 유형적인 기계 판독가능한 매체도 포함한다. 이러한 실시예들은 프로그램 제품으로도 지칭될 수 있다.
본 명세서에 개시된 명령어(들)의 특정 동작들은 하드웨어 컴포넌트들에 의해 수행될 수 있고, 회로 또는 명령어들로 프로그래밍된 다른 하드웨어 컴포넌트가 동작들을 수행하게 하거나 적어도 동작들을 초래하도록 사용되는 기계 실행가능한 명령어들로 구현될 수 있다. 회로는 몇 가지 예를 들자면 범용 또는 특수 목적 프로세서 또는 로직 회로를 포함할 수 있다. 동작들은 하드웨어와 소프트웨어에 조합에 의해서도 선택적으로 수행될 수 있다. 실행 로직 및/또는 프로세서는 명령어 지정 결과 오퍼랜드를 저장하기 위해 기계 명령어 또는 기계 명령어로부터 유도된 하나 이상의 제어 신호에 응답하는 구체적이거나 특정한 회로 또는 다른 로직을 포함할 수 있다. 예를 들면, 본 명세서에 개시된 명령어(들)의 실시예들은 도 1 및 2의 하나 이상의 시스템에서 실행될 수 있고 명령어(들)의 실시예들은 시스템에서 실행될 프로그램 코드에 저장될 수 있다. 또한, 이 도면들의 프로세싱 엘리먼트들은 본 명세서에 상세히 설명된 상세한 파이프라인 및/또는 아키텍처(예를 들면, 순차적 및 비순차적 아키텍처) 중 하나를 이용할 수 있다. 예를 들면, 순차적 아키텍처의 디코드 유닛은 명령어(들)를 디코딩하여, 디코딩된 명령어들을 벡터 또는 스칼라 유닛 등으로 전달할 수 있다.
전술한 설명 전반에 걸쳐, 설명의 목적을 위해, 다수의 특정 상세들이 본 발명의 철저한 이해를 제공하기 위해 개시되었다. 그러나, 본 발명이 이러한 특정 상세들의 일부 없이 실행될 수 있다는 것은 당업자에게 명백할 것이다. 따라서, 본 발명의 범위 및 사상은 이하의 청구항들의 측면에서 판단되어야 한다.
Claims (22)
- 메모리에 에러들을 인젝션하는(inject) 장치로서,
에러 인젝션 시스템 어드레스 레지스터(error injection system address register); 및
상기 에러 인젝션 시스템 어드레스 레지스터에 결합된 에러 인젝션 마스크 레지스터(error injection mask register)
를 포함하고,
상기 에러 인젝션 시스템 어드레스 레지스터가, 인입하는 기입 어드레스(incoming write address)에 매치하는 시스템 어드레스를 포함하는 경우, 상기 에러 인젝션 마스크 레지스터는 상기 메모리에 에러를 출력하는 장치. - 제1항에 있어서, 상기 장치는 프로세서의 MCH(memory control hub)의 컴포넌트인 장치.
- 제1항에 있어서, 상기 에러 인젝션 마스크 레지스터는 상기 에러를 이용하여 사전 프로그래밍되는 장치.
- 제3항에 있어서, 상기 에러는 정정된 에러 또는 정정되지 않은 에러 중 적어도 하나를 포함하는 장치.
- 제1항에 있어서, 상기 에러 인젝션 시스템 어드레스 레지스터에 결합된 록킹(locking) 메커니즘을 더 포함하고, 상기 록킹 메커니즘은 상기 에러 인젝션 시스템 어드레스 레지스터를 록하거나 언록하여서 각각 상기 에러 인젝션 마스크 레지스터가 상기 메모리에 상기 에러를 출력할 수 있게 하거나 상기 메모리에 상기 에러를 출력할 수 없게 하는 장치.
- 제5항에 있어서, 상기 록킹 메커니즘은 상기 에러 인젝션 시스템 어드레스 레지스터의 유효 비트를 더 포함하는 장치.
- 제5항에 있어서, 로직 블록을 더 포함하고, 상기 로직 블록은 상기 에러 인젝션 마스크 레지스터에 에러 인젝션 신호를 전송하여 상기 에러 인젝션 마스크 레지스터가 상기 메모리에 상기 에러를 출력하게 하는 장치.
- 제7항에 있어서, 상기 로직 블록은, 상기 록킹 메커니즘이 언록되고 상기 시스템 어드레스가 상기 인입하는 기입 어드레스에 매치하는 경우, 상기 에러 인젝션 신호를 상기 에러 인젝션 마스크 레지스터에 전송하는 장치.
- 컴퓨터 시스템으로서,
메모리;
명령어들을 프로세싱하기 위한 프로세서; 및
상기 메모리에 에러를 인젝션하기 위한 전용 인터페이스를 포함하는 MCH(memory control hub)
를 포함하고, 상기 전용 인터페이스는,
에러 인젝션 시스템 어드레스 레지스터; 및
상기 에러 인젝션 시스템 어드레스 레지스터에 결합된 에러 인젝션 마스크 레지스터
를 포함하고, 상기 에러 인젝션 시스템 어드레스 레지스터가 인입하는 기입 어드레스에 매치하는 시스템 어드레스를 포함하는 경우, 상기 에러 인젝션 마스크 레지스터는 상기 메모리에 상기 에러를 출력하는, 컴퓨터 시스템. - 제9항에 있어서, 상기 에러 인젝션 마스크 레지스터는 상기 에러를 이용하여 사전 프로그래밍되는 컴퓨터 시스템.
- 제10항에 있어서, 상기 에러는 정정된 에러 또는 정정되지 않은 에러 중 적어도 하나를 포함하는, 컴퓨터 시스템.
- 제9항에 있어서, 상기 에러 인젝션 시스템 어드레스 레지스터에 결합된 록킹 메커니즘을 더 포함하고, 상기 록킹 메커니즘은 상기 에러 인젝션 시스템 어드레스 레지스터를 록하거나 언록하여서 각각 상기 에러 인젝션 마스크 레지스터가 상기 메모리에 상기 에러를 출력할 수 있게 하거나 상기 메모리에 상기 에러를 출력할 수 없게 하는 컴퓨터 시스템.
- 제12항에 있어서, 상기 록킹 메커니즘은 상기 에러 인젝션 시스템 어드레스 레지스터의 유효 비트를 더 포함하는 컴퓨터 시스템.
- 제12항에 있어서, 로직 블록을 더 포함하고, 상기 로직 블록은 상기 에러 인젝션 마스크 레지스터에 에러 인젝션 신호를 전송하여 상기 에러 인젝션 마스크 레지스터가 상기 메모리에 상기 에러를 출력하게 하는 컴퓨터 시스템.
- 제14항에 있어서, 상기 로직 블록은, 상기 록킹 메커니즘이 언록되고 상기 시스템 어드레스가 상기 인입하는 기입 어드레스에 매치하는 경우, 상기 에러 인젝션 신호를 상기 에러 인젝션 마스크 레지스터에 전송하는 컴퓨터 시스템.
- 메모리에 에러들을 인젝션하는 방법으로서,
에러 인젝션 시스템 어드레스 레지스터에서 테스트 소프트웨어로부터 시스템 어드레스를 수신하는 단계;
상기 에러 인젝션 시스템 어드레스 레지스터의 상기 시스템 어드레스가 인입하는 기입 어드레스에 매치하는지를 판정하는 단계; 및
상기 시스템 어드레스가 상기 인입하는 기입 어드레스에 매치하는 경우, 상기 메모리에 에러를 출력하라고 에러 인젝션 마스크 레지스터에게 명령하는 단계
를 포함하는 방법. - 제16항에 있어서, 상기 에러 인젝션 마스크 레지스터를 상기 에러를 이용하여 사전 프로그래밍하는 단계를 더 포함하는 방법.
- 제17항에 있어서, 상기 에러는 정정된 에러 또는 정정되지 않은 에러 중 적어도 하나를 포함하는 방법.
- 제16항에 있어서, 상기 에러 인젝션 시스템 어드레스 레지스터에 록킹 메커니즘이 결합되고, 상기 록킹 메커니즘은 상기 에러 인젝션 시스템 어드레스 레지스터를 록하거나 언록하여서 각각 상기 에러 인젝션 마스크 레지스터가 상기 메모리에 상기 에러를 출력할 수 있게 하거나 상기 메모리에 상기 에러를 출력할 수 없게 하는 방법.
- 제19항에 있어서, 상기 록킹 메커니즘은 상기 에러 인젝션 시스템 어드레스 레지스터의 유효 비트를 더 포함하는 방법.
- 제19항에 있어서, 상기 에러 인젝션 마스크 레지스터에 에러 인젝션 신호를 전송하여 상기 에러 인젝션 마스크 레지스터가 상기 메모리에 상기 에러를 출력하게 하는 단계를 더 포함하는 방법.
- 제21항에 있어서, 상기 록킹 메커니즘이 언록되고 상기 시스템 어드레스가 상기 인입하는 기입 어드레스에 매치하는 경우, 상기 에러 인젝션 신호를 상기 에러 인젝션 마스크 레지스터에 전송하는 단계를 더 포함하는 방법.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/053956 WO2013048406A1 (en) | 2011-09-29 | 2011-09-29 | Method and apparatus for injecting errors into memory |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140057369A true KR20140057369A (ko) | 2014-05-12 |
KR101732557B1 KR101732557B1 (ko) | 2017-05-04 |
Family
ID=47996149
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020147008424A KR101732557B1 (ko) | 2011-09-29 | 2011-09-29 | 메모리에 에러들을 인젝션하기 위한 방법 및 장치 |
Country Status (8)
Country | Link |
---|---|
US (1) | US9405646B2 (ko) |
JP (1) | JP2014531681A (ko) |
KR (1) | KR101732557B1 (ko) |
CN (1) | CN103890733B (ko) |
BR (1) | BR112014007425A2 (ko) |
DE (1) | DE112011105692T5 (ko) |
GB (1) | GB2509849B (ko) |
WO (1) | WO2013048406A1 (ko) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10777294B2 (en) | 2016-01-26 | 2020-09-15 | Hewlett Packard Enterprise Development Lp | DRAM-level error injection and tracking |
US10691572B2 (en) * | 2017-08-30 | 2020-06-23 | Nvidia Corporation | Liveness as a factor to evaluate memory vulnerability to soft errors |
CN107729231B (zh) * | 2017-09-19 | 2021-02-02 | 北京东土科技股份有限公司 | 一种基于操作系统的故障注入方法及装置 |
KR102388803B1 (ko) * | 2017-11-02 | 2022-04-20 | 삼성전자주식회사 | 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 반도체 메모리 장치의 동작 방법 |
CN108959049B (zh) * | 2018-06-27 | 2021-12-17 | 郑州云海信息技术有限公司 | Smm的健壮性和稳定性的测试方法、装置及存储介质 |
US10922203B1 (en) * | 2018-09-21 | 2021-02-16 | Nvidia Corporation | Fault injection architecture for resilient GPU computing |
KR20210149445A (ko) | 2020-06-02 | 2021-12-09 | 삼성전자주식회사 | 메모리 모듈 및 메모리 모듈의 동작 방법 |
US11983100B2 (en) * | 2020-09-29 | 2024-05-14 | Amazon Technologies, Inc. | Automated testing of systems and applications |
CN112349343A (zh) * | 2020-11-06 | 2021-02-09 | 海光信息技术股份有限公司 | 电路结构、芯片以及电子设备 |
CN115019862A (zh) * | 2021-03-04 | 2022-09-06 | 瑞昱半导体股份有限公司 | 静态随机存取存储器的纠错电路的验证方法 |
CN113064782B (zh) * | 2021-03-22 | 2023-03-24 | 山东英信计算机技术有限公司 | 一种内存注错自动化系统、使用方法及介质 |
US20240211362A1 (en) * | 2022-12-27 | 2024-06-27 | Advanced Micro Devices, Inc. | Devices, systems, and methods for injecting fabricated errors into machine check architectures |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4759019A (en) * | 1986-07-10 | 1988-07-19 | International Business Machines Corporation | Programmable fault injection tool |
JPH05134018A (ja) | 1991-11-13 | 1993-05-28 | Nec Ibaraki Ltd | 擬障方式 |
JP3512442B2 (ja) * | 1993-08-31 | 2004-03-29 | 富士通株式会社 | 記憶装置の試験用エラー発生制御装置 |
US5671352A (en) | 1995-07-07 | 1997-09-23 | Sun Microsystems, Inc. | Error injection to a behavioral model |
US5875195A (en) * | 1997-03-31 | 1999-02-23 | International Business Machines Corporation | Method and apparatus for error injection techniques |
JPH10312337A (ja) * | 1997-05-12 | 1998-11-24 | Kofu Nippon Denki Kk | 記憶装置の試験回路 |
US7587639B2 (en) * | 2004-11-09 | 2009-09-08 | Intel Corporation | System and method for error injection using a flexible program interface field |
CN100350390C (zh) * | 2006-11-29 | 2007-11-21 | 哈尔滨工业大学 | 容错计算机系统的搭接式故障注入装置及方法 |
US7818626B1 (en) * | 2007-01-12 | 2010-10-19 | Oracle America, Inc. | Memory error injector and associated methods |
US8065573B2 (en) * | 2007-03-26 | 2011-11-22 | Cray Inc. | Method and apparatus for tracking, reporting and correcting single-bit memory errors |
US8522080B2 (en) * | 2008-03-24 | 2013-08-27 | Emulex Design & Manufacturing Corporation | Generation of simulated errors for high-level system validation |
JP2010225239A (ja) | 2009-03-24 | 2010-10-07 | Toshiba Corp | 半導体集積回路およびメモリの機能検証方法 |
US20110161592A1 (en) | 2009-12-31 | 2011-06-30 | Nachimuthu Murugasamy K | Dynamic system reconfiguration |
-
2011
- 2011-09-29 WO PCT/US2011/053956 patent/WO2013048406A1/en active Application Filing
- 2011-09-29 DE DE112011105692.3T patent/DE112011105692T5/de not_active Withdrawn
- 2011-09-29 JP JP2014533256A patent/JP2014531681A/ja active Pending
- 2011-09-29 US US13/992,506 patent/US9405646B2/en not_active Expired - Fee Related
- 2011-09-29 KR KR1020147008424A patent/KR101732557B1/ko active IP Right Grant
- 2011-09-29 GB GB1405276.5A patent/GB2509849B/en not_active Expired - Fee Related
- 2011-09-29 BR BR112014007425A patent/BR112014007425A2/pt not_active IP Right Cessation
- 2011-09-29 CN CN201180074534.3A patent/CN103890733B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2014531681A (ja) | 2014-11-27 |
CN103890733A (zh) | 2014-06-25 |
BR112014007425A2 (pt) | 2017-04-04 |
KR101732557B1 (ko) | 2017-05-04 |
CN103890733B (zh) | 2018-05-15 |
WO2013048406A1 (en) | 2013-04-04 |
GB2509849A (en) | 2014-07-16 |
GB201405276D0 (en) | 2014-05-07 |
US20130275810A1 (en) | 2013-10-17 |
US9405646B2 (en) | 2016-08-02 |
GB2509849B (en) | 2021-02-03 |
DE112011105692T5 (de) | 2014-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101732557B1 (ko) | 메모리에 에러들을 인젝션하기 위한 방법 및 장치 | |
RU2599340C2 (ru) | Использование аутентифицированных манифестов для обеспечения внешней сертификации многопроцессорных платформ | |
US9037812B2 (en) | Method, apparatus and system for memory validation | |
US8281229B2 (en) | Firmware verification using system memory error check logic | |
US8645797B2 (en) | Injecting a data error into a writeback path to memory | |
US11048588B2 (en) | Monitoring the operation of a processor | |
US9612979B2 (en) | Scalable memory protection mechanism | |
US11080432B2 (en) | Hardware countermeasures in a fault tolerant security architecture | |
EP4020190A1 (en) | Software visible and controllable lock-stepping with configurable logical processor granularities | |
US9118482B2 (en) | Fault tolerant apparatus and method for elliptic curve cryptography | |
US20150371046A1 (en) | Preventing code modification after boot | |
JP2013251016A (ja) | 複数の認証済みコードモジュールを利用するプロセッサ、方法、及びシステム | |
JP2014531681A5 (ko) | ||
CN106663471A (zh) | 用于反向存储器备份的方法和装置 | |
US20110179255A1 (en) | Data processing reset operations | |
KR101054231B1 (ko) | 캐시/tlb 간섭 및 진단 테스트를 위한 경량, 고수율의 테스트 케이스 생성 방법 | |
JP2017126357A (ja) | メモリにエラーを注入する方法および装置 | |
US20160343453A1 (en) | Method and apparatus for injecting errors into memory | |
US20160179611A1 (en) | Low overhead error checking and correction apparatus and method | |
US7774758B2 (en) | Systems and methods for secure debugging and profiling of a computer system | |
US11734457B2 (en) | Technology for controlling access to processor debug features | |
US8793689B2 (en) | Redundant multithreading processor | |
US12013782B2 (en) | Processor with protection of an isolated memory and protection method for the isolated memory accessible only by a trusted core |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
AMND | Amendment | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application | ||
AMND | Amendment | ||
X701 | Decision to grant (after re-examination) | ||
GRNT | Written decision to grant |