KR20210141156A - 페이지 장애에 기초하여 메모리 고장을 예견하고, 예견되는 메모리 고장을 관리하는 시스템의 운영 체계 핸들링 - Google Patents

페이지 장애에 기초하여 메모리 고장을 예견하고, 예견되는 메모리 고장을 관리하는 시스템의 운영 체계 핸들링 Download PDF

Info

Publication number
KR20210141156A
KR20210141156A KR1020200058448A KR20200058448A KR20210141156A KR 20210141156 A KR20210141156 A KR 20210141156A KR 1020200058448 A KR1020200058448 A KR 1020200058448A KR 20200058448 A KR20200058448 A KR 20200058448A KR 20210141156 A KR20210141156 A KR 20210141156A
Authority
KR
South Korea
Prior art keywords
memory
bad
address
physical addresses
addresses
Prior art date
Application number
KR1020200058448A
Other languages
English (en)
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 삼성전자주식회사
Priority to KR1020200058448A priority Critical patent/KR20210141156A/ko
Priority to US17/198,979 priority patent/US11360837B2/en
Priority to CN202110270073.2A priority patent/CN113672430A/zh
Publication of KR20210141156A publication Critical patent/KR20210141156A/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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1064Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in cache or content addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1016Error in accessing a memory location, i.e. addressing error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Abstract

페이지 장애에 기초하여 메모리 고장을 예견하고, 예견되는 메모리 고장을 관리하는 시스템의 운영 체계(OS) 핸들링이 개시된다. 시스템은 프로세서와, 프로세서에 결합되어 가상 머신에서 사용하는 가상 어드레스들에 대응하는 시스템 물리적 어드레스들을 제공하는 메모리를 포함한다. OS는 실행 시에 시스템으로 하여금, 어플리케이션 실행 동안 페이지 장애를 유발하는 불량 페이지들을 인지하고, 불량 페이지들의 메모리의 시스템 물리적 어드레스들에서 나타나는 잠재적 불량 어드레스 유형을 특정하고, 특정한 잠재적 불량 어드레스 유형과 관련된 불량 물리적 어드레스들이 어드레스 변환에 사용되지 않도록 하는 명령어들을 저장한다.

Description

페이지 장애에 기초하여 메모리 고장을 예견하고, 예견되는 메모리 고장을 관리하는 시스템의 운영 체계 핸들링 {Handling operation system (OS) in a system for predicting and managing faulty memories based on page faults}
본 발명은 데이터 처리 시스템들에 관한 것으로서, 더욱 상세하게는 페이지 장애에 기초하여 메모리 고장을 예견하고, 예견되는 메모리 고장을 관리하는 시스템 및 그것의 운영 체계 핸들링 방법에 관한 것이다.
데이터 센터와 같은 데이터 처리 시스템은 많은 기업들 및 그들의 컴퓨터 시스템에 의해 호스팅된다. 데이터 센터는 호스팅되는 어플리케이션들 및/또는 트랜잭션들을 분산시키는데 이용되며, 흔히 클라우드라고도 하는 네트워킹된 컴퓨터 리소스들, 예컨대 서버들, 디스크들, 가상 머신들 등으로 구성된다. 이러한 구성에서, 기업들은 데이터 센터의 클라이언트이다. 데이터 센터는 클라이언트에게 감소된 비용, 용이한 확장성 및 감소된 관리 부담을 포함하는 많은 이점들을 제공한다.
데이터 센터는 대용량 데이터의 안정적이고 빠른 실시간 처리를 위해서 고용량을 갖는 메모리에 대한 요구가 증가한다. 그런데, 메모리의 성능 품질이 시간에 따라 변경될 수 있다. 예를 들어, 어플리케이션 및/또는 트랜잭션이 할당되고 메모리를 사용하고 있는 시점에서 고장난 메모리(failed memory)로 인해 페이지 장애가 발생할 수 있다. 이러한 페이지 장애가 빈번히 발생되면, 명령어 실행의 정상적인 흐름을 방해(disrupt)하여 착수된 작업을 중단(abort)시키고 재개(restart) 하도록 하는 등 데이터 센터 이용에 제약들이 따를 수 있다(availability constraints). 이에 따라, 페이지 장애에 기초하여 고장난 메모리들을 식별(identify)할 수 있다면, 이러한 편의(facility)가 가능하다면, 고장난 메모리들에 의해 발생될 메모리 고장을 예견할 수 있을 것이다. 또한, 예견되는 메모리 고장을 미리 관리하는 것이 데이터 센터의 이용 가능성을 유지하는 데 유익할 것이다.
본 발명의 목적은 페이지 장애에 기초하여 메모리 고장을 예견하고, 예견되는 메모리 고장을 관리하는 시스템 및 그것의 운영 체계 핸들링 방법에 관한 것이다.
본 발명의 실시예들에 따른 어플리케이션 및 오퍼레이팅 시스템(OS)을 실행하는 시스템의 동작 방법은, 시스템이 작동하고 있을 때 OS는 프로세서 및 메모리와 협력하여 어플리케이션을 실행시키기 위해 머신 가상화를 제공하는 단계, 가상 머신에서의 OS는 어플리케이션에 의해 처리되는 가상 어드레스들과 메모리를 위한 시스템 물리적 어드레스들 사이에서 어드레스 변환을 수행하는 단계; OS는 어플리케이션 실행 동안 페이지 장애를 유발하는 불량 페이지들을 인지하는 단계; OS는 불량 페이지들의 시스템 물리적 어드레스들에서 식별되는 로우 어드레스 비트들과 칼럼 어드레스 비트들을 관찰하고, 동일한 불량 어드레스 비트들에 나타나는 잠재적 불량 어드레스 속성을 예견하고, 잠재적 불량 어드레스 속성을 갖는 시스템 물리적 어드레스들에 대해 불량 유형을 특정하는 단계, 및 OS는 어드레스 변환을 수행할 때 특정한 불량 유형과 관련된 불량 시스템 물리적 어드레스들을 제공하지 않는 단계를 포함한다.
본 발명의 실시예들에 따른 컴퓨터 판독가능한 기록 매체는, 실행 시에 시스템으로 하여금, 시스템의 프로세서 및 메모리와 협력하여 어플리케이션을 실행하고, 어플리케이션 실행 동안 페이지 장애를 유발하는 불량 페이지들을 인지하고, 불량 페이지들의 메모리의 시스템 물리적 어드레스들에서 나타나는 잠재적 불량 어드레스 유형을 특정하고, 특정한 잠재적 불량 어드레스 유형과 관련된 불량 물리적 어드레스들이 어드레스 변환에 사용되지 않도록 하고, 그리고 특정한 잠재적 불량 어드레스 유형을 특정할 때 시스템 실행이 중단되지 않게 하는 명령어들을 저장한다.
본 발명의 실시예들에 따른 시스템은, 가상 머신들을 수행하는 프로세서, 프로세서에 결합되어 가상 머신에서 사용하는 가상 어드레스들에 대응하는 시스템 물리적 어드레스들을 제공하는 메모리, 그리고 시스템으로 하여금 프로세서와 협력하여 가상 어드레스들과 시스템 물리적 어드레스들 사이에서 어드레스 변환을 수행하고, 어플리케이션 실행 동안 페이지 장애를 유발하는 불량 페이지들을 인지하고, 불량 페이지들의 시스템 물리적 어드레스들에서 나타나는 잠재적 불량 어드레스 유형을 특정하고, 특정한 잠재적 불량 어드레스 유형과 관련된 불량 물리적 어드레스들이 어드레스 변환에 사용되지 않도록 하는 명령어들을 포함하는 저장 매체를 포함한다.
본 발명의 실시예들에 따르면, 시스템 작동 중에 페이지 장애를 유발하는 불량 페이지들과 연관된 불량 물리적 어드레스를 특정하고 어드레스 변환 시 불량 물리적 어드레스가 제공되지 않도록 하여, 시스템 작동이 중단되지 않고 계속 중으로 진행됨에 따라 시스템의 이용 가능성을 유지할 수 있다. 또한, 시스템 부팅시 불량 물리적 어드레스들을 구제함에 따라, 메모리 자원을 최대의 효율로 이용할 수 있다.
도 1은 본 발명의 실시예들에 따른 시스템을 개념적으로 설명하는 블록 다이어그램이다.
도 2는 도 1의 메모리에 대한 어드레스 변환을 수행하기 위해 참조될 수 있는 어드레스 맵핑을 예시적으로 설명하는 도면이다.
도 3은 도 2의 어드레스 맵핑 테이블을 예시적으로 보여주는 도면이다.
도 4는 도 3의 어드레스 맴핑 테이블의 페이지 테이블 엔트리(PTE)를 예시적으로 설명하는 도면이다.
도 5는 도 3의 어드레스 맵핑 테이블에 나타낸 로우성 불량 속성을 설명하는 도면이다.
도 6은 도 3의 어드레스 맵핑 테이블에 나타낸 칼럼성 불량 속성을 설명하는 도면이다.
도 7은 도 3의 어드레스 맵핑 테이블에 나타낸 블록성 불량 속성을 설명하는 도면이다.
도 8은 본 발명의 일 실시예에 따른 시스템의 런타임 OS 핸들링 방법을 설명하는 플로우챠트이다.
도 9는 도 1의 시스템 부팅시 수행되는 리페어 동작을 설명하기 위한 개념도이다.
도 10 내지 도 12는 도 1의 메모리 장치에서 수행되는 리페어 동작을 설명하는 도면들이다.
도 13은 본 발명의 일 실시예에 따른 시스템의 부팅 방법을 설명하는 플로우챠트이다.
도 1은 본 발명의 실시예들에 따라 페이지 장애에 기초하여 메모리 고장을 예상하고, 예상되는 메모리 고장을 관리하기 위해 사용될 수 있는 예시적인 시스템을 개념적으로 설명하는 블록 다이어그램이다.
도 1을 참조하면, 시스템(100)은 수백 개의 가상 머신들(VMs)을 수행하는 수십 개의 호스트 머신들 또는 서버들로 구성되는 데이터 센터일 수 있다. 시스템(100)은 도 1을 참조하여 보다 구체적으로 아래에서 설명할 다수의 하드웨어 구성이 도시되어 있으나, 이에 한정되지 않으며 다른 구성들도 가능하다. 시스템(100)은 프로세서(110), 메모리(120) 및 바이오스(BIOS: Basic Input/Output System, 130) 메모리를 포함할 수 있다.
프로세서(110)는 메모리 인터페이스(140)를 통하여 메모리(120)와 통신적으로 연결(communicatively connected) 될 수 있다. 프로세서(110)는 직렬 주변 인터페이스(Serial Peripheral Interface: SPI) 또는 로우 핀 카운트(Low Pin Count: LPC) 버스와 같은 다양한 인터페이스(150)를 통하여 BIOS 메모리(130)와 연결될 수 있다. 프로세서(110)와 연결되는 메모리(120)와 BIOS 메모리(130)는 시스템 메모리로 지칭될 수 있다.
일부 예는 "연결된(connected)" 및/또는 "결합된(coupled)" 이라는 표현을 그들의 파생어들과 함께 사용하여 설명될 수 있다. 이들 용어가 서로에 대해 꼭 동의어로서 의도된 것은 아니다. 예를 들어, "연결된" 및/또는 "결합된" 이라는 용어들을 이용한 설명은, 2개 이상의 요소가 서로 직접적으로 물리적 또는 전기적 접촉하는 것을 나타낼 수 있다. 또한, 용어 "연결" 및/또는 "결합"은 2개 이상의 요소가 서로 직접 접촉하고 있지 않지만 여전히 서로 협력하거나 상호 작용하는 것도 의미할 수 있다.
몇몇 실시예들에 따라, 시스템(100)은 예시적으로, 랩탑 컴퓨터, 데스크탑 컴퓨터, 서버 컴퓨터, 워크 스테이션, 휴대용 통신 단말기, PDA(Personal Digital Assistant), PMP(Portable Multimedia Player), 스마트 폰, 테블릿 PC, 그리고 다른 적절한 컴퓨터들 등과 같은 컴퓨팅 장치, 가상 머신 또는 그것의 가상 컴퓨팅 장치일 수 있다. 또는 시스템(100)은 그래픽스 카드와 같은 컴퓨팅 시스템에 포함된 구성 요소들 중 일부일 수 있다.
프로세서(110)는 시스템(100) 내 일반적인 컴퓨터 동작을 수행하는 기능 블록(functional block)으로서, 중앙 처리 유닛(Central Processing Unit: CPU), 디지털 신호 프로세서(Digital Signal Processor: DSP), 네트워크 프로세서, 어플리케이션 프로세서(Application Processor: AP) 또는 코드를 실행하기 위한 다른 장치와 같은 임의 타입의 프로세서 일 수 있다.
프로세서(110)는 하나 또는 그보다 많은 기계로 실행 가능한 명령들 또는 소프트웨어, 펌웨어 또는 이들의 조합의 조각들을 실행하도록 구성될 수 있다. 프로세서(110)는 임의의 숫자의 프로세서 코어를 포함할 수 있다. 예를 들어, 프로세서(110)는 단일 코어(Single-Core)를 포함하거나 듀얼 코어(Dual-Core), 쿼드 코어(Quad-Core), 헥사 코어(Hexa-Cire) 등의 멀티 코어(Multi-Core)를 포함할 수 있다. 도 1에는 하나의 프로세서(110)를 포함하는 시스템(100)이 도시되어 있으나, 실시예에 따라, 시스템(100)은 복수의 프로세서들을 포함할 수 있다.
프로세서(110)는 가상화된 환경에서 소프트웨어를 실행시킬 수 있다. 이에 따라, 시스템(100)에서 가상 머신(VM)은 어플리케이션(APP) 및 오퍼레이팅 시스템(OS)을 포함할 수 있다. 가상 머신들(VMs)은 사용자에 의해 개시 및 정지되는 그 사용 동안 동적으로 변할 수 있으므로, 프로세서(110)에서 실행될 수 있는 가상 머신들(VMs)의 수는 달라질 수 있다. OS와 같은 소프트웨어 엔티티들은 잠재적으로 프로세서(110)를 가상 머신들(VMs)을 동시에 실행할 수 있는 논리 프로세서 또는 처리 요소로서 간주한다. 예를 들면, n(n은 자연수)개의 OS는 프로세서(110)를 n개의 논리 프로세서들 또는 처리 요소들로 간주할 수 있다.
가상 머신들(VMs)에서 각각의 어플리케이션들(APPs)은 가상 어드레스 공간을 사용하는바, 이에 따라 가상 어드레스(VA, 즉 소프트웨어에 의해 사용될 수 있는 어드레스)를 사용한다. 각각의 가상 머신(VM)에서의 OS는 어떤 어플리케이션(APP)이 어떤 소정의 시점에서 소정의 메모리(120)에 억세스하는 지를 제어할 수 있고, 그리고 어플리케이션(APP)에 의해 억세스되는 어드레스들을 적어도 어느 정도 제어할 수 있다. 가상 머신(VM)에서의 OS는 가상 머신(VM)에서 가상 어드레스(VA) 대 물리적 어드레스(Physical Address: PA) 맵핑(mapping)을 수행하고 관리할 수 있다. OS에 의해 발생된 물리적 어드레스는 실제 시스템(100)의 메모리(120)에 걸쳐있는 물리적 어드레스 공간의 시스템 물리적 어드레스(System Physical Address: PA, 즉 메모리 콘트롤러(112)에 의해 사용될 수 있는 어드레스)이다. OS는 가상 어드레스(VA)와 시스템 물리적 어드레스(PA) 사이에서 어드레스 변환(Address Translation, 예컨대 어드레스 맵핑))을 수행할 수 있다.
도 1에는 시스템(100)에서의 가상 머신화 (machine virtualization)를 간략하게 도시하기 위하여 2개의 가상 머신들(160, 161)을 도시하고, 가상 머신들(160, 161) 각각은 하나 또는 그 이상의 어플리케이션(들)(APP)과 OS를 포함한다. 실시예에 따라, 다수개의 가상 머신들(VMs)이 실행될 수 있고, 프로세서(110)는 하드웨어를 이용한 하드웨어 가속화와 소프트웨어의 결합을 통해 시간 및 메모리 풋프린트에 있어서 많은 어플리케이션들(APPs) 및/또는 트랜잭션들을 실행 및 구현할 수 있다. 이하, 설명의 편의를 위하여, 시스템(100)은 제1 가상 머신(160)을 기반으로 하여 메모리(120)를 억세스하는 어플리케이션(170)과 OS(180)에 대하여 설명될 것이다.
BIOS 메모리(130)는 시스템(100)을 부팅하기 위한 BIOS 코드를 저장할 수 있다. BIOS 메모리(130)는 비휘발성 메모리 장치로 구현될 수 있다. 비휘발성 메모리 장치는 EEPROM(Electrically Erasable Programmable Read-Only Memory), 플래시 메모리(Flash Memory), RRAM(Resistive RAM), MRAM(Magnetic RAM), PRAM(Phase change RAM), FRAM(Ferroelectric RAM), NFGM(Nano Floating Gate Memory), PoRAM(Polymer RAM) 또는 이와 유사한 메모리로 구현될 수 있다.
BIOS 코드는 시스템(100) 보드, 메모리(120), 디스크 드라이브, 입출력(I/O) 디바이스들 등과 같은 시스템(100)의 하드웨어들을 감지하고, 이들이 정상적으로 동작하는지를 확인하기 위한 POST(Power On Self Test) 코드 및/또는 POST 코드의 일부이다. BIOS 코드는 프로세서(110)가 메모리(120)와 정상적으로 상호 동작(interoperate)할 수 있도록 구성되는 다양한 알고리즘들을 포함할 수 있다.
메모리 인터페이스(140)는, 도면의 간결성을 위하여, 프로세서(110)와 메모리(120) 사이에 하나의 신호 라인으로 연결되는 것으로 도시되고 있으나, 실제로는 복수의 신호 라인들을 통해 연결될 수 있다. 메모리 인터페이스(140)는 메모리 콘트롤러(112)와 메모리(120)를 연결하기 위한 커넥터들을 포함하고, 커넥터들은 핀들, 볼들, 신호 라인들, 또는 다른 하드웨어 컴포넌트들로서 구현될 수 있다. 예를 들어, 클럭, 커맨드, 어드레스, 데이터 등이 메모리 인터페이스(140)를 통해 메모리 콘트롤러(112)와 메모리(120) 사이에서 송수신될 수 있다. 메모리 인터페이스(140)는, 복수의 신호선들을 포함하는 하나의 채널로 구현될 수 있고, 또는 복수의 채널들로 구현될 수 있다. 또한, 각 채널에는 하나 이상의 메모리(120)가 연결될 수 있다.
프로세서(110)는 메모리(120)로/로부터 데이터 송수신을 제어하는 메모리 콘트롤러(112)를 포함할 수 있다. 메모리 콘트롤러(112)는 프로세서(110)의 메모리 리퀘스트에 따라 메모리(120)를 억세스할 수 있으며, 메모리 억세스를 위해 시스템 물리적 어드레스가 제공될 수 있다. 메모리 콘트롤러(112)는 메모리 셀에 대응하는 로우 및 칼럼을 선택하는 것, 메모리 셀에 데이터를 기입하는 것 또는 기입된 데이터를 독출하는 것과 같은 메모리 인터페이싱을 위한 메모리 물리 계층 인터페이스(Memory Physical Layer Interface) 즉, 메모리 PHY를 포함할 수 있다. 위에서 예시된 기능들을 수행하는 메모리 콘트롤러(112)의 실제 물리적 구현은 많은 형태를 취할 수 있다. 예를 들어, 메모리 콘트롤러(112)는 하나 이상의 하드웨어 구성 요소들 (예컨대, 아날로그 회로, 논리 회로). 소프트웨어 및/또는 펌웨어의 프로그램 코드로 구현될 수 있다. 메모리 콘트롤러(112)는 프로세서(들)(110)에 의한 메모리(120) 억세스가 일관되게 하기 위해 프로세서(들)(110)에 공통적으로 통합될 수 있다.
메모리(120)는 시스템(100)의 동작에 이용되는 데이터를 기록하거나 로딩할 수 있다. 메모리(120)는 프로세서(110)에 의해 처리된 또는 처리될 데이터를 저장하거나 독출할 수 있다. 메모리(120)는 SRAM(Static Random Access Memory), DRAM(Dynamic Random Access Memory) 등과 같은 휘발성 메모리 및/또는 플래시 메모리, RRAM, MRAM, PRAM, FRAM 등과 같은 불휘발성 메모리를 포함할 수 있다.
메모리(120)는 데이터를 저장하기 위한 메모리 셀들을 포함할 수 있다. 메모리 셀은 어드레스로 불리는 값에 기초하여 식별되고 지시될 수 있다. 쓰기 데이터는 어드레스에 의해 지시되는 메모리 셀에 기록될 수 있고, 읽기 데이터는 어드레스에 의해 지시되는 메모리 셀로부터 로딩될 수 있다. 본 개시에서, 메모리(120) 내 하나의 메모리 영역은 복수의 어드레스들에 의해 각각 지시되는 복수의 메모리 셀들이 배열된 메모리 셀 어레이를 포함할 수 있다.
메모리(120)는 메모리 영역의 메모리 셀이 불량일 경우, 불량 셀(fail cell)을 리던던시 셀로 리페어하도록 구성될 수 있다. 메모리(120)는 계속적인 사용으로 인해 추가적으로 발생되는 불량 셀들을 리던던시 셀들로 리페어하는 포스트 패키지 리페어(Post Package Repair: PPR)가 가능하다.
프로세서(110)는 어플리케이션(170) 실행 동안 메모리(120)로부터 독출되고 메모리(120) 내에 저장되는 데이터 아이템들을 교환하기 위하여, 메모리(120)로 어드레스를 제공할 수 있다. 메모리(120)는 프로세서(110)로부터 수신되는 요청 (예컨대, 커맨드 및 어드레스)에 기초하여 데이터를 저장하거나 독출할 수 있다.
한편, 어플리케이션(170)에 의해 처리되는 어드레스는 가상 어드레스(VA)로 불릴 수 있고, 메모리(120)를 위한 어드레스는 시스템 물리적 어드레스(PA)로 불릴 수 있다. OS(180)는 어플리케이션(APP)에 의해 처리되는 가상 어드레스(VA)와 메모리(120)를 위한 시스템 물리적 어드레스(PA) 사이에서 어드레스 변환을 수행할 수 있다.
도 2는 도 1의 메모리(120)에 대한 어드레스 변환을 수행하기 위해 참조될 수 있는 어드레스 맵핑을 예시적으로 설명하는 도면이다.
도 1 및 도 2를 참조하면, 메모리(120)는 어드레스 제로(0)부터 그 상위까지의 시스템 물리적 어드레스(PA) 범위를 갖는다. 어플리케이션(170)은 메모리(120)의 상위로부터 개시되는 가상 어드레스(VA) 범위를 가질 수 있다. 가상 어드레스(VA)의 각 어드레스 Pa는 메모리(120)의 시스템 물리적 어드레스(PA)의 어드레스 (또는 어드레스 공간) Pg에 맵핑되는 엔트리를 갖는다. OS(180)는 어플리케이션(170)에 의해 메모리 억세스 요청된 페이지를 메모리(120)의 페이지에 할당할 수 있다. 이 때, 가상 어드레스 Pa로부터 대응하는 시스템 물리적 어드레스 Pg까지 지정되는 참조는 어드레스 맵핑 테이블(200)에 페이지 테이블 엔트리(Page Table Entry: PTE)로서 저장될 수 있다. 페이지는 어드레스 변환의 단위일 수 있다. 즉, 가상 페이지에서의 각각의 어드레스는 대응하는 물리적 페이지로 변환될 수 있다. 페이지들은 4 킬로바이트(kilobytes)로부터 최대 메가바이트(Megabytes)까지 혹은 심지어 기가바이트(Gigabytes)까지 다양한 크기를 가질 수 있다.
도 2에 도시된 어드레스 위치 및 크기는 예로서 제공되며, 반드시 실제의 메모리 어드레스는 아니라는 것을 밝혀 둔다. 또한, 도 2에 도시된 예시적인 메모리는 본 개시 내용에 대한 제한을 나타내거나 암시하지 않는다.
도 3은 도 2의 어드레스 맵핑 테이블(200)을 예시적으로 보여주는 도면이다.
도 2 및 도 3을 참조하면, OS(180)는 어드레스 맵핑 테이블(200)을 관리할 수 있다. 어드레스 맵핑 테이블(200)의 페이지 테이블 엔트리들(PTE)은 가상 어드레스들(VA)과 시스템 물리적 어드레스(PA) 사이의 맵핑 관계에 관한 정보를 포함할 수 있다. 예시적으로, 어드레스 맵핑 테이블(200)은 룩-업 테이블의 유형으로 구현될 수 있다. OS(180)는 어드레스 맵핑 테이블(200)의 페이지 테이블 엔트리(PTE)를 참조하여 가상 어드레스들(VA)를 시스템 물리적 어드레스(PA)로 변환할 수 있다.
예시적으로, Va1 가상 어드레스는 Pa1 시스템 물리적 어드레스와 대응할 수 있다. OS(180)가 어플리케이션(170)으로부터 Va1 가상 어드레스를 수신한 경우, OS(180)는 Va1 가상 어드레스를 Pa1 시스템 물리적 어드레스로 맵핑할 수 있다. OS(180)는 Va1 가상 어드레스와 함께 어플리케이션(170)으로부터 수신된 요청을, Pa1 시스템 물리적 어드레스에 의해 지시되는 메모리 셀과 연관하여 처리할 수 있다.
이와 유사하게, 어드레스 맵핑 테이블(200)의 대응 정보에 따라, OS(180)는 Va2, Va3 가상 어드레스들을 Pa2, Pa3 시스템 물리적 어드레스들로 맵핑하고, Vb1, Vb2, Vb3 가상 어드레스들은 Pb1, Pb2, Pb3 시스템 물리적 어드레스들로 맵핑하고, Vc1, Vc2, Vc3, Vc4, Vc5 가상 어드레스들은 Pc1, Pc2, Pc3, Pc4, Pc5 시스템 물리적 어드레스들로 맵핑할 수 있다. OS(180)는 가상 어드레스(Va2, Va3, Vb1, Vb2, Vb3, Vc1, Vc2, Vc3)에 대응하는 시스템 물리적 어드레스(Pa2, Pa3, Pb1, Pb2, Pb3, Pc1, Pc2, Pc3, Pc4, Pc5)에 의해 지시되는 메모리 셀과 연관하여 어플리케이션(170)의 요청을 처리할 수 있다.
도 4는 도 3의 어드레스 맵핑 테이블(200)의 페이지 테이블 엔트리(PTE)를 예시적으로 설명하는 도면이다.
도 4를 참조하면, 어드레스 맵핑 테이블(200)의 페이지 테이블 엔트리(PTE)는 가상 어드레스(VA)를 시스템 물리적 어드레스(PA)로 변환하기 위해 사용될 수 있는 변환 데이터의 테이블일 수 있다. 변환 테이블은 임의의 방식으로 변환 데이터를 저장할 수 있다. 예를 들어, 변환 레벨에 따라, 가상 어드레스(VA) 비트들 혹은 시스템 물리적 어드레스(PA)의 다양한 서브 셋트들이 테이블의 레벨들을 인덱싱(indexing)하기 위해 사용될 수 있다. 그리고, 각각의 레벨은 변환의 끝일 수 있거나(즉, 변환을 위해 실제 페이지 번호를 저장하는 것), 혹은 (어드레스 비트들의 또 다른 세트에 의해 인덱싱된) 계층적 방식으로 또 다른 테이블을 가리킬 수 있다.
페이지 테이블 엔트리(PTE)는 계층적 방식으로 다른 페이지 테이블들에 대한 포인터를 포함할 수 있다. 페이지 테이블 엔트리(PTE)는 엔트리에 맵핑되는 요청들을 위해 변환이 시작돼야 하는 페이지 테이블 계층 구조에서의 레벨, 예를 들어, 페이지 맵 레벨 2, 3 또는 4 를 표시할 수 있다. 이에 따라, 페이지 맵 레벨 2, 3 또는 4 테이블의 페이지 테이블 엔트리(PTE)는 임의 개수의 비트 엔트리를 포함할 수 있다.
도 4에 도시된 페이지 테이블 엔트리(PTE)는 변환의 끝인 1-레벨 변환 테이블로서, 어드레스 변환에 관한 필드들이 제공된다. 다른 실시예들에서, 다른 목적들(예, 변환 레벨 특정, 테이블들의 깊이, 변환 무효/유효 여부 등을 나타내는 것)을 위한 단일 비트 필드 및/또는 복수 비트 필드들이 제공될 수 있음에 유의해야 한다. 본 실시예에서, 페이지 테이블 엔트리(PTE)는 가상 페이지 어드레스 비트들을 실제 시스템 물리적 페이지 어드레스 비트들로 변환에 관한 것으로, 예컨대, 64 비트 엔트리이다.
페이지 테이블 엔트리(PTE)는 가상 어드레스(VA) 필드와 시스템 물리적 어드레스(PA) 필드를 포함할 수 있다. 가상 어드레스(VA) 필드는 어플리케이션(170)에 의해 사용될 가상 어드레스 공간을 크게 할 수 있도록 구성되고, 시스템 물리적 어드레스(PA) 필드는 가상 어드레스(VA)에 대응하는 이용가능한 물리적 메모리(120)의 어드레스를 나타낸다. 예시적으로, 시스템 물리적 어드레스(PA) 필드는 PTE[11:0] 비트들로 구성되고, 가상 어드레스(VA) 필드는 PTE[63:12] 비트들로 구성될 수 있다. 시스템 물리적 어드레스(PA) 필드는 로우 어드레스(R[5:0]) 비트들과 칼럼 어드레스(C[5:0]) 비트들로 구성될 수 있다.
도 5는 도 3의 어드레스 맵핑 테이블에 나타낸 로우성 불량 속성을 설명하는 도면이다.
도 5를 참조하면, 프로세서(110) 상에서 실행되는 어플리케이션(170)이 실행되고 있는 가상 어드레스들(Va1, Va2, Va3)에 따라, OS(180)는 메모리(120)에 억세스하기 위한 그 가상 어드레스들(Va1, Va2, Va3)에 대응하는 시스템 물리적 어드레스(Pa1, Pa2, Pa3)를 제공할 수 있다. 예시적으로, Va1 가상 어드레스에 대응하는 Pa1 시스템 물리적 어드레스는 로우 어드레스(R[5:0]) 011000 비트들과 칼럼 어드레스(C[5:0]) 000001 비트들로 제공될 수 있다. 프로세서(110)는 메모리 콘트롤러(112)를 통하여 Pa1 시스템 물리적 어드레스의 로우 어드레스(R[5:0]) 011000 비트들과 칼럼 어드레스(C[5:0]) 000001 비트들에 의해 지시되는 메모리 셀을 억세스하여, 어플리케이션(170)을 실행할 수 있다.
이와 유사하게, Va2 가상 어드레스에 대응하는 Pa2 시스템 물리적 어드레스는 로우 어드레스(R[5:0]) 011000 비트들과 칼럼 어드레스(C[5:0]) 000010 비트들로 제공되고, Va3 가상 어드레스에 대응하는 Pa3 시스템 물리적 어드레스는 로우 어드레스(R[5:0]) 011000 비트들과 칼럼 어드레스(C[5:0]) 000100 비트들로 제공될 수 있다. 프로세서(110)는 메모리 콘트롤러(112)를 통하여 Pa2 시스템 물리적 어드레스의 로우 어드레스(R[5:0]) 011000 비트들과 칼럼 어드레스(C[5:0]) 000010 비트들에 의해 지시되는 메모리 셀과 Pa3 시스템 물리적 어드레스의 로우 어드레스(R[5:0]) 011000 비트들과 칼럼 어드레스(C[5:0]) 000100 비트들에 의해 지시되는 메모리 셀을 억세스하여, 어플리케이션(170)을 실행할 수 있다.
그런데, 메모리(120)의 Pa2 시스템 물리적 어드레스와 연계된 실행이 올바르게 동작하지 못할 수 있다. 또한, Pa3 시스템 물리적 어드레스와 연계된 실행이 올바르게 동작하지 못할 수 있다. 즉, 페이지 장애가 발생할 수 있다. 다수의 어플리케이션(170) 실행 경로들 중에서 예를 들어, 메모리(120)에 대한 실행 경로에 오류가 발생할 수 있다. 구체적으로, Pa2, Pa3 시스템 물리적 어드레스들에 메모리 에러들이 발생할 수 있다. 이러한 메모리 에러들의 주요 원인들 중 하나는 Pa2, Pa3 시스템 물리적 어드레스들에 어드레싱되는 메모리 셀들이 불량인 경우, 즉, 하드웨어 예외(hardware exception) 조건이 검출되는 경우이다.
일반적으로, 이러한 예외 이벤트들이 빈번히 발생되면, 계속중(pending)인 시스템(100)의 중단을 발생시키고 시스템(100) 재개 동작들을 시도할 수 있다. 이러한 솔루션은 시스템(100)의 가속화가 실현되지 못한다. OS(180)는 시스템(100)을 중단할 필요 없이 예외 이벤트들을 처리하기 위한 제어를 수행할 수 있다. OS(180)는 프로세서(110)에서의 하드웨어 지원과 OS 코드를 결합하여, 예외 이벤트들의 발생시에도 시스템(100) 작동이 지속될 수 있다. 아래에 더 자세히 설명되는 바와 같이, 이러한 기능을 위한 OS(180)의 메커니즘이 제공될 수 있다.
OS(180)는 Pa2, Pa3 시스템 물리적 어드레스들의 불량 페이지들을 인지(aware) 할 수 있다. OS(180)는 Pa2, Pa3 시스템 물리적 어드레스들에서 식별되는 로우 어드레스(R[5:0]) 비트들과 칼럼 어드레스(C[5:0]) 비트들을 관찰(observe)하여, Pa2, Pa3 시스템 물리적 어드레스들의 로우 어드레스(R[5:0]) 011000 비트들이 동일하다는 것을 알 수 있다. OS(180)는 Pa2, Pa3 시스템 물리적 어드레스들에 어드레싱되는 메모리 셀들이 동일한 로우 어드레스를 갖기 때문에, 이 로우 어드레스에 억세스되는 메모리 셀들에 불량이 존재할 가능성이 높다고 예상할 수 있다. 이에 따라, OS(180)는 메모리(120)의 메모리 영역 내 로우 어드레스(R[5:0]) 011000 비트들에 억세스되는 메모리 셀들을 잠재적 로우성 불량으로 예견(predict) 또는 간주할 수 있다. 이하, 로우 어드레스(R[5:0]) 011000 비트들은 불량 로우 어드레스(FRA)로 지칭될 수 있다.
메모리(120)의 Pa1 시스템 물리적 어드레스의 로우 어드레스(R[5:0]) 011000 비트들에 억세스되는 메모리 셀들은 불량이 아니지만, OS(180)는 로우 어드레스(R[5:0]) 011000 비트들에 억세스되는 메모리 셀들을 로우성 불량으로 특정하는 특권(privilege)을 부여받을(given) 수 있다. OS(180)는 프로세서(110) 상에서 실행되는 어플리케이션(170)이 실행되고 있는 가상 어드레스(VA)를 대응하는 시스템 물리적 어드레스(PA)를 변환할 때, 로우성 불량인 메모리 셀들이 선택되지 않도록 하기 위하여 시스템 물리적 어드레스(PA)에 불량 로우 어드레스(FRA)를 제공하지 않을 수 있다. 이와 아울러, OS(180)는 불량 로우 어드레스(FRA)를 바이오스 메모리(130, 도 1)에 저장할 수 있다.
도 6은 도 3의 어드레스 맵핑 테이블에 나타낸 칼럼성 불량 속성을 설명하는 도면이다.
도 6을 참조하면, 프로세서(110) 상에서 실행되는 어플리케이션(170)이 실행되고 있는 가상 어드레스들(Vb1, Vb2, Vb3)에 따라, OS(180)는 메모리(120)에 억세스하기 위한 그 가상 어드레스들(Vb1, Vb2, Vb3)에 대응하는 시스템 물리적 어드레스(Pb1, Pb2, Pb3)를 제공할 수 있다. 예시적으로, Vb1 가상 어드레스에 대응하는 Pb1 시스템 물리적 어드레스는 로우 어드레스(R[5:0]) 100000 비트들과 칼럼 어드레스(C[5:0]) 000011 비트들로 제공될 수 있다. 프로세서(110)는 메모리 콘트롤러(112)를 통하여 Pb1 시스템 물리적 어드레스의 로우 어드레스(R[5:0]) 100000 비트들과 칼럼 어드레스(C[5:0]) 000011 비트들에 의해 지시되는 메모리 셀을 억세스하여, 어플리케이션(170)을 실행할 수 있다.
이와 유사하게, Vb2 가상 어드레스에 대응하는 Pb2 시스템 물리적 어드레스는 로우 어드레스(R[5:0]) 010000 비트들과 칼럼 어드레스(C[5:0]) 000011 비트들로 제공되고, Vb3 가상 어드레스에 대응하는 Pb3 시스템 물리적 어드레스는 로우 어드레스(R[5:0]) 001000 비트들과 칼럼 어드레스(C[5:0]) 000011 비트들로 제공될 수 있다. 프로세서(110)는 메모리 콘트롤러(112)를 통하여 Pb2 시스템 물리적 어드레스의 로우 어드레스(R[5:0]) 010000 비트들과 칼럼 어드레스(C[5:0]) 000011 비트들에 의해 지시되는 메모리 셀과 Pb3 시스템 물리적 어드레스의 로우 어드레스(R[5:0]) 001000 비트들과 칼럼 어드레스(C[5:0]) 000011 비트들에 의해 지시되는 메모리 셀을 억세스하여, 어플리케이션(170)을 실행할 수 있다.
그런데, 메모리(120)의 Pb2 시스템 물리적 어드레스와 연계된 실행과 Pb3 시스템 물리적 어드레스와 연계된 실행이 올바르게 동작하지 못할 수 있다. 어플리케이션(170) 실행 동안, Pb2, Pb3 시스템 물리적 어드레스들에 메모리 에러들이 발생할 수 있다. OS(180)는 Pb2, Pb3 시스템 물리적 어드레스들의 불량 페이지들을 인지할 수 있다. OS(180)는 불량 페이지들의 Pb2, Pb3 시스템 물리적 어드레스들에서 식별되는 로우 어드레스(R[5:0]) 비트들과 칼럼 어드레스(C[5:0]) 비트들을 관찰할 수 있다. OS(180)는 Pb2, Pb3 시스템 물리적 어드레스들의 칼럼 어드레스(C[5:0]) 000011 비트들이 동일하다는 것을 알 수 있다. OS(180)는 Pb2, Pb3 시스템 물리적 어드레스들에 어드레싱되는 메모리 셀들이 동일한 칼럼 어드레스를 갖기 때문에, 이 칼럼 어드레스에 억세스되는 메모리 셀들에 불량이 존재할 가능성이 높다고 예상할 수 있다. 이에 따라, OS(180)는 메모리(120)의 메모리 영역 내 칼럼 어드레스(C[5:0]) 000011 비트들에 억세스되는 메모리 셀들을 잠재적 칼럼성 불량으로 예견할 수 있다. 이하, 칼럼 어드레스(C[5:0]) 000011 비트들은 불량 칼럼 어드레스(FCA)로 지칭될 수 있다.
메모리(120)의 Pb1 시스템 물리적 어드레스의 칼럼 어드레스(C[5:0]) 000011 비트들에 억세스되는 메모리 셀들은 불량이 아니지만, OS(180)는 칼럼 어드레스(C[5:0]) 000011 비트들에 억세스되는 메모리 셀들을 칼럼성 불량으로 특정하는 특권을 부여받을 수 있다. OS(180)는 프로세서(110) 상에서 실행되는 어플리케이션(170)이 실행되고 있는 가상 어드레스(VA)에 대응하는 시스템 물리적 어드레스(PA)를 제공할 때, 칼럼성 불량인 메모리 셀들이 선택되지 않도록 하기 위하여 시스템 물리적 어드레스(PA)에 불량 칼럼 어드레스(FCA)를 제공하지 않을 수 있다. 이와 아울러, OS(180)는 불량 칼럼 어드레스(FCA)를 바이오스 메모리(130, 도 1)에 저장할 수 있다.
도 5 및 도 6에 예시된 바와 같이, OS(180)는 2개의 불량 페이지들을 참조하여 OS(180)의 로우성 불량 또는 칼럼성 불량을 핸들링하는 특권을 설명하고 있으나, 이러한 특권은 불량 페이지들의 개수가 기준값을 초과하는 경우에 부여될 수 있다. 본 실시예들에서 기준값은 n(n은 2 이상의 자연수) 개로 설정될 수 있다. 다른 실시예들에 따라, 기준 값은 다르게 설정되고, 또한 변경될 수 있다.
도 7은 도 3의 어드레스 맵핑 테이블에 나타낸 블록성 불량 속성을 설명하는 도면이다.
도 7을 참조하면, 프로세서(110) 상에서 실행되는 어플리케이션(170)이 실행되고 있는 가상 어드레스들(Vc, Vc2, Vc3, Vc4, Vc5)에 따라, OS(180)는 메모리(120)에 억세스하기 위한 그 가상 어드레스들(Vc1, Vc2, Vc3, Vc4, Vc5)에 대응하는 시스템 물리적 어드레스(Pc1, Pc2, Pc3, Pc4, Pc5)를 제공할 수 있다. 예시적으로, Vc1 가상 어드레스에 대응하는 Pc1 시스템 물리적 어드레스는 로우 어드레스(R[5:0]) 110001 비트들과 칼럼 어드레스(C[5:0]) 111000 비트들로 제공될 수 있다. Vc2 가상 어드레스에 대응하는 Pc2 시스템 물리적 어드레스는 로우 어드레스(R[5:0]) 110010 비트들과 칼럼 어드레스(C[5:0]) 111010 비트들로 제공되고, Vc3 가상 어드레스에 대응하는 Pc3 시스템 물리적 어드레스는 로우 어드레스(R[5:0]) 110100 비트들과 칼럼 어드레스(C[5:0]) 110000 비트들로 제공되고, Vc4 가상 어드레스에 대응하는 Pc4 시스템 물리적 어드레스는 로우 어드레스(R[5:0]) 111000 비트들과 칼럼 어드레스(C[5:0]) 110010 비트들로 제공되고, Vc5 가상 어드레스에 대응하는 Pc5 시스템 물리적 어드레스는 로우 어드레스(R[5:0]) 111111 비트들과 칼럼 어드레스(C[5:0]) 110100 비트들로 제공될 수 있다. 프로세서(110)는 메모리 콘트롤러(112)를 통하여 Pc1 내지 Pc5 시스템 물리적 어드레스에 의해 지시되는 메모리 셀들을 억세스하여, 어플리케이션(170)을 실행할 수 있다.
그런데, 메모리(120)의 Pc1 내지 Pc5 시스템 물리적 어드레스들과 연계된 실행이 올바르게 동작하지 못할 수 있다. 어플리케이션(170) 실행 동안, Pc1 내지 Pc5 시스템 물리적 어드레스들에 메모리 에러들이 발생할 수 있다. OS(180)는 Pc1 내지 Pc5 시스템 물리적 어드레스들의 불량 페이지들을 인지할 수 있다. OS(180)는 불량 페이지들의 Pc1 내지 Pc5 시스템 물리적 어드레스들에서 식별되는 로우 어드레스(R[5:0]) 비트들과 칼럼 어드레스(C[5:0]) 비트들을 관찰할 수 있다. OS(180)는 Pc1 내지 Pc5 시스템 물리적 어드레스들의 로우 어드레스(R[5:0])의 상위 2 비트들, 즉 R[5:4] 11 비트가 동일하고, 칼럼 어드레스(C[5:0])의 상위 2 비트들, 즉 C[5:4] 11 비트가 동일하다는 것을 알 수 있다.
일반적으로, 메모리(120)은 메모리 셀을 억세스하기 위해 로우 디코더를 이용하여 로우 어드레스 비트들을 순차적으로 디코딩하고 디코딩된 로우 어드레스 신호를 생성하고, 디코딩된 로우 어드레스 신호에 대응하는 워드라인을 활성화시키도록 구성될 수 있다. 여기에서, 디코딩된 로우 어드레스 신호 라인들은 메모리 영역의 하단 또는 상단으로부터 로우 방향으로 배열될 수 있는데, 로우 어드레스의 상위 비트들은 메모리 영역의 중앙을 기준으로 상부 또는 하부 쪽의 특정 영역을 어드레싱하는 신호로 작용할 수 있다. 유사하게, 메모리(120)는 칼럼 디코더를 이용하여 칼럼 어드레스 비트들을 순차적으로 디코딩하고 디코딩된 칼럼 어드레스 신호를 생성하고, 디코딩된 칼럼 어드레스 신호에 대응하는 비트라인들을 활성화시키도록 구성된다. 여기에서, 디코딩된 칼럼 어드레스 신호 라인들은 메모리 영역의 좌측 또는 우측으로부터 칼럼 방향으로 배열될 수 있는데, 칼럼 어드레스의 상위 비트들은 메모리 영역의 중앙을 기준으로 좌측 또는 우측의 특정 영역을 어드레싱하는 신호로 작용할 수 있다.
OS(180)는 Pc1 내지 Pc5 시스템 물리적 어드레스들에 어드레싱되는 메모리 셀들이 동일한 상위 로우 어드레스 비트들 및 상위 칼럼 어드레스 비트들을 갖기 때문에, 이 동일한 상위 로우 어드레스 비트들 및 상위 칼럼 어드레스 비트들에 억세스되는 메모리 셀들에 불량이 존재할 수 있다고 예상할 수 있다. 이에 따라, OS(180)는 메모리(120)의 메모리 영역 내 상위 로우 어드레스 R[5:4] 11 비트들 및 상위 칼럼 어드레스 C[5:4] 11 비트에 억세스되는 메모리 셀들을 잠재적 블록성 불량으로 예견할 수 있다. 이하, 상위 로우 어드레스 R[5:4] 11 비트들 및 상위 칼럼 어드레스 C[5:4] 11 비트들은 불량 블록 어드레스(FBA)로 지칭될 수 있다.
OS(180)는 상위 로우 어드레스 R[5:4] 11 비트들 및 상위 칼럼 어드레스 C[5:4] 11 비트들에 억세스되는 메모리 셀들을 블록성 불량으로 특정하는 특권을 부여받을 수 있다. OS(180)는 프로세서(110) 상에서 실행되는 어플리케이션(170)이 실행되고 있는 가상 어드레스(VA)에 대응하는 시스템 물리적 어드레스(PA)를 제공할 때, 블록성 불량인 메모리 셀들이 선택되지 않도록 하기 위하여 시스템 물리적 어드레스(PA)에 불량 블록 어드레스(FBA)를 제공하지 않을 수 있다. 이와 아울러, OS(180)는 불량 블록 어드레스(FBA)를 바이오스 메모리(130, 도 1)에 저장할 수 있다.
도 7에 예시된 바와 같이, OS(180)는 5개의 불량 페이지들을 참조하여 OS(180)의 블록성 불량을 핸들링하는 특권을 설명하고 있으나, 이러한 특권은 불량 페이지들의 개수가 기준값을 초과하는 경우에 부여될 수 있다. 본 실시예에서 기준값은 n(n은 5 이상의 자연수) 개로 설정될 수 있다. 다른 실시예들에 따라, 기준 값은 다른 값으로 설정되고, 또한 변경될 수 있다.
도 8은 본 발명의 일 실시예에 따른 시스템(100)의 런타임 OS 핸들링 방법을 설명하는 플로우챠트이다.
도 1, 도 2 및 도 8을 참조하면, 시스템(100)이 작동하고 있을 때, OS(180)는 프로세서(110)와 협력하여 어플리케이션(170)을 실행시키기 위해 머신 가상화를 제공하며 실행될 수 있다(S810). 가상 머신(VM)에서의 OS(180)는 어플리케이션(170)에 의해 처리되는 가상 어드레스들(VA)과 메모리(120)를 위한 시스템 물리적 어드레스들(PA) 사이에서 어드레스 변환을 수행할 수 있다. OS(180)는 어플리케이션(170) 실행 동안, 시스템 물리적 어드레스들(PA)의 불량 페이지들을 인지할 수 있다(S812). 예를 들어, 페이지 장애가 발생할 수 있다.
OS(180)는 불량 페이지들을 카운트하고, 불량 페이지들의 개수가 기준 값을 초과하는지 여부를 판단할 수 있다(S813). 판단 결과, 초과하는 경우, OS(180)는 불량 페이지들의 시스템 물리적 어드레스들(PA)에서 식별되는 로우 어드레스(RA) 비트들과 칼럼 어드레스(CA) 비트들을 관찰할 수 있다(S814). 판단 결과, 초과하지 않는 경우, OS(180)는 S812 단계로 이동한다.
OS(180)는 불량 페이지들의 시스템 물리적 어드레스들(PA)에서 동일한 불량 어드레스 비트들에 나타나는 잠재적 불량 어드레스 속성을 예견할 수 있다(S815). OS(180)는 잠재적 불량 어드레스 속성을 갖는 시스템 물리적 어드레스들(PA)에 대해 로우성 불량, 칼럼성 불량 또는 블록성 불량으로 특정할 수 있다. 이러한 특정에 의해, OS(180)는 가상 어드레스들(VA)과 메모리(120)를 위한 시스템 물리적 어드레스들(PA) 사이에서 어드레스 변환을 수행할 때, 특정한 불량 유형(예, 로우성 불량, 칼럼성 불량 또는 블록성 불량)과 관련된 불량 시스템 물리적 어드레스들을 제공하지 않을 수 있다(S816). 그리고, OS(180)는 불량 시스템 물리적 어드레스들을 BIOS 메모리(130)에 저장할 수 있다.
이러한 OS(180)의 페이지 장애 핸들링 동안, 시스템(100) 작동이 중단되지 않고 계속 중으로 진행되므로 S810 단계로 이동한다. 이에 따라 시스템(100)의 이용 가능성을 유지할 수 있다.
도 9는 도 1의 시스템(100) 부팅시 수행되는 리페어 동작을 설명하기 위한 개념도이다.
도 9를 참조하면, BIOS 메모리(130)는 시스템(100)을 부팅하기 위한 BIOS 코드를 저장할 수 있다. 또한, BIOS 메모리(130)는 OS(180)에서 불량 메모리 관리 특권에 기초하여 특정된 불량 어드레스들, 즉 불량 로우 어드레스(FRA), 불량 칼럼 어드레스(FCA) 및/또는 불량 블록 어드레스(FBA)를 저장할 수 있다. 불량 로우 어드레스(FRA), 불량 칼럼 어드레스(FCA) 및/또는 불량 블록 어드레스(FBA)는 비휘발성 메모리 유닛(930)에 저장될 수 있다. 비휘발성 메모리 유닛(930)은 BIOS 메모리(130)를 구성하는 비휘발성 메모리 장치의 일부분이다.
시스템(100)은 파워-업에 따라 프로세서(110)에 의해 BIOS 메모리(130)의 BIOS 코드 일부를 실행하는 부팅 동작들을 실행할 수 있다. 프로세서(110)에 의해 BIOS 코드를 실행하는 부팅 동작들 중에는 메모리(120)에 대한 메모리 트레이닝이 포함될 수 있다. 메모리 트레이닝은 메모리 콘트롤러(112)가 주체가 되어 메모리(120)의 코어 파라미터들 및/또는 주변 회로 파라미터들에 대한 최적의 파라미터들을 결정하기 위해 수행될 수 있다. 이하, 설명의 편의를 위하여 메모리(120)는 DRAM(120)으로 통칭한다. DRAM(120)은 SDRAM (Synchronous DRAM), DDR SDRAM (Double Data Rate SDRAM), LPDDR SDRAM (Low Power Double Data Rate SDRAM), GDDR SDRAM (Graphics Double Data Rate SDRAM), DDR2 SDRAM, DDR3 SDRAM, DDR4 SDRAM, DDR5 SDRAM, Wide I/O DRAM, HBM(High Bandwidth Memory), HMC(Hybrid Memory Cube) 중 어느 하나일 수 있다.
메모리 콘트롤러(112)는 시스템(100) 부팅 시, 레지스터 제어 워드(Register Control Word: RCW)에 설정된 알고리즘에 따라 DRAM(120)을 초기화시키고, DRAM(120)에 대한 메모리 트레이닝을 수행할 수 있다. 메모리 트레이닝은 메모리 콘트롤러(112)와 DRAM(120) 사이의 효율적인 통신에 요구되는 신호들, 주파수, 타이밍, 구동, 상세 동작 파라미터 및 기능성(functionality)을 위해 제공되는 메모리 PHY를 이용하여 수행될 수 있다. 메모리 콘트롤러(112)는 DRAM(120) 메모리 트레이닝 후, BIOS 메모리(130)의 비휘발성 메모리 유닛(930)에 저장된 불량 로우 어드레스(FRA), 불량 칼럼 어드레스(FCA) 및/또는 불량 블록 어드레스(FBA)를 DRAM(120)에 제공할 수 있다.
DRAM(120)은 메모리 셀 어레이에서 불량 특성을 보이는 불량 셀들을 리페어할 수 있다. 메모리 셀 어레이는 복수의 워드라인들과 복수의 비트라인들, 그리고 워드라인들과 비트라인들이 교차하는 지점에 형성되는 복수의 메모리 셀들을 포함할 수 있다. DRAM(120)은 불량 셀들을 리던던시 셀들로 리페어하도록 구성되는 리페어 제어 회로(920)를 포함할 수 있다. 리페어 제어 회로(920)는 DRAM(120)의 반도체 제조 공정 후 테스트를 통해 검출되는 불량 셀들을 리페어를 수행하여 구제할 수 있다. 또한, 리페어 제어 회로(920)는 DRAM(120)의 계속적인 사용 중 발생되는 불량 셀들을 리던던시 셀들로 리페어하는 포스트 패키지 리페어(PPR)를 수행할 수 있다.
리페어 제어 회로(920)는 PPR을 수행하여 BIOS 메모리(130)에서 제공된 불량 로우 어드레스(FRA), 불량 칼럼 어드레스(FCA) 및/또는 불량 블록 어드레스(FBA) 각각을 리던던시 로우 어드레스(RRA), 리던던시 칼럼 어드레스(RCA) 및/또는 리던던시 블록 어드레스(RBA)로 대체할 수 있다. 리페어 제어 회로(920)는 PPR 수행 중, 리페어되어야 했던 소스 어드레스들(S_ADDR, 즉, 불량 로우 어드레스(FRA), 불량 칼럼 어드레스(FCA) 및/또는 불량 블록 어드레스(FBA))과 대체된 목적지 어드레스들(D_ADDR, 즉 리던던시 로우 어드레스(RRA), 리던던시 칼럼 어드레스(RCA) 및/또는 리던던시 블록 어드레스(RBA))에 대한 정보를 어드레스 저장 테이블(921)에 저장할 수 있다.
어드레스 저장 테이블(921)은 예시적으로, 안티 퓨즈 어레이 또는 CAM(Content Addressable Memory)로 구성될 수 있다. 안티 퓨즈는 퓨즈 소자와 반대되는 전기적 특성을 갖는 것으로서, 프로그램되지 않은 상태에서는 높은 저항 값을 갖는 반면, 프로그램된 상태에서는 낮은 저항 값을 갖는 저항성 퓨즈 소자이다. CAM은 인가된 어드레스가 각각의 CAM 엔트리에 저장된 소스 어드레스들(S_ADDR)과 동시에 비교되며, CAM의 출력은, 만약 있다면(if any), 소스 어드레스(S_ADDR)가 목적지 어드레스(D_ADDR)와 매칭된다는 것을 나타내는 특별한 메모리 구조이다.
리페어 제어 회로(920)는 어드레스 저장 테이블(921)을 메모리 콘트롤러(112)에게 제공할 수 있다. 메모리 콘트롤러(112)는 DRAM(120)에 대한 일관된 프로세서(들)(110) 억세스를 위해 어드레스 저장 테이블(921) 정보를 메모리 관리 정보(910)로서 저장할 수 있다. 어드레스 저장 테이블(921) 정보는 프로세서(들)(110)에 공유될 수 있다. 프로세서(들)(110)은 어플리케이션들(170) 실행 동안 메모리 할당을 위한 동작을 수행할 때, 어드레스 저장 테이블(921) 정보를 기반으로 메모리 할당 동작을 수행할 수 있다. 이에 따라, 프로세서(들)(110)은 메모리 관리 정보(910)를 이용하여 DRAM(120) 내에서 OS(180)의 어드레스 공간을 관리하고, DRAM(120)을 사용하는 다른 가상 머신들(VMs)에게 메모리 영역을 고루 나누어주는, 흔히 메모리 관리자로 알려진 기능을 처리할 수 있다.
도 10 내지 도 12는 도 1의 메모리(120)에서 수행되는 리페어 동작을 설명하는 도면들이다.
도 10에서는, 불량 로우 어드레스(FRA)를 리던던시 로우 어드레스(RRA)로 리페어하는 경우를 가정한다. 메모리 셀 어레이(1000a)는 노멀 셀 어레이(NMCA)와 리던던시 셀 어레이(RMCA)를 포함할 수 있다. 노멀 셀 어레이(NMCA)는 워드라인들과 비트라인들에 연결되는 메모리 셀들을 포함하고, 리던던시 셀 어레이(RMCA)는 리던던시 워드라인들과 리던던시 비트라인들에 연결되는 메모리 셀들을 포함할 수 있다. 리페어 제어 회로(920)는 불량 로우 어드레스(FRA)를 리페어하는 리던던시 자원들이 서로 중복되지 않도록 리던던시 로우 어드레스(RRA)를 결정하는 로우 리페어부(922)를 포함할 수 있다.
로우 리페어부(922)는 불량 로우 어드레스(FRA) 대신에 리던던시 로우 어드레스(RRA)가 선택되도록 리페어 동작을 수행할 수 있다. 메모리로 인가되는 억세스 로우 어드레스가 노멀 셀 어레이(NMCA)의 불량 로우 어드레스(FRA)를 지정하는 경우, 리던던시 셀 어레이(RMCA)의 리던던시 로우 어드레스(RRA)에 해당하는 리던던시 셀들이 선택된다. 로우 리페어부(922)는 불량 로우 어드레스(FRA)에 대응하는 워드라인이 비활성화 되도록 하고, 대신에 리던던시 로우 어드레스(RRA)에 대응하는 리던던시 워드라인을 활성화시킨다. 이에 따라, 불량 로우 어드레스(FRA)에 해당하는 메모리 셀들 대신에 리던던시 로우 어드레스(RRA)에 해당하는 리던던시 셀들이 선택된다.
도 11에서는, 불량 칼럼 어드레스(FCA)를 리던던시 칼럼 어드레스(RCA)로 리페어하는 경우를 가정한다. 메모리 셀 어레이(1000b)는 노멀 셀 어레이(NMCA)와 리던던시 셀 어레이(RMCA)를 포함할 수 있다. 노멀 셀 어레이(NMCA)는 워드라인들과 비트라인들에 연결되는 메모리 셀들을 포함하고, 리던던시 셀 어레이(RMCA)는 워드라인들과 리던던시 비트라인들에 연결되는 메모리 셀들을 포함할 수 있다. 리페어 제어 회로(920)는 불량 칼럼 어드레스(FCA)를 리페어하는 리던던시 자원들이 서로 중복되지 않도록 리던던시 칼럼 어드레스(RCA)를 결정하는 칼럼 리페어부(924)를 포함할 수 있다.
칼럼 리페어부(924)는 불량 칼럼 어드레스(FCA) 대신에 리던던시 칼럼 어드레스(RCA)가 선택되도록 리페어 동작을 수행할 수 있다. 메모리(120)로 인가되는 억세스 칼럼 어드레스가 노멀 셀 어레이(NMCA)의 불량 칼럼 어드레스(FCA)를 지정하는 경우, 리던던시 셀 어레이(RMCA)의 리던던시 칼럼 어드레스(RCA)에 해당하는 리던던시 셀들이 선택된다. 칼럼 리페어부(924)는 불량 칼럼 어드레스(FCA)에 대응하는 비트라인이 선택되지 않도록 하고, 대신에 리던던시 칼럼 어드레스(RCA)에 대응하는 리던던시 비트라인을 선택한다. 이에 따라, 불량 칼럼 어드레스(FCA)에 해당하는 메모리 셀들 대신에 리던던시 칼럼 어드레스(RCA)에 해당하는 리던던시 셀들이 선택된다.
도 12에서는, 불량 블록 어드레스(FBA)를 리던던시 칼럼 어드레스(RCA)로 리페어하는 경우를 가정한다. 메모리 셀 어레이(1000c)는 노멀 셀 어레이(NMCA)와 리던던시 셀 어레이(RMCA)를 포함할 수 있다. 노멀 셀 어레이(NMCA)는 워드라인들과 비트라인들에 연결되는 메모리 셀들을 포함하고, 리던던시 셀 어레이(RMCA)는 리던던시 워드라인들과 리던던시 비트라인들에 연결되는 메모리 셀들을 포함할 수 있다. 리페어 제어 회로(920)는 불량 블록 어드레스(FBA)를 리페어하는 리던던시 자원들이 서로 중복되지 않도록 리던던시 블록 어드레스(RBA)를 결정하는 블록 리페어부(926)를 포함할 수 있다.
블록 리페어부(926)는 불량 블록 어드레스(FBA) 대신에 리던던시 블록 어드레스(RBA)가 선택되도록 리페어 동작을 수행할 수 있다. 메모리(120)로 인가되는 억세스 로우 어드레스 및 억세스 칼럼 어드레스가 노멀 셀 어레이(NMCA)의 일정 영역을 나타내는 불량 블록 어드레스(FBA)를 지정하는 경우, 리던던시 셀 어레이(RMCA)의 리던던시 블록 어드레스(RBA)에 해당하는 리던던시 셀 영역들이 선택된다. 블록 리페어부(926)는 불량 블록 어드레스(FBA)에 해당하는 메모리 영역의 메모리 셀들이 선택되지 않도록 하고, 대신에 리던던시 블록 어드레스(RBA)에 해당하는 메모리 영역의 리던던시 셀들을 선택한다.
도 13은 본 발명의 일 실시예에 따른 시스템의 부팅 방법을 설명하는 플로우챠트이다.
도 1, 도 9 및 도 13을 참조하면, 시스템(100)이 파워-업 될 때S(1310), 메모리(120)는 프로세서(110)에 의해 BIOS 메모리(130)의 BIOS 코드 일부를 실행하는 부팅 동작들을 실행할 수 있다S(1312). 프로세서(110)에 의해 BIOS 코드를 실행하는 부팅 동작들 중에서 메모리(120)에 대한 메모리 트레이닝이 수행될 수 있다S(1313). 메모리 트레이닝은 메모리 콘트롤러(112)가 주체가 되어 메모리(120)의 코어 파라미터들 및/또는 주변 회로 파라미터들에 대한 최적의 파라미터들을 결정하기 위해 수행될 수 있다. 메모리 트레이닝(S1313) 후, BIOS 메모리에 저장된 불량 시스템 물리적 어드레스들(예, 불량 로우 어드레스(FRA), 불량 칼럼 어드레스(FCA) 및/또는 불량 블록 어드레스(FBA))가 메모리(120)로 전송될 수 있다(S1320).
메모리(120)는 불량 시스템 물리적 어드레스들을 리페어하는 동작을 수행할 수 있다S(1314). 앞에서 설명된 바와 같이, 메모리(120)는 불량 로우 어드레스(FRA)를 리던던시 로우 어드레스(RRA)로 리페어할 수 있다(도 10). 메모리(120)는 불량 칼럼 어드레스(FCA)를 리던던시 칼럼 어드레스(RCA)로 리페어할 수 있다(도 11). 메모리(120)는 불량 블록 어드레스(FBA)를 리던던시 블록 어드레스(RBA)로 리페어할 수 있다(도 12). 메모리(120)는 불량 시스템 물리적 어드레스들을 리페어하여, 메모리(120) 자원을 최대의 효율로 이용할 수 있다.
본 발명의 실시예들은 많은 상이한 시스템 타입에서 구현될 수 있다. 또한, 본 발명의 실시예들은 코드로 구현될 수 있으며, 명령어들을 실행하도록 시스템을 프로그래밍하는 데 사용될 수 있는 명령어들을 저장한 컴퓨터 판독 가능한 저장 매체(an article comprising a machine-readable storage medium)에 저장될 수 있다. 저장 매체는 플로피 디스크, 광 디스크, 반도체 드라이브(SSD), 콤팩트 디스크 판독 전용 메모리(CD-ROM), 콤팩트 디스크 재기록(CD-RW) 및 광자기 디스크를 포함하는 임의 타입의 디스크, 판독 전용 메모리(ROM), 동작 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM)와 같은 랜덤 억세스 메모리(RAM), 소거 및 프로그래밍 가능한 판독 전용 메모리(EPROM), 플래시 메모리, 전기적으로 소거 및 프로그래밍 가능한 판독 전용 메모리(EEPROM)와 같은 반도체 장치, 자기 또는 광학 카드, 또는 전자 명령어들을 저장하기에 적합한 임의의 다른 타입의 매체들을 포함할 수 있지만, 이에 한정되지 않는다.
본 발명은 도면에 도시된 제한된 수의 실시예들과 관련하여 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변경들 및 변형들, 그리고 균등한 다른 실시예들이 가능하다는 점을 인식할 것이다. 따라서, 첨부된 청구항들은 본 발명의 진정한 사상 및 범위 내에 속하는 바와 같은 모든 그러한 변경들 및 변형들을 커버하는 것을 의도한다.

Claims (10)

  1. 어플리케이션 및 오퍼레이팅 시스템(OS)을 실행하는 시스템의 동작 방법에 있어서,
    상기 OS는 상기 어플리케이션에 의해 처리되는 가상 어드레스들과 상기 메모리를 위한 시스템 물리적 어드레스들 사이에서 어드레스 변환을 수행하는 단계;
    상기 OS는 상기 가상 어드레스들과 관련하여 페이지 장애를 유발하는 불량 페이지들을 인지하는 단계;
    상기 OS는 상기 불량 페이지들의 제1 시스템 물리적 어드레스들에서 식별되는 로우 어드레스 비트들과 칼럼 어드레스 비트들을 관찰하고, 상기 제1 시스템 물리적 어드레스들에 나타나는 불량 유형을 특정하는 단계; 및
    상기 OS는 상기 어드레스 변환을 수행할 때, 상기 특정한 불량 유형과 관련된 불량 시스템 물리적 어드레스들을 제공하지 않는 단계를 포함하는 시스템의 동작 방법.
  2. 제1 항에 있어서,
    상기 OS가 상기 불량 유형을 특정할 때 상기 시스템의 작동이 중단되지 않는 것을 특징으로 하는 시스템의 동작 방법,
  3. 제1항에 있어서, 상기 시스템의 동작 방법은,
    상기 OS가 상기 불량 페이지들의 개수가 기준 값을 초과하는지 여부를 판단하는 단계를 더 포함하고,
    판단 결과, 초과하는 경우, 상기 제1 시스템 물리적 어드레스들에 대해 상기 불량 유형을 특정하는 것을 특징으로 하는 시스템의 동작 방법.
  4. 제1항에 있어서, 상기 시스템의 동작 방법은,
    상기 OS가 상기 불량 시스템 물리적 어드레스들을 상기 시스템의 바이오스(BIOS) 메모리에 저장하는 단계를 더 포함하는 것을 특징으로 하는 시스템의 동작 방법.
  5. 제4항에 있어서, 상기 시스템의 동작 방법은,
    상기 시스템의 부팅 시, 상기 BIOS 메모리로부터 상기 불량 시스템 물리적 어드레스들을 독출하여 상기 메모리로 제공하는 단계; 및
    상기 시스템의 부팅 동안, 상기 메모리로 하여금 상기 불량 시스템 물리적 어드레스들을 리페어하는 동작을 수행할 수 있게 하는 단계를 더 포함하는 것을 특징으로 하는 시스템의 동작 방법.
  6. 제5항에 있어서, 상기 시스템의 부팅 동안, 상기 메모리로 하여금 상기 불량 시스템 물리적 어드레스들을 리페어하는 동작을 수행할 수 있게 하는 단계는,
    상기 특정한 불량 유형이 로우성 불량인 경우, 상기 메모리는 상기 불량 시스템 물리적 어드레스들 중 적어도 하나의 불량 로우 어드레스를 리던던시 로우 어드레스로 리페어하는 것을 특징으로 하는 시스템의 동작 방법.
  7. 제5항에 있어서, 상기 시스템의 부팅 동안, 상기 메모리에서 상기 불량 시스템 물리적 어드레스들을 리페어하는 동작을 수행할 수 있게 하는 단계는,
    상기 특정한 불량 유형이 칼럼성 불량인 경우, 상기 메모리는 상기 불량 시스템 물리적 어드레스들 중 적어도 하나의 불량 칼럼 어드레스를 리던던시 칼럼 어드레스로 리페어하는 것을 특징으로 하는 시스템의 동작 방법.
  8. 제5항에 있어서, 상기 시스템의 부팅 동안, 상기 메모리에서 상기 불량 시스템 물리적 어드레스들을 리페어하는 동작을 수행할 수 있게 하는 단계는,
    상기 특정한 불량 유형이 블록성 불량인 경우, 상기 메모리는 상기 불량 시스템 물리적 어드레스들 중 적어도 하나의 불량 블록 어드레스를 리던던시 블록 어드레스로 리페어하는 것을 특징으로 하는 시스템의 동작 방법.
  9. 실행 시에 시스템으로 하여금,
    상기 시스템의 프로세서 및 메모리와 협력하여 어플리케이션을 실행하고;
    상기 어플리케이션 실행 동안, 페이지 장애를 유발하는 불량 페이지들을 인지하고;
    상기 불량 페이지들의 상기 메모리의 시스템 물리적 어드레스들에서 나타나는 어드레스 유형을 특정하고;
    상기 특정한 어드레스 유형과 관련된 불량 물리적 어드레스들이 어드레스 변환에 사용되지 않도록 하고; 및
    상기 어드레스 유형을 특정할 때 상기 시스템 실행이 중단되지 않게 하는
    명령어들을 저장하는 컴퓨터 판독가능한 기록 매체.
  10. 메모리 장치에 있어서,
    복수의 메모리 셀들을 포함하는 메모리 셀 어레이; 및
    상기 복수의 메모리 셀들 중 불량 셀들을 상기 메모리 셀 어레이 내 리던던시 셀들로 리페어 하도록 구성되는 리페어 제어 회로를 포함하고,
    상기 리페어 제어 회로는, 상기 메모리 장치의 부팅 동안, 상기 불량 셀들의 소스 어드레스들을 상기 메모리 장치가 결합되는 시스템으로부터 수신하고, 상기 소스 어드레스들을 상기 리던던시 셀들의 목적지 어드레스들로 리페어하고,
    상기 불량 셀들의 소스 어드레스들은, 상기 시스템의 실행 동안 프로세서에 의해 사용되는 가상 어드레스들과 관련하여 페이지 장애를 유발했던 불량 페이지들에서 나타난 특정 어드레스 유형과 동일한 것을 특징으로 하는 메모리 장치.
KR1020200058448A 2020-05-15 2020-05-15 페이지 장애에 기초하여 메모리 고장을 예견하고, 예견되는 메모리 고장을 관리하는 시스템의 운영 체계 핸들링 KR20210141156A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020200058448A KR20210141156A (ko) 2020-05-15 2020-05-15 페이지 장애에 기초하여 메모리 고장을 예견하고, 예견되는 메모리 고장을 관리하는 시스템의 운영 체계 핸들링
US17/198,979 US11360837B2 (en) 2020-05-15 2021-03-11 Handling operation system (OS) in system for predicting and managing faulty memories based on page faults
CN202110270073.2A CN113672430A (zh) 2020-05-15 2021-03-12 运行虚拟机的系统、操作其的方法、介质和存储器件

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200058448A KR20210141156A (ko) 2020-05-15 2020-05-15 페이지 장애에 기초하여 메모리 고장을 예견하고, 예견되는 메모리 고장을 관리하는 시스템의 운영 체계 핸들링

Publications (1)

Publication Number Publication Date
KR20210141156A true KR20210141156A (ko) 2021-11-23

Family

ID=78512347

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200058448A KR20210141156A (ko) 2020-05-15 2020-05-15 페이지 장애에 기초하여 메모리 고장을 예견하고, 예견되는 메모리 고장을 관리하는 시스템의 운영 체계 핸들링

Country Status (3)

Country Link
US (1) US11360837B2 (ko)
KR (1) KR20210141156A (ko)
CN (1) CN113672430A (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10983919B2 (en) * 2019-09-25 2021-04-20 Nvidia Corp. Addressing cache slices in a last level cache
US20230091623A1 (en) * 2021-09-23 2023-03-23 Nanya Technology Corporation Defect inspecting method and system performing the same
KR20230077478A (ko) * 2021-11-25 2023-06-01 에스케이하이닉스 주식회사 집적 회로, 메모리 및 메모리의 동작 방법

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6199177B1 (en) * 1998-08-28 2001-03-06 Micron Technology, Inc. Device and method for repairing a semiconductor memory
US6910152B2 (en) * 1998-08-28 2005-06-21 Micron Technology, Inc. Device and method for repairing a semiconductor memory
US6564346B1 (en) * 1999-12-07 2003-05-13 Infineon Technologies Richmond, Lp. Advanced bit fail map compression with fail signature analysis
US7111145B1 (en) * 2003-03-25 2006-09-19 Vmware, Inc. TLB miss fault handler and method for accessing multiple page tables
US7356735B2 (en) * 2004-03-30 2008-04-08 Intel Corporation Providing support for single stepping a virtual machine in a virtual machine environment
US7337291B2 (en) 2005-01-14 2008-02-26 Microsoft Corporation Software memory access control
US7653840B1 (en) * 2007-04-27 2010-01-26 Net App, Inc. Evaluating and repairing errors during servicing of storage devices
US7779312B2 (en) * 2007-08-13 2010-08-17 Faraday Technology Corp. Built-in redundancy analyzer and method for redundancy analysis
US7865762B2 (en) * 2007-12-04 2011-01-04 Intel Corporation Methods and apparatus for handling errors involving virtual machines
US20110002169A1 (en) 2009-07-06 2011-01-06 Yan Li Bad Column Management with Bit Information in Non-Volatile Memory Systems
JP2012038368A (ja) * 2010-08-04 2012-02-23 Toshiba Corp 不良解析装置及び不良解析方法
US8627176B2 (en) 2010-11-30 2014-01-07 Microsoft Corporation Systematic mitigation of memory errors
KR101797565B1 (ko) 2011-08-22 2017-12-12 삼성전자 주식회사 불량 페이지를 관리하는 메모리 장치
JP5786955B2 (ja) * 2011-11-28 2015-09-30 富士通株式会社 メモリ縮退方法及び情報処理装置
US9003223B2 (en) * 2012-09-27 2015-04-07 International Business Machines Corporation Physical memory fault mitigation in a computing environment
US20140258780A1 (en) * 2013-03-05 2014-09-11 Micron Technology, Inc. Memory controllers including test mode engines and methods for repair of memory over busses used during normal operation of the memory
KR20150040481A (ko) 2013-10-07 2015-04-15 에스케이하이닉스 주식회사 메모리 장치, 메모리 장치 및 메모리 시스템의 동작방법
US9213491B2 (en) 2014-03-31 2015-12-15 Intel Corporation Disabling a command associated with a memory device
US9652321B2 (en) 2014-09-23 2017-05-16 Intel Corporation Recovery algorithm in non-volatile memory
KR102261815B1 (ko) * 2014-10-30 2021-06-07 삼성전자주식회사 펌웨어 업데이트 시간을 줄일 수 있는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템
US20160147667A1 (en) * 2014-11-24 2016-05-26 Samsung Electronics Co., Ltd. Address translation in memory
US10546649B2 (en) 2015-08-18 2020-01-28 Hewlett Packard Enterprise Development Lp Post package repair for mapping to a memory failure pattern
US10528476B2 (en) * 2016-05-24 2020-01-07 International Business Machines Corporation Embedded page size hint for page fault resolution
US20180067866A1 (en) * 2016-09-08 2018-03-08 Intel Corporation Translate on virtual machine entry
US10705763B2 (en) * 2017-02-10 2020-07-07 International Business Machines Corporation Scale and performance for persistent containers using SCSI second level addressing to map storage volume to host of container environment, wherein said storage volume is scanned at said SCSI second level addressing without rescanning at OS level virtualization
US10379758B2 (en) * 2017-06-26 2019-08-13 Western Digital Technologies, Inc. Managing system data for a data storage system
US10403390B1 (en) 2018-04-09 2019-09-03 Micron Technology, Inc. Post-packaging repair of redundant rows

Also Published As

Publication number Publication date
US11360837B2 (en) 2022-06-14
CN113672430A (zh) 2021-11-19
US20210357279A1 (en) 2021-11-18

Similar Documents

Publication Publication Date Title
US11360837B2 (en) Handling operation system (OS) in system for predicting and managing faulty memories based on page faults
US7478285B2 (en) Generation and use of system level defect tables for main memory
US8412987B2 (en) Non-volatile memory to store memory remap information
CN112470113B (zh) 存储器系统中的隔离性能域
US9009580B2 (en) System and method for selective error checking
US20220035719A1 (en) Hbm ras cache architecture
CN101369240B (zh) 用于在信息处理系统中管理存储错误的系统和方法
US8099570B2 (en) Methods, systems, and computer program products for dynamic selective memory mirroring
US5974564A (en) Method for remapping defective memory bit sets to non-defective memory bit sets
US7949913B2 (en) Method for creating a memory defect map and optimizing performance using the memory defect map
CN112667445B (zh) 封装后的内存修复方法及装置、存储介质、电子设备
TW201729105A (zh) 混合模式存取固態硬碟驅動器之方法及裝置
KR20210050213A (ko) 리페어 단위를 가변하는 메모리 장치 및 그것의 리페어 방법
US11650752B2 (en) Computing system and operating method thereof
CN112053730A (zh) 用于存储器子系统的冗余云存储器存储装置
CN114258535A (zh) 使用PCIe连接的远存储器的存储器分层
CN114360625A (zh) 存储器装置及其测试方法、存储器内置自测试电路
US10732859B2 (en) Systems and methods for granular non-volatile memory health visibility to a host
US20240013851A1 (en) Data line (dq) sparing with adaptive error correction coding (ecc) mode switching
US20150199201A1 (en) Memory system operating method providing hardware initialization
WO2022226997A1 (zh) 存储单元的访问方法、修复方法、裸片和存储芯片
US11416163B2 (en) Systems and methods for dynamic logical block address distribution between multicores
CN114649032A (zh) 用增强的持久性存储器区存取启用装置的拆分协议途径
US10915404B2 (en) Persistent memory cleaning
KR20210034456A (ko) 메모리 컨트롤러, 스토리지 장치 및 상기 스토리지 장치의 동작 방법

Legal Events

Date Code Title Description
A201 Request for examination