KR20180055296A - 컴퓨터 시스템, 및 컴퓨터 시스템의 동작 방법 - Google Patents

컴퓨터 시스템, 및 컴퓨터 시스템의 동작 방법 Download PDF

Info

Publication number
KR20180055296A
KR20180055296A KR1020160152965A KR20160152965A KR20180055296A KR 20180055296 A KR20180055296 A KR 20180055296A KR 1020160152965 A KR1020160152965 A KR 1020160152965A KR 20160152965 A KR20160152965 A KR 20160152965A KR 20180055296 A KR20180055296 A KR 20180055296A
Authority
KR
South Korea
Prior art keywords
memory
allocation area
allocation
memory controller
attribute
Prior art date
Application number
KR1020160152965A
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 KR1020160152965A priority Critical patent/KR20180055296A/ko
Priority to US15/649,848 priority patent/US10698807B2/en
Publication of KR20180055296A publication Critical patent/KR20180055296A/ko
Priority to US16/884,328 priority patent/US10846213B2/en

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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • 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
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types
    • 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
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)

Abstract

비휘발성 메인 메모리 장치를 갖는 컴퓨터 시스템 및 이의 동작 방법이 개시된다. 본 개시의 기술적 사상의 일 측면에 따른 컴퓨터 시스템은 비휘발성 메모리, 및 상기 비휘발성 메모리를 제어하는 메모리 컨트롤러를 포함하는 메인 메모리 장치, 및 상기 메인 메모리 장치에 연결되어 상기 비휘발성 메모리에 로딩된 응용 프로그램들을 실행하고, 할당 영역의 컨텍스트 속성 정보를 포함하는 명령을 상기 메모리 컨트롤러에 제공하는 프로세서를 포함한다. 상기 메모리 컨트롤러는 상기 명령을 수신하고 상기 컨텍스트 속성 정보를 활용하여 상기 비휘발성 메모리를 관리한다.

Description

컴퓨터 시스템, 및 컴퓨터 시스템의 동작 방법{Computer System and Operating Method of the same}
본 개시의 기술적 사상은 컴퓨터 시스템에 관한 것으로서, 상세하게는 비휘발성 메인 메모리 장치를 갖는 컴퓨터 시스템 및 이의 동작 방법에 관한 것이다.
컴퓨터 시스템들의 성능을 좌우하는 요인들 중 하나는 메인 메모리 또는 시스템 메모리의 용량 및 처리량, 및 액세스 속도이다. 일반적으로, 동적 랜덤-액세스 메모리(DRAM)가 메인 메모리로 사용된다. DRAM은 구조적 단순성으로 인하여 높은 밀도를 가지며, 휘발성 메모리로서, 리프레쉬 동작으로 인하여 소비 전력이 높고, 가격이 비싸다.
비휘발성 메모리는 전원이 제거되어도 데이터가 사라지지 않으며, 소비 전력이 낮고, 더 높은 밀도를 가질 수 있으며, DRAM에 비해 가격이 낮다. 그러나, 비휘발성 메모리는 DRAM에 비해 액세스 속도가 느리고 유한한 프로그램/소거 사이클을 갖는다는 단점을 갖는다. 새로운 메모리 장치 분야가 발전함에 따라 비휘발성 메모리를 메인 메모리로 사용하려는 연구가 진행되고 있다.
본 발명의 기술적 사상이 해결하려는 과제는, 최적으로 동작할 수 있는 비휘발성 메인 메모리 장치를 갖는 컴퓨터 시스템, 및 이의 동작 방법을 제공하는 데 있다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일 측면에 따른 컴퓨터 시스템은 비휘발성 메모리, 및 상기 비휘발성 메모리를 제어하는 메모리 컨트롤러를 포함하는 메인 메모리 장치, 및 상기 메인 메모리 장치에 연결되어 상기 비휘발성 메모리에 로딩된 프로그램들을 실행하고, 할당 영역의 컨텍스트 속성 정보를 포함하는 명령을 상기 메모리 컨트롤러에 제공하는 프로세서를 포함한다. 상기 메모리 컨트롤러는 상기 명령을 수신하고 상기 컨텍스트 속성 정보를 활용하여 상기 비휘발성 메모리를 관리한다.
본 개시의 기술적 사상의 다른 일 측면에 따른 컴퓨터 시스템의 동작 방법은, 프로세서에 의해, 할당 영역의 컨텍스트 속성 정보를 포함하는 명령을 메인 메모리 장치의 메모리 컨트롤러에 제공하는 단계, 및 상기 메모리 컨트롤러에 의해, 상기 명령을 수신하고 상기 컨텍스트 속성 정보를 활용하여 상기 메인 메모리 장치의 비휘발성 메모리를 관리하는 단계를 포함한다.
본 발명의 기술적 사상의 컴퓨터 시스템 및 이의 동작 방법에 따르면, 프로세서가 메인 메모리 장치를 액세스하는 주체로서 현재 어떻게 사용하고 있으며 앞으로 어떻게 사용할 것인지를 정확하게 파악할 수 있다. 프로세서는 이러한 정보를 나타내는 컨텍스트 속성 정보를 직접 메모리 컨트롤러에게 전달하고 메모리 컨트롤러는 전달받은 컨텍스트 속성 정보를 활용함으로써, 프로세서와 메인 메모리 장치 간의 액세스 속도가 높이지고, 메인 메모리 장치 내의 내부 연산 처리량이 감소될 수 있다. 그에 따라, 비휘발성 메인 메모리 장치를 포함하는 컴퓨터 시스템의 전체적인 성능이 개선될 수 있다.
도 1은 본 발명의 예시적인 실시예에 따른 컴퓨터 시스템을 나타내는 블록도이다.
도 2는 도 1의 비휘발성 메모리의 일 예에 따른 메모리 셀 어레이를 나타내는 개략적인 회로도이다.
도 3은 본 발명의 예시적인 실시예에 따른 컴퓨터 시스템을 간략하게 나타내는 블록도이다.
도 4에는 본 발명의 예시적인 실시예에 따른 컨텍스트 속성 테이블이 도시된다.
도 5는 도 4에 도시된 컨텍스트 속성 테이블에 따라 할당 영역들이 할당된 비휘발성 메모리를 예시적으로 도시한다.
도 6은 본 발명의 예시적인 다른 실시예에 따른 컴퓨터 시스템을 간략하게 나타내는 블록도이다.
도 7은 본 발명의 예시적인 실시예에 따른 컴퓨터 시스템의 동작 방법을 나타내는 흐름도이다.
도 8a는 본 발명의 일 실시예에 따른 메모리 모듈을 나타내는 블록도이다.
도 8b는 본 발명의 다른 실시예에 따른 메모리 모듈을 나타내는 블록도이다.
도 9는 본 발명의 일 실시예에 따른 메인 보드 및 복수의 메모리 모듈을 나타내는 블록도이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시예들에 대해 상세히 설명한다.
도 1은 본 발명의 예시적인 실시예에 따른 컴퓨터 시스템을 나타내는 블록도이다.
도 1을 참조하면, 컴퓨터 시스템(1000)은 시스템 버스(600)에 전기적으로 연결되는 프로세서(CPU, 100), 메인 메모리 장치(200), 스토리지(300), 입력 인터페이스(400) 및 출력 인터페이스(500)를 포함한다. 일 실시예에 따르면, 컴퓨터 시스템(1000)은 프로세서(100)에 연결된 별도의 캐시 메모리(110)를 더 포함할 수 있다.
컴퓨터 시스템(1000)은 예컨대 메인 프레임 컴퓨터, 서버 컴퓨터, 퍼스널 컴퓨터, 모바일 기기, 및 프로그램 가능한 가전제품 등과 같은 범용 또는 특수 목적의 컴퓨터 시스템일 수 있다.
메인 메모리 장치(200)는 비휘발성 메모리(NVM, 220)를 포함한다. 이때, '메모리'는 동작 메모리, 캐시 메모리 등과 같이 컴퓨터 시스템(1000)이 데이터를 단기적으로 그리고 임시로 저장하는 매체를 가리킨다. 더불어, 메인 메모리 장치(200)는 파일 시스템 형식의 데이터를 저장하거나, 판독 전용 공간을 별도로 두어 운영 체제 프로그램을 저장할 수도 있다.
한편, 프로세서(100)가 응용 프로그램을 실행할 때, 응용 프로그램의 적어도 일부는 스토리지(300)로부터 독출되어 메인 메모리 장치(200)의 비휘발성 메모리(220)에 로드될 수 있다.
프로세서(100)는 상업적으로 이용할 수 있는 다양한 프로세서일 수 있으며, 예컨대, AMD® 애슬론®, 듀론® 및 옵테론® 프로세서; ARM® 어플리케이션, 임베디드 및 보안 프로세서; IBM®과 모터로라® 드래곤볼® 및 파워PC® 프로세서; IBM and 소니® 셀 프로세서; 인텔® 셀러론®, 코어(2) 듀오®, 코어 i3, 코어 i5, 코어 i7, 아이타니엄®, 펜티엄®, 제온®, 그리고 엑스스케일® 프로세서; 그리고 유사한 프로세서들을 한정 없이 포함할 수 있다. 듀얼 마이크로프로세서, 멀티-코어 프로세서, 그리고 기타 멀티-프로세서 아키텍처가 프로세서(100)에 채택될 수 있다.
일 실시예에 따르면, 메인 메모리 장치(200)는 데이터가 저장되는 비휘발성 메모리(NVM, 220), 및 비휘발성 메모리(220)를 제어하는 메모리 컨트롤러(210)를 포함한다. 프로세서(100)는 메모리 컨트롤러(210)에 명령을 제공하고, 메모리 컨트롤러(210)는 프로세서(100)로부터의 명령에 응답하여 비휘발성 메모리(220)를 제어 및 관리한다. 메모리 컨트롤러(210)는 프로세서(100)로부터의 명령에 응답하여 데이터의 논리 어드레스를 물리 어드레스로 변환할 수 있다.
비휘발성 메모리(220)를 포함하는 메인 메모리 장치(200)에 저장된 데이터는 유지된다. 이러한 특징은 솔리드 스테이트 드라이브(이하, SSD)에서 사용되는 플래시(FLASH) 메모리와 유사하고 휘발성 메모리 장치인 SRAM이나 DRAM과는 다르다. 메인 메모리 장치(200)는 일반적으로 아이들 상태일 때, SRAM이나 DRAM과 같은 휘발성 메모리 장치에 비해 전력 소모가 낮다. 또한, 메인 메모리 장치(200)는 SRAM과 DRAM과 같이 랜덤 액세스 가능하다.
메인 메모리 장치(200)는 SSD의 플래시(FLASH) 메모리보다 작은 단위(granularity) 레벨로 재기록(rewrite) 및 소거(erase) 가능하다. 예를 들면, 메인 메모리 장치(200)는 바이트(byte) 레벨로 재기록되거나 소거될 수 있는 반면에, SSD의 플래시(FLASH) 메모리는 한번에 블록(block) 단위로 재기록되고 소거될 수 있다. 블록의 크기는 NOR FLASH의 경우, 최소 64Kbyte이고, NAND FLASH의 경우, 최소 16Kbyte이다.
메인 메모리 장치(200)는 FLASH와 같은 비휘발성 스토리지 기술보다 빠른 기록 속도를 갖는다. 메인 메모리 장치(200)는 매우 빠른 독출 속도를 갖는다. 예컨대, FLASH의 독출 속도보다 빠르고, DRAM의 독출 속도에 근접하는 독출 속도를 가질 수 있다. 메인 메모리 장치(200)는 직접 재기록될 수 있다. 예를 들면, 메인 메모리 장치(200)는 SSD에서 사용되는 FLASH와 같이 데이터를 재기록하기 전에 소거될 것이 요구되지 않을 수 있다. 메인 메모리 장치(200)는 부트 ROM이나 SSD에서 사용되는 FLASH에 비해, 예컨대, 수백 또는 수천 배 정도의 기록 내구성을 갖는다.
일 실시예에 따르면, 프로세서(100)가 메모리 컨트롤러(210)에 제공하는 명령에는 할당 영역의 컨텍스트 속성 정보가 포함될 수 있다. 메모리 컨트롤러(210)는 명령에 포함된 컨텍스트 속성 정보를 활용하여 비휘발성 메모리(220)를 관리할 수 있다.
스토리지(300)는 하드 디스크 드라이브(이하, HDD) 및 SSD 중 적어도 하나를 포함할 수 있다. 이때, '스토리지'는 컴퓨터 시스템(1000)이 사용자 데이터를 장기적으로 저장하는 저장 매체를 가리킨다. 스토리지(300)에는 운영 시스템(Operation System, OS), 응용 프로그램(application program), 프로그램 데이터(program data) 등이 저장될 수 있다.
입력 인터페이스(400)는 외부 입력 장치(410)와 연결될 수 있다. 일 실시예에 따르면, 외부 입력 장치(410)는 키보드(keyboard), 마우스(Mouse), 마이크(Mike) 또는 스캐너(Scanner) 등일 수 있다. 사용자는 외부 입력 장치(410)를 통해 명령, 데이터 및 정보를 컴퓨터 시스템(1000)에 입력할 수 있다.
출력 인터페이스(500)는 외부 출력 장치(510)와 연결될 수 있다. 일 실시예에 따르면, 외부 출력 장치(510)는 모니터(Monitor), 프린터(Printer) 또는 스피커(Speaker) 등일 수 있다. 사용자 명령에 대한 컴퓨터 시스템(1000)의 실행 및 처리 결과는 외부 출력 장치를 통해 표현된다.
도 1에는 도시되지 않았지만, 컴퓨터 시스템(1000)이 응용 칩셋(Application chip set), 카메라 이미지 프로세서(Camera Image Processor: CIS) 및 모뎀(Modem) 등을 더 포함할 수 있다는 것은 해당 분야의 당업자들에게 자명하다.
도 2는 도 1의 비휘발성 메모리(220)의 일 예에 따른 메모리 셀 어레이를 나타내는 개략적인 회로도이다.
도 2를 참조하면, 메모리 셀 어레이는 워드 라인들(WL1~WLm), 비트 라인들(BL1~BLn), 및 메모리 셀들(MC)을 포함한다. 메모리 셀들(MC)은 워드 라인들(WL1~WLm) 및 비트 라인들(BL1~BLn)이 교차하는 지점들에 배치될 수 있다.
일 실시예에 따르면, 각각의 메모리 셀들(MC)은 메모리 소자(Rp) 및 선택 소자(D)를 포함한다. 메모리 소자(Rp)는 비트 라인들(BL1~BLn) 중 어느 하나와 선택 소자(D) 사이에 연결되며, 선택 소자(D)는 메모리 소자(Rp)와 워드 라인들(WL1~WLm) 중 어느 하나의 사이에 배치된다.
메모리 소자(Rp)는 인가되는 전기적 펄스에 의해 두 가지 저항 상태로 스위칭될 수 있는 가변 저항 소자일 수 있다. 예를 들어, 가변 저항 소자는 전류량에 따라 결정 상태가 변화하는 상변화 물질(phase-change material)을 포함할 수 있다. 상변화 물질은 GeSbTe, GeTeAs, SnTeSn, GeTe, SbTe, SeTeSn, GeTeSe, SbSeBi, GeBiTe, GeTeTi, InSe, GaTeSe, 및/또는 InSbTe 등 다양한 종류의 물질을 사용할 수 있다.
이러한 상변화 물질은 온도에 따라 비교적 저항이 높은 비정질 상태(amorphous state) 및 비교적 저항이 낮은 결정 상태(crystal state)를 갖는다. 이러한 상변화 물질은 전류의 양에 따라 발생되는 주울 열(Joule's heat)에 의해 상(phase)이 변화될 수 있다. 이때, 주울 열은 상변화 물질의 비저항 및 전류의 공급 시간에 비례하여 발생한다. 이와 같은 상변화를 이용하여 데이터를 메모리 소자(Rp)에 기입하고, 메모리 소자(Rp)로부터 데이터를 독출할 수 있다. 이와 같이 상변화 물질을 이용하는 비휘발성 메모리(220)는 PRAM(Phase Change Random Access Memory)이라고 지칭될 수 있다.
다른 예에 따르면, 메모리 소자(Rp)는 상변화 물질 대신에, 페로브스카이트(perovskite) 화합물들, 전이 금속 산화물(transition metal oxide), 자성체 물질(magnetic materials), 강자성(ferromagnetic) 물질들 또는 반강자성(antiferromagnetic) 물질들을 포함할 수 있다. 비휘발성 메모리(220)는 전이금속산화물(Complex Metal Oxide) 등의 가변 저항 물질을 이용하는 경우 RRAM(Resistive Random Access Memory)으로 지칭되고 강자성체 물질을 이용하는 경우 MRAM(Magnetic Random Access Memory)으로 지칭될 수 있다.
일 실시예에 따르면, 선택 소자(D)는 워드 라인들(WL1~WLm) 중 어느 하나와 메모리 소자(Rp) 사이에 연결될 수 있으며, 워드 라인들(WL1~WLm)의 전압에 따라 메모리 소자(Rp)로의 전류 공급을 제어한다.
일 예에 따르면, 선택 소자(D)는 PN 접합 또는 PIN 접합 다이오드일 수 있으며, 다이오드의 애노드(anode)가 메모리 소자(Rp)에 연결되며, 다이오드의 캐소드(cathode)가 워드 라인들(WL1~WLm)에 연결될 수 있다. 다이오드의 애노드와 캐소드 사이의 전압 차가 다이오드의 문턱 전압보다 커지면, 다이오드가 턴 온되어 메모리 소자(Rp)에 전류가 공급될 수 있다.
다른 예에 따르면, 선택 소자(D)는 모스 트랜지스터일 수 있다. 예를 들면, 선택 소자(D)는 NMOS 트랜지스터로 구성될 수 있으며, NMOS 트랜지스터의 게이트에는 워드 라인들(WL1~WLm)이 연결될 수 있다. 워드 라인들(WL1~WLm)의 전압에 따라 메모리 소자(Rp)로의 전류 공급이 제어될 수 있다. 또 다른 예에 따르면, 선택 소자(D)는 피엔피(pnp) 또는 엔피엔(npn) 구조의 바이폴라 트랜지스터(BJT)일 수도 있다.
일 실시예에 따라서 도 2에는 가변 저항 메모리 소자들(Rp)을 포함하는 메모리 셀 어레이가 도시되었지만, 다른 실시예에 따르면, 도 1의 비휘발성 메모리(220)는 자성 물질을 가지는 자기 터널 접합 소자(magnetic tunnel junction, 이하 MTJ 소자)를 갖는 메모리 셀들을 포함하는 메모리 셀 어레이를 포함할 수 있다. 이 경우, 비휘발성 메모리(220)는 STT-MRAM(Spin transfer torque magneto resistive random access memory)이라고 지칭될 수 있다.
STT-MRAM의 메모리 셀은 MTJ 소자 및 셀 트랜지스터를 포함할 수 있다. MTJ 소자는 고정 층(Pinned layer)과 자유 층(free layer) 및 이들 사이에 터널 층을 포함할 수 있다. 고정 층의 자화 방향은 고정되어 있으며, 자유 층의 자화 방향은 조건에 따라 고정 층의 자화 방향과 같거나 역 방향이 될 수 있다. 고정 층의 자화 방향을 고정시키기 위해, 예컨대, 반 강자성층(anti-ferromagnetic layer)이 더 포함될 수 있다.
셀 트랜지스터의 게이트는 워드 라인에 연결되고, 셀 트랜지스터의 일 전극은 MTJ 소자를 통해 비트 라인에 연결되고, 셀 트랜지스터의 다른 전극은 소스 라인에 연결될 수 있다. STT-MRAM의 기록 동작을 하기 위해서, 워드 라인에 로직 하이의 전압을 인가하여 셀 트랜지스터를 턴 온 시키고 비트 라인과 소스 라인 사이에 기록 전류를 인가함으로써, MTJ 소자에 데이터가 기록될 수 있다. STT-MRAM의 리드 동작을 하기 위해서, 워드 라인에 로직 하이의 전압을 인가하여 셀 트랜지스터를 턴 온 시키고 비트 라인과 소스 라인 사이에 독출 전류를 인가하여 MTJ 소자의 저항 값을 검출함에 따라, MTJ 소자에 저장된 데이터가 판독될 수 있다.
도 3은 본 발명의 예시적인 실시예에 따른 컴퓨터 시스템을 간략하게 나타내는 블록도이다.
도 3을 참조하면, 컴퓨터 시스템은 프로세서(100) 및 메인 메모리 장치(200)를 포함한다. 메인 메모리 장치(200)는 비휘발성 메모리(220), 및 비휘발성 메모리(220)를 제어하는 메모리 컨트롤러(210)를 포함한다.
프로세서(100)는 메인 메모리 장치(200)에 연결되며, 비휘발성 메모리(220)에 로딩된 응용 프로그램을 실행한다. 프로세서(100)는 할당 영역의 컨텍스트 속성 정보를 포함하는 명령(CMD)을 메모리 컨트롤러(210)에 제공한다. 메모리 컨트롤러(210)는 명령(CMD)을 수신하고 컨텍스트 속성 정보를 활용하여 비휘발성 메모리(220)를 관리한다.
메인 메모리 장치(200)는 프로세서(100)가 응용 프로그램을 구동하기 위한 메모리 공간을 프로세서(100)에게 제공하고 프로세서(100)에 의해 수행된 연산의 결과를 일시적으로 저장한다. 메인 메모리 장치(200)는 전원이 제거되더라도 저장된 데이터가 사라지지 않는 비휘발성 메모리(220)를 포함한다. 일 예에 따르면, 비휘발성 메모리(220)는 PRAM, RRAM, 또는 STT-MRAM 중 하나일 수 있다. 다른 예에 따르면 메인 메모리 장치(200)는 휘발성 메모리를 더 포함할 수 있다.
프로세서(100)가 응용 프로그램을 실행하기 위해서는 메인 메모리 장치(200)가 필요하다. 프로세서(100)는 응용 프로그램을 메인 메모리 장치(200)에 로딩해야 하며, 응용 프로그램을 실행 및 처리하기 위해 데이터를 일시적으로 메인 메모리 장치(200)에 저장해야 한다. 프로세서(100)는 메인 메모리 장치(200) 내의 메모리 컨트롤러(210)에 명령을 제공하고 메모리 컨트롤러(210)로부터 처리 결과를 수신함으로써 메인 메모리 장치(200) 내의 비휘발성 메모리(220)에 액세스할 수 있다.
프로세서(100)가 메인 메모리 장치(200)에 제공하는 명령은 주로 기록(write) 명령과 판독(read) 명령이다. 이러한 기록 명령과 판독 명령을 하기 전에, 프로세서(100)는 메인 메모리 장치(200)에 메모리 할당 명령을 한다. 프로세서(100)는 메인 메모리 장치(200)의 할당된 영역에 데이터를 저장하기 위해 기록 명령을 제공하고, 메인 메모리 장치(200)의 할당된 영역에 저장된 데이터를 판독하기 위해 판독 명령을 제공한다. 일반적으로, 메인 메모리 장치(200)는 프로세서(100)가 제공하는 명령에 수동적으로 응답하여 처리할 뿐이다.
프로세서(100)는 할당된 영역에 액세스할 빈도, 할당된 영역들 간의 관계, 및 할당된 영역의 크기의 변화 여부 등을 알 수 있다. 프로세서(100)는 응용 프로그램의 코드에 따라 명령들을 제공하므로, 프로그램 코드를 설계한 프로그램 엔지니어는 적어도 위와 같은 정보들을 알 수 있다. 그러나, 메인 메모리 장치(200)는 전술한 바와 같이 프로세서(100)의 명령에 따라 수동적으로 동작하므로, 위와 같은 정보들을 알 수 없다.
일 실시예에 따르면, 프로세서(100)는 명령(CMD)에 할당 영역의 컨텍스트 속성 정보를 포함시켜 메모리 컨트롤러(210)에 제공한다.
일 예에 따르면, 컨텍스트 속성 정보는 할당 영역의 유효 기간 속성일 수 있다. 다른 예에 따르면, 컨텍스트 속성 정보는 할당 영역의 순차/비순차 액세스 속성일 수 있다. 또 다른 예에 따르면, 컨텍스트 속성 정보는 할당 영역의 확장/비확장 속성일 수 있다. 또 다른 예에 따르면, 컨텍스트 속성 정보는 할당 영역의 필요/불필요 속성일 수 있다. 또 다른 예에 따르면, 컨텍스트 속성 정보는 할당 영역의 보안 속성일 수 있다. 또 다른 예에 따르면, 컨텍스트 속성 정보는 할당 영역의 속도 속성일 수 있다. 또 다른 예에 따르면 컨텍스트 속성 정보는 상기 속성들의 적어도 하나의 조합을 포함할 수 있다.
본 명세서에서, '할당 영역(Allocation region)'은 문맥에 따라서 프로세서(100)가 메모리 컨트롤러(210)에 제공하는 메모리 할당 명령(CMD)을 통해 비휘발성 메모리(220) 내에 '할당받고자 하는 영역'을 의미할 수도 있고, 메모리 할당 명령(CMD)을 통해 비휘발성 메모리(220) 내에 실제로 '할당된 영역'을 의미할 수도 있다. 예를 들면, 프로세서(100)가 메모리 컨트롤러(210)에 제공하는 명령(CMD)은 할당 영역의 컨텍스트 속성 정보를 포함하는데, 이때 '할당 영역'은 프로세서(100)가 비휘발성 메모리(220) 내에 '할당받고자 하는 영역'을 의미하며, 이의 컨텍스트 속성 정보는 할당받고자 하는 영역의 컨텍스트 속성 정보를 의미한다. 반면에, 메모리 컨트롤러(210)는 컨텍스트 속성 정보를 활용하여 비휘발성 메모리(220)를 관리하는데, 이때 컨텍스트 속성 정보는 비휘발성 메모리(220) 내에 할당된 영역들 각각의 컨텍스트 속성 정보들을 의미한다. 메모리 컨트롤러(210)는 프로세서(100)의 명령(CMD)에 따라 '할당 영역'을 할당하므로, 할당 영역의 생성 시점에는 '할당받고자 하는 영역'의 컨텍스트 속성 정보와 '할당된 영역'의 컨텍스트 속성 정보는 동일할 것이다.
한편, 일부 실시예들에 따라서, 프로세서(100)는 비휘발성 메모리(220) 내에 '할당된 영역'의 컨텍스트 속성 정보를 변경할 수 있다. 이 경우, 프로세서(100)는 명령(CMD)에 '할당 영역'의 컨텍스트 속성 정보를 포함시켜 메모리 컨트롤러(210)에 제공할 수 있다. 따라서, 문맥에 따라서, '할당 영역'은 비휘발성 메모리(220) 내에 이미 '할당된 영역'을 의미할 수 있다.
일 실시예에 따르면, 프로세서(100)는 메모리 할당 명령(CMD)에 할당 영역(예컨대, 할당받고자 하는 영역)의 컨텍스트 속성 정보를 포함시켜 메모리 컨트롤러(210)에 제공할 수 있다. 메모리 할당 명령(CMD)에는 할당 영역의 크기(예컨대, 할당받고자 하는 영역의 크기)가 포함된다. 메모리 컨트롤러(210)는 메모리 할당 명령(CMD)에 응답하여 컨텍스트 속성 정보를 참조하여 비휘발성 메모리(220) 내에 제1 할당 영역을 할당할 수 있다. 메모리 컨트롤러(210)는 제1 할당 영역의 시작 주소(ADDR)를 프로세서(100)에 반환할 수 있다. '제1 할당 영역'은 메모리 할당 명령(CMD)에 응답하여 비휘발성 메모리(220) 내에 실제로 '할당된 영역'을 의미한다.
일 실시예에 따르면, 메모리 컨트롤러(210)는 제1 할당 영역의 시작 주소, 크기, 및 컨텍스트 속성 정보를 컨텍스트 속성 테이블에 저장할 수 있다. 컨텍스트 속성 테이블은 비휘발성 메모리(220)에 저장될 수 있다. 다른 예에 따르면, 메인 메모리 장치(200)가 휘발성 메모리를 포함하는 경우, 컨텍스트 속성 테이블은 휘발성 메모리에 저장될 수도 있다.
컨텍스트 속성 테이블에는 할당 영역들 각각의 시작 주소, 크기, 및 컨텍스트 속성 정보들이 저장된다. 컨텍스트 속성 테이블에는 프로세서(100)에 할당된 할당 영역들뿐만 아니라 다른 영역들에 대한 정보도 저장될 수 있다. 예컨대, 컴퓨터 시스템(1000)의 처음 시작되어 프로세서(100)가 아직 메모리 할당 명령을 제공하지 않은 상태에서도, 컨텍스트 속성 테이블에는 비휘발성 메모리(220)를 관리하기 위해, 전체 메모리 영역이 아직 할당되지 않았음을 나타내는 정보가 저장될 수 있다. 또 다른 예로서, 인접한 할당 영역의 확장에 대비하여, 일부 메모리 영역에 대하여 예약 속성이 저장될 수 있다. 예약 속성을 갖는 메모리 영역은 프로세서(100)에 할당된 영역이 아니므로 할당 영역이 아니지만, 컨텍스트 속성 테이블에 저장되어 메모리 컨트롤러(210)에 의해 관리될 수 있다.
도 4에는 본 발명의 예시적인 실시예에 따른 컨텍스트 속성 테이블이 도시된다. 도 5는 도 4에 도시된 컨텍스트 속성 테이블에 따라 할당 영역들이 할당된 비휘발성 메모리를 예시적으로 도시한다.
도 4의 컨텍스트 속성 테이블에는 컨텍스트 속성 정보가 유효 기간 속성, 순차/비순차 액세스 속성, 확장/비확장 속성, 필요/불필요 속성, 보안 속성, 및 속도 속성을 갖는 것을 도시되었지만, 이는 예시적이며, 컨텍스트 속성 정보에는 예시되지 않은 다른 속성이 더 추가되거나, 제시된 속성들 중 일부가 생략될 수도 있다.
도 4 및 도 5와 함께 도 3을 참조하여, 유효 기간 속성에 대해 설명한다.
프로세서(100)는 할당 영역(a1)의 크기(s1)와 유효 기간 속성('임시')를 포함하는 메모리 할당 명령(CMD)을 메모리 컨트롤러(210)에게 제공한다. 메모리 컨트롤러(210)는 메모리 할당 명령(CMD)에 응답하여 도 5에 도시된 바와 같이 비휘발성 메모리(220) 내에 할당 영역(a1)을 할당한다. 비휘발성 메모리(220) 내의 할당 영역(a1)의 위치는 예시적이다.
프로세서(100)는 할당 영역(a2)의 크기(s2)와 유효 기간 속성('1일')를 포함하는 메모리 할당 명령(CMD)을 메모리 컨트롤러(210)에게 제공한다. 메모리 컨트롤러(210)는 메모리 할당 명령(CMD)에 응답하여 도 5에 도시된 바와 같이 비휘발성 메모리(220) 내에 할당 영역(a2)을 할당한다.
할당 영역(a2)의 유효 기간 속성('1일')은 할당 영역(a1)의 유효 기간 속성('임시')와 상이하므로, 메모리 컨트롤러(210)는 할당 영역(a2)이 할당 영역(a1)으로부터 물리적으로 인접하지 않도록 할당할 수 있다. 본 명세서에서 어느 두 영역이 물리적으로 인접하다는 것은 비휘발성 메모리(220)에서 두 영역의 물리적 주소가 인접하다는 것을 의미한다.
유효 기간 속성('1일')은 예시적이다. '1일' 외에도 '1주', '1달', '10일', '12시간' 등의 미리 설정된 기간일 수 있다. 프로세서(100)로부터의 메모리 할당 명령들(CMD)에 따라, 할당 영역들(a3-a5)이 할당될 수 있다.
프로세서(100)는 할당 영역(a6)의 크기(s6)와 유효 기간 속성('영구')를 포함하는 메모리 할당 명령(CMD)을 메모리 컨트롤러(210)에게 제공한다. 메모리 컨트롤러(210)는 메모리 할당 명령(CMD)에 응답하여 도 5에 도시된 바와 같이 비휘발성 메모리(220) 내에 할당 영역(a6)을 할당한다. 할당 영역(a6)의 유효 기간 속성('영구')은 할당 영역들(a1-a5)의 유효 기간 속성들('임시' 및 '1일')와 상이하므로, 메모리 컨트롤러(210)는 할당 영역(a6)이 할당 영역들(a1-a5)으로부터 물리적으로 인접하지 않도록 할당할 수 있다.
프로세서(100)는 할당 영역(a7)의 크기(s7)와 유효 기간 속성('임시')를 포함하는 메모리 할당 명령(CMD)을 메모리 컨트롤러(210)에게 제공한다. 메모리 컨트롤러(210)는 메모리 할당 명령(CMD)에 응답하여 도 4의 컨텍스트 속성 테이블을 참조하여 도 5에 도시된 바와 같이 비휘발성 메모리(220) 내에 할당 영역(a7)을 할당한다. 할당 영역(a7)의 유효 기간 속성('임시')는 할당 영역(a1)의 유효 기간 속성('임시')와 동일하므로, 메모리 컨트롤러(210)는 할당 영역(a7)을 할당 영역(a1)와 물리적으로 인접하게 할당할 수 있다.
프로세서(100)는 할당 영역(a8)의 크기(s8)와 유효 기간 속성('1일')을 포함하는 메모리 할당 명령(CMD)을 메모리 컨트롤러(210)에게 제공한다. 메모리 컨트롤러(210)는 메모리 할당 명령(CMD)에 응답하여 도 4의 컨텍스트 속성 테이블을 참조하여 도 5에 도시된 바와 같이 비휘발성 메모리(220) 내에 할당 영역(a8)을 할당한다. 할당 영역(a8)의 유효 기간 속성('1일')은 할당 영역들(a2, a3)의 유효 기간 속성('1일')과 동일하므로, 메모리 컨트롤러(210)는 할당 영역(a7)을 할당 영역들(a2, a3)와 물리적으로 인접하게 할당할 수 있다.
프로세서(100)는 할당 영역(a9)의 크기(s9)와 유효 기간 속성('영구')를 포함하는 메모리 할당 명령(CMD)을 메모리 컨트롤러(210)에게 제공한다. 메모리 컨트롤러(210)는 메모리 할당 명령(CMD)에 응답하여 도 4의 컨텍스트 속성 테이블을 참조하여 도 5에 도시된 바와 같이 비휘발성 메모리(220) 내에 할당 영역(a9)을 할당한다. 할당 영역(a9)의 유효 기간 속성('영구')는 할당 영역(a6)의 유효 기간 속성('영구')와 동일하므로, 메모리 컨트롤러(210)는 할당 영역(a9)를 할당 영역(a6)과 물리적으로 인접하게 할당할 수 있다.
메모리 컨트롤러(210)는 컨텍스트 속성 테이블을 참조하여 새로 할당되는 영역의 유효 기간 속성과 동일한 유효 기간 속성을 갖는 할당 영역과 인접하게 새로 할당되는 영역을 할당할 수 있다. 그에 따라, 비슷한 유효 기간 속성을 갖는 할당 영역들이 비슷한 시기에 할당 해제될 수 있다. 예를 들면, 유효 기간 속성이 '영구'인 할당 영역들이 어느 한 곳에 집중적으로 배치되고, 유효 기간 속성이 '임시'인 할당 영역들이 다른 곳에 집중적으로 배치된다. 유효 기간 속성이 '임시'인 할당 영역들이 할당 해제되어 빈 공간이 되면, 여기에 큰 크기의 새로운 할당 영역이 할당될 수 있어 효율성이 높아질 수 있다. 그러나, 유효 기간 속성이 '영구'인 할당 영역들과 유효 기간 속성이 '임시'인 할당 영역들이 뒤섞여 있을 경우, 유효 기간 속성이 '임시'인 할당 영역들이 할당 해제되더라도, 빈 공간의 크기는 작기 때문에, 공간이 효율적으로 사용될 수 있다. 즉, 할당 영역들이 할당 해제됨에 따라 단편화(fragmentation)가 발생하는데, 물리적으로 인접한 영역이 비슷한 시점에 할당 해제됨으로써 자연적으로 압축(compaction)되는 효과가 발생할 수 있다. 그에 따라, 비휘발성 메모리(220)의 공간이 더욱 효율적으로 사용될 수 있다.
다음으로 순차/비순차 액세스 속성에 대해 알아본다. 프로세서(100)는 할당 영역(a10)의 크기(s10)와 순차/비순차 액세스 속성('순차')를 포함하는 메모리 할당 명령(CMD)을 메모리 컨트롤러(210)에게 제공한다. 메모리 컨트롤러(210)는 메모리 할당 명령(CMD)에 응답하여 도 5에 도시된 바와 같이 비휘발성 메모리(220) 내의 물리적으로 연속된 영역을 할당 영역(a10)으로 할당할 수 있다. 순차 액세스 속성이란, 프로세서(100)가 논리적으로 순차적인 순서로 주소에 액세스할 가능성이 높다는 것을 의미한다.
프로세서(100)는 논리적 주소를 사용하여 비휘발성 메모리(220)에 액세스한다. 할당 영역의 논리적 주소가 순차적이라고 하더라도, 비휘발성 메모리(220) 내에 큰 크기의 빈 메모리 영역이 존재하지 않아서, 복수의 빈 메모리 영역을 연결하여 하나의 할당 영역으로 구성함으로써, 물리적 주소들이 여러 주소들로 나뉘어 비순차적일 수 있다. 이 경우, 프로세서(100)는 논리적 주소를 사용하여 순차적으로 비휘발성 메모리(220)에 액세스하지만, 실제로는 비휘발성 메모리(220)에서는 비순차적으로 액세스되며, 액세스 속도가 낮아지게 된다.
프로세서(100)는 메모리 할당 시에 할당하고자 하는 영역(예컨대, 할당 영역)이 순차 액세스 속성을 갖는다는 것을 알 수 있으므로, 순차 액세스 속성 정보를 메모리 할당 시점에 메모리 컨트롤러(210)에게 제공할 수 있다. 메모리 컨트롤러(210)는 이러한 순차 액세스 속성 정보를 참조하여 물리적으로 연속된 영역으로 할당 영역(예컨대, a10)을 할당할 수 있다.
일 실시예에 따르면, 메모리 컨트롤러(210)는 메모리 할당 명령(CMD)에 포함된 할당 영역의 크기만큼의 물리적으로 연속된 영역이 존재하지 않는 경우, 물리적으로 연속된 영역을 만들기 위해 빈 영역 사이에 위치하는 사용 영역을 다른 곳으로 재배치(relocation)하는 작업을 수행할 수도 있다. 메모리 컨트롤러(210)는 사용 영역을 다른 곳으로 재배치함으로써 메모리 할당 명령(CMD)에 포함된 할당 영역의 크기만큼의 물리적으로 연속된 영역을 확보할 수 있으며, 이와 같이 확보된 영역을 할당 영역으로 할당할 수 있다.
다음으로 확장/비확장 속성에 대해 알아본다. 프로세서(100)는 할당 영역(a11)의 크기(s11)와 확장/비확장 속성('확장')을 포함하는 메모리 할당 명령(CMD)을 메모리 컨트롤러(210)에게 제공한다. 메모리 컨트롤러(210)는 메모리 할당 명령(CMD)에 응답하여 도 5에 도시된 바와 같이 비휘발성 메모리(220) 내의 물리적으로 연속되고 할당 영역의 크기보다 큰 영역 내에 할당 영역(a11)을 할당할 수 있다. 확장 속성이란, 프로세서(100)가 현재 확보한 크기보다 향후에 더 큰 크기로 사용할 가능성이 있다는 것을 의미한다.
일 예에 따르면, 프로세서(100)는 로그 파일과 같이 시간이 지남에 따라 크기가 점점 증가하는 파일을 위해 메모리 할당이 필요한 경우, 확장 속성을 포함하는 메모리 할당 명령(CMD)을 메모리 컨트롤러(210)에게 제공할 수 있다. 만약 물리적으로 인접한 영역이 다른 용도로 할당될 경우, 할당 영역이 비휘발성 메모리(220) 내에서 물리적으로 분할되어야 하며, 이 경우 전술한 바와 같이 액세스 속도가 낮아지게 된다. 이러한 문제가 발생하는 것을 미연에 방지하기 위해, 확장 가능성이 있는 할당 영역이 할당될 때, 이와 같이 확장 가능성이 있다는 정보, 즉, 확장 속성 정보를 할당 시점에 메모리 컨트롤러(210)에게 알려줌으로써 여유 있는 영역, 즉, 필요한 크기보다 상당히 큰 빈 공간에 할당 영역을 할당할 수 있다.
일 실시예에 따르면, 메모리 컨트롤러(210)는 확장 속성을 갖는 할당 영역(a11)에 인접한 영역(도 5의 영역(a12))의 확장/비확장 속성을 '예약'으로 업데이트할 수 있다. 영역(a12)은 할당 영역(a11)이 향후에 확장되면, 할당 영역(a11)에 포함될 영역이다. 영역(a12)는 할당 영역(a11)이 할당되기 전에는 빈 영역(또는 미사용 영역)이었으며, 확장 속성을 갖는 할당 영역(a11)이 할당됨에 따라 '예약' 속성을 갖게 된 것이다. 영역(a12) 내의 데이터는 의미없는 데이터이므로, 필요/불필요 속성은 '불필요'일 수 있으며, 비휘발성 메모리(220) 내의 공간이 부족해지면, 프로세서(100)에 의해 다른 프로세스 또는 스레드를 위해 할당될 수 있다.
다음으로 필요/불필요 속성에 대해 알아본다. 프로세서(100)는 할당 영역들(a1-a11)에 대한 메모리 할당 명령(CMD)을 메모리 컨트롤러(210)에 제공하고, 메모리 컨트롤러(210)는 도 5의 컨텍스트 속성 테이블에 도시된 바와 같이 메모리 할당 명령(CMD)에 응답하여 할당 영역들(a1-a11)을 비휘발성 메모리(220) 내에 할당하면서, 할당 영역들(a1-a11)에 대한 필요/불필요 속성을 '필요'로 업데이트할 수 있다.
메모리 컨트롤러(210)는 도 5의 컨텍스트 속성 테이블의 필요/불필요 속성 필드를 검색함으로써 어떤 할당 영역이 사용 중인지 어떤 할당 영역의 사용이 종료되었는지를 판단할 수 있다.
프로세서(100)는 할당 영역을 더 이상 사용하지 않게 되면 할당 영역의 할당을 해제할 수 있다. 할당 영역의 할당을 해제하기 위한 명령이 메모리 해제 명령이다. 프로세서(100)는 할당 해제하려는 할당 영역의 시작 주소를 포함하는 메모리 해제 명령을 메모리 컨트롤러(210)에 제공할 수 있다. 메모리 컨트롤러(210)는 메모리 해제 명령에 응답하여 컨텍스트 속성 테이블에서 할당 해제하려는 할당 영역의 필요/불필요 속성을 '불필요'로 업데이트할 수 있다. 메모리 컨트롤러(210)는 할당 해제된 할당 영역을 다른 프로세스 또는 스레드에게 할당할 수 있다.
일 예에 따르면, 도 4에 도시된 바와 같이, 프로세서(100)는 할당 영역(a13)에 대해 할당 해제하고자 할 경우, 할당 영역의 시작 주소(a13)를 포함하는 메모리 해제 명령(예컨대, free)을 메모리 컨트롤러(210)에 제공할 수 있다. 메모리 컨트톨러(210)는 메모리 해제 명령에 응답하여 컨텍스트 속성 테이블에서 할당 영역의 시작 주소(a13)를 검색하고, 이에 대응하는 할당 영역의 필요/불필요 속성을 '불필요'로 업데이트할 수 있다. 그 결과, 도 5에 도시된 바와 같이, 비휘발성 메모리(220) 내의 할당 영역(a13)은 빈 공간(예컨대, 해칭 없음)으로 변경되어, 다른 프로세스 또는 스레드에게 할당될 수 있는 상태로 변경된다.
메모리 컨트롤러(210)는 컨텍스트 속성 테이블에서 필요/불필요 속성이 '필요(valid)'인 비휘발성 메모리 영역들에 대하여 웨어 레벨링 동작을 수행할 수 있다.
메모리 컨트롤러(210)는 필요/불필요 속성이 '불필요'인 할당 영역에 대해서는 내부 연산, 예컨대, 웨어 레벨링 동작을 수행하지 않음으로써 내부 연산 처리량을 감소시킬 수 있다. 비휘발성 메모리(220)는 일반적으로 DRAM에 비해 유한한 프로그램/소거 사이클을 갖는다. 그에 따라, 비휘발성 메모리(220) 내의 특정 메모리 셀들에만 빈번하게 데이터가 저장 및 삭제될 경우, 빈번하게 액세스되는 메모리 셀은 데이터를 저장할 수 없는 데드셀(dead cell)이 되어 오류를 발생시키게 되고, 메인 메모리 장치(200)는 오류 정정에 많은 시간과 연산 처리량을 소모하게 되며, 심지어 메인 메모리 장치(200) 전체가 불량이 될 수도 있다. 이러한 문제를 방지하기 위하여, 메모리 컨트롤러(210)는 데이터들의 저장 및 삭제가 균등하게 메모리 셀들에서 이루어지도록, 웨어 레벨링 동작이 수행될 수 있다. 일 예에 따르면, 빈번하게 데이터가 업데이트되는 메모리 셀의 위치와 거의 액세스되지 않는 메모리 셀의 위치를 서로 교환 또는 재배치함으로써, 메모리 셀들이 균등하게 재기록되게 할 수 있다.
일 실시예에 따르면, 메모리 컨트롤러(210)는 필요/불필요 속성이 '불필요'인 할당 영역에 대해서는 웨어 레벨링 동작을 수행하지 않을 수 있다. 불필요 속성을 갖는 할당 영역 내의 데이터는 더 이상 사용하지 않는 데이터이므로, 웨어 레벨링 동작을 위해 불필요 데이터를 재배치하기 위한 연산이 수행되지 않아도 된다.
다른 실시예에 따르면, 메모리 컨트롤러(210)는 웨어 레벨이 높은 할당 영역의 데이터를 웨어 레벨(wear level)이 낮고 불필요 속성을 갖는 할당 영역으로 재배치시킴으로써 불필요 속성을 갖는 할당 영역 내의 데이터를 삭제하고 웨어 레벨링 동작을 수행할 수 있다.
일 실시예에 따르면, 비휘발성 메모리(220)는 전원이 제거되어도 내부에 데이터가 사라지지 않으므로, 메모리 컨트롤러(210)는 메모리 해제 명령에 응답하여 할당 영역(a13)의 데이터를 실제로 삭제할 수 있다. 예를 들면, 프로세서(100)는 할당 영역(a13)에 대해 할당 해제하고자 할 경우, 할당 영역의 시작 주소(a13)를 포함하는 메모리 해제 명령(예컨대, free)을 메모리 컨트롤러(210)에 제공할 수 있다. 메모리 컨트톨러(210)는 메모리 해제 명령을 수신하고, 메모리 해제 명령(예컨대, free)으로부터 컨텍스트 속성 정보 중에서 필요/불필요 속성이 '불필요'로 변경되었음을 감지할 수 있다.
메모리 컨트롤러(210)는 메모리 해제 명령에 응답하여 컨텍스트 속성 테이블에서 할당 영역의 시작 주소(a13)를 검색하고, 이에 대응하는 할당 영역의 필요/불필요 속성을 '불필요'로 업데이트할 수 있다. 또한, 메모리 컨트롤러(210)는 메모리 해제 명령에 응답하여 할당 영역(a13)의 데이터를 실제로 삭제하거나, 할당 영역(a13)에 미리 설정된 임의의 데이터(예컨대, '1111' 또는 '0000')를 저장할 수 있다. 메모리 컨트롤러(210)는 비휘발성 메모리(220) 내의 불필요 데이터를 완전히 삭제함으로써 비휘발성 메모리(220)가 도난되거나 해킹되더라도 내부에 저장된 데이터를 보호할 수 있다.
다른 실시예에 따르면, 할당 영역들(a14, a15)는 보안 속성을 갖는다. 보안 속성을 갖는 할당 영역들(a14, a15)은 암호화되어 비휘발성 메모리(220)에 저장될 수 있다. 메모리 컨트롤러(210)는 비휘발성 메모리(220)에 데이터를 저장할 때 데이터를 암호화하고, 비휘발성 메모리(220)로부터 데이터를 독출할 때 암호화된 데이터를 복호화할 수 있다. 메모리 해제 명령 등의 이유로 할당 영역(a14)의 필요/불필요 속성이 '불필요'로 업데이트되더라도, 할당 영역(a14) 내의 데이터는 암호화되어 보안에 문제가 없으므로, 할당 영역(a14) 내의 실제 데이터는 실제로 삭제되지 않을 수 있다.
또 다른 실시예에 따르면, 프로세스(100)가 메모리 컨트롤러(210)에 독출 명령 및 기록 명령을 제공할 때, 컨텍스트 속성 정보를 포함시켜 제공할 수도 있다. 메모리 컨트롤러(210)는 전송된 컨텍스트 속성 정보를 참조하여 비휘발성 메모리(220)를 관리할 수 있다. 예컨대, 메모리 컨트롤러(210)는 전송된 컨텍스트 속성 정보를 기초로 컨텍스트 속성 테이블을 업데이트 할 수 있다.
도 6은 본 발명의 예시적인 다른 실시예에 따른 컴퓨터 시스템을 간략하게 나타내는 블록도이다.
도 6을 참조하면, 컴퓨터 시스템은 프로세서(100) 및 메인 메모리 장치(200a)를 포함한다. 메인 메모리 장치(200a)는 비휘발성 메모리(220), 휘발성 메모리(230), 및 비휘발성 메모리(220)와 휘발성 메모리(230)를 제어하는 메모리 컨트롤러(210)를 포함한다.
프로세서(100)는 메인 메모리 장치(200a)에 연결되며, 메인 메모리 장치(200a)에 로딩된 응용 프로그램을 실행한다. 프로세서(100)는 할당 영역의 컨텍스트 속성 정보를 포함하는 명령(CMD)을 메모리 컨트롤러(210)에 제공한다. 메모리 컨트롤러(210)는 명령(CMD)을 수신하고 컨텍스트 속성 정보를 활용하여 비휘발성 메모리(220)와 휘발성 메모리(230)를 관리한다. 응용 프로그램은 비휘발성 메모리(220)와 휘발성 메모리(230)에 로딩될 수 있다.
일 실시예에 따르면, 프로세서(100)는 메모리 할당 명령(CMD)에 할당 영역(예컨대, 할당받고자 하는 영역)의 컨텍스트 속성 정보를 포함시켜 메모리 컨트롤러(210)에 제공할 수 있다. 메모리 할당 명령(CMD)에는 할당 영역의 크기(예컨대, 할당받고자 하는 영역의 크기)도 포함된다. 메모리 컨트롤러(210)는 메모리 할당 명령(CMD)에 응답하여 컨텍스트 속성 정보를 참조하여 제1 할당 영역을 비휘발성 메모리(220) 또는 휘발성 메모리(230) 중 어느 하나 내에 할당할 수 있다. 메모리 컨트롤러(210)는 제1 할당 영역의 시작 주소(ADDR)를 프로세서(100)에 반환할 수 있다.
컨텍스트 속성 정보는 할당 영역의 속도 속성일 수 있다. 속도 속성은 할당 영역의 액세스 빈도와 관련될 수 있다. 액세스 빈도가 높을 경우, 속도 속성이 '빠름'일 수 있다. 예컨대, 프로그램 코드의 반복문(예컨대, for loop)에서 증가 변수(예컨대, i)에 대응하는 할당 영역은 반복적으로 액세스될 것이므로, 속도 속성이 '빠름'일 수 있다. 반면에, 동영상과 같이 파일의 크기가 큰 파일은 액세스 빈도가 높지 않기 때문에 속도 속성이 '빠름'이 되기 어렵다. 메모리 컨트롤러(210)는 속도 속성이 '빠름'인 할당 영역(도 4의 a16)에 대해서는 휘발성 메모리(230)에 할당하고, 그렇지 않은 할당 영역에 대해서는 비휘발성 메모리(220)에 할당할 수 있다. 액세스 빈도가 높은 할당 영역을 액세스 속도가 높은 매체에 할당함으로써 시스템 전체 속도가 높아질 수 있다.
일 실시예에 따르면, 메모리 컨트롤러(210)는 제1 할당 영역의 시작 주소(ADDR), 크기, 및 컨텍스트 속성 정보를 컨텍스트 속성 테이블의 형태로 휘발성 메모리(230)에 저장할 수 있다. 휘발성 메모리(230)는 비휘발성 메모리(220)에 비해 액세스 속도가 빠르고 내구성이 높기 때문에 액세스 빈도가 높은 데이터를 저장하기에 적합하다. 따라서, 자주 액세스될 가능성이 높은 제1 할당 영역의 시작 주소(ADDR), 크기, 및 컨텍스트 속성 정보를 포함하는 컨텍스트 속성 테이블은 휘발성 메모리(230)에 저장될 수 있다.
컨텍스트 속성 정보는 할당 영역의 속도 속성 외에, 할당 영역의 유효 기간 속성, 할당 영역의 순차/비순차 액세스 속성, 할당 영역의 확장/비확장 속성, 할당 영역의 필요/불필요 속성, 할당 영역의 보안 속성, 또는 상기 속성들의 적어도 하나의 조합을 포함할 수 있다. 예를 들면, 도 4에 예시적으로 도시된 컨텍스트 속성 테이블은 휘발성 메모리(230)에 저장될 수 있다.
도 7은 본 발명의 예시적인 실시예에 따른 컴퓨터 시스템의 동작 방법을 나타내는 흐름도이다.
도 7을 참조하면, 프로세서(100)는 할당 영역의 컨텍스트 속성 정보를 포함하는 명령(CMD)을 메인 메모리 장치(200)의 메모리 컨트롤러(210)에 제공한다(S10). 메모리 컨트롤러(210)는 명령(CMD)을 수신하고 컨텍스트 속성 정보를 활용하여 메인 메모리 장치(200)의 비휘발성 메모리(220)를 관리한다(S20).
프로세서(100)는 메인 메모리 장치(200)에 전기적으로 연결되고, 비휘발성 메모리(220)에 로딩된 응용 프로그램을 실행한다. 프로세서(100)는 비휘발성 메모리(220)에 바이트 단위로 액세스할 수 있다. 예를 들면, 프로세서(100)는 비휘발성 메모리(220)에 바이트 단위로 데이터를 기록하거나 독출할 수 있다. 프로세서(100)는 비휘발성 메모리(220)에 데이터를 직접 재기록할 수 있다. 예를 들면, 프로세서(100)는 SSD의 플래시 메모리와 달리, 저장된 데이터를 먼저 삭제한 후에 데이터를 재기록하지 않고, 저장된 데이터 상에 새로운 데이터를 덮어쓰기 할 수 있다.
메인 메모리 장치(200)는 프로세서(100)가 응용 프로그램을 실행하기 위한 메모리 공간을 프로세서(100)에게 제공하고 프로세서(100)에 의해 수행된 연산의 결과를 일시적으로 저장한다. 메인 메모리 장치(200)는 전원이 제거되더라도 저장된 데이터가 사라지지 않는 비휘발성 메모리(220)를 포함한다. 일 예에 따르면, 비휘발성 메모리(220)는 PRAM, RRAM, 또는 STT-MRAM 중 하나일 수 있다.
단계(S10)에서, 프로세서(100)는 할당 영역의 크기 및 컨텍스트 속성 정보를 포함하는 메모리 할당 명령(CMD)을 메모리 컨트롤러(210)에 제공할 수 있다. 단계(S20)에서, 메모리 컨트롤러(210)는 명령(CMD)에 응답하여 컨텍스트 속성 정보를 참조하여 비휘발성 메모리(220) 내에 제1 할당 영역을 할당하고 제1 할당 영역의 시작 주소(ADDR)를 프로세서(100)에 반환할 수 있다.
본 명세서에서, '할당 영역(Allocation region)'은 문맥에 따라서 프로세서(100)가 메모리 컨트롤러(210)에 제공하는 메모리 할당 명령(CMD)을 통해 비휘발성 메모리(220) 내에 '할당받고자 하는 영역'을 의미할 수도 있고, 메모리 할당 명령(CMD)을 통해 비휘발성 메모리(220) 내에 실제로 '할당된 영역'을 의미할 수도 있다. '제1 할당 영역'은 문맥에 따라 '할당 영역'과 동일한 의미를 가질 수도 있고, 다른 의미를 가질 수도 있다. '제1 할당 영역'은 특별히 반대의 기재가 없는 한, 메모리 컨트롤러(210)가 프로세서(100)로부터의 명령(CMD)에 응답하여 비휘발성 메모리(220) 내에 실제로 할당한 영역을 의미한다. 즉, 일반적으로 '제1 할당 영역'은 '할당받고자 하는 영역'을 의미하고자 의도하지는 않는다. 또한, '제1 할당 영역'이라는 용어는 문맥에 따라서 비휘발성 메모리(220) 내에 실제로 '할당된 영역들'을 대표적으로 지칭하기 위해 사용될 수 있다.
단계(S20)에서, 메모리 컨트롤러(210)는 제1 할당 영역의 시작 주소, 크기, 및 컨텍스트 속성 정보를 컨텍스트 속성 테이블에 저장할 수 있다. 컨텍스트 속성 테이블은 비휘발성 메모리(220) 내에 저장될 수 있다. 컨텍스트 속성 테이블은 도 4에 도시된 바와 같이 각 할당 영역들의 시작 주소, 크기 및 컨텍스트 속성 정보를 포함할 수 있다.
일부 예들에 따르면, 컨텍스트 속성 테이블에는 프로세서(100)에 할당된 할당 영역들뿐만 아니라 다른 영역들에 대한 정보도 저장될 수 있다. 예를 들면, 컨텍스트 속성 테이블에는 초기 메모리 영역, 확장 예약 영역 등에 대한 정보가 저장될 수 있다.
컨텍스트 속성 정보는 필요/불필요(valid/invalid) 속성을 포함할 수 있다.
일 실시예에 따르면, 단계(S10)에서, 프로세서(100)는 할당 영역의 크기 및 컨텍스트 속성 정보를 포함하는 메모리 할당 명령(CMD)을 메모리 컨트롤러(210)에 제공할 수 있다. 단계(S20)에서, 메모리 컨트롤러(210)는 메모리 할당 명령(CMD)에 응답하여 컨텍스트 속성 정보를 참조하여 비휘발성 메모리(220) 내에 제1 할당 영역을 할당하고 제1 할당 영역의 시작 주소(ADDR)를 프로세서(100)에 반환할 수 있다. 또한, 메모리 컨트롤러(210)는 메모리 할당 명령(CMD)에 응답하여 컨텍스트 속성 테이블에서 제1 할당 영역에 대한 필요/불필요 속성을 '필요(valid)'로 업데이트할 수 있다.
일 실시예에 따르면, 단계(S10)에서, 프로세서(100)는 할당 해제하려는 할당 영역의 시작 주소를 포함하는 메모리 해제 명령(CMD)(예컨대, free)을 메모리 컨트롤러(210)에 제공할 수 있다. 단계(S20)에서, 메모리 컨트롤러(210)는 메모리 해제 명령(CMD)에 응답하여 컨텍스트 속성 테이블에서 상기 시작 주소를 갖는 할당 영역에 대한 필요/불필요 속성을 '불필요(invalid)'로 업데이트할 수 있다. 메모리 컨트롤러(210)는 할당 해제된 할당 영역을 다른 프로세스 또는 스레드에게 할당할 수 있다.
일 실시예에 따르면, 메모리 컨트롤러(210)는 컨텍스트 속성 테이블에서 필요/불필요 속성이 '필요(valid)'인 비휘발성 메모리 영역들에 대하여 웨어 레벨링 동작을 수행할 수 있다. 예를 들면, 메모리 컨트롤러(210)는 컨텍스트 속성 테이블에서 필요/불필요 속성이 '불필요(valid)'인 비휘발성 메모리 영역들에 대하여 내부 연산, 예컨대, 웨어 레벨링 동작을 수행하지 않을 수 있다.
다른 실시예에 따르면, 메모리 컨트롤러(210)는 메모리 해제 명령에 응답하여 컨텍스트 속성 테이블에서 할당 해제하려는 할당 영역의 시작 주소를 검색하고, 상기 할당 영역의 필요/불필요 속성을 '불필요'로 업데이트하고, 상기 할당 영역에 실제로 저장된 데이터를 삭제하거나, 상기 할당 영역에 미리 설정된 임의의 데이터를 저장할 수 있다. 메모리 컨트롤러(210)는 비휘발성 메모리(220) 내의 불필요 데이터를 완전히 제거함으로써 비휘발성 메모리(220)의 도난 또는 해킹이 발생하더라도 내부에 저장된 데이터를 보호할 수 있다.
컨텍스트 속성 정보는 할당 영역의 유효 기간 속성을 포함할 수 있다.
일 실시예에 따르면, 단계(S10)에서, 프로세서(100)는 할당 영역의 유효 기간 속성을 포함하는 컨텍스트 속성 정보를 포함하는 메모리 할당 명령(CMD)을 메모리 컨트롤러(210)에 제공할 수 있다. 단계(S20)에서, 메모리 컨트롤러(210)는 메모리 할당 명령(CMD)을 수신하고, 컨텍스트 속성 테이블을 참조한다. 메모리 컨트롤러(210)는 메모리 할당 명령(CMD)에 포함된 유효 기간 속성과 동일한 유효 기간 속성을 갖는 할당 영역을 컨텍스트 속성 테이블에서 검색한다. 메모리 컨트롤러(210)는 제1 할당 영역을 메모리 할당 명령(CMD)에 포함된 유효 기간 속성과 동일한 유효 기간 속성을 갖는 할당 영역과 물리적으로 인접하게 비휘발성 메모리(220) 내에 할당하고, 제1 할당 영역의 시작 주소(ADDR)를 프로세서(100)에 반환한다.
일 실시예에 따르면, 유효 기간 속성은 임시, 영구, 또는 미리 설정된 기간 중 하나일 수 있다. 미리 설정된 기간은 예컨대 1일, 1주, 1달, 10일, 12시간 등일 수 있다. 할당 영역이 할당될 때 유효 기간이 비슷한 할당 영역들이 비슷한 위치에 할당됨에 따라 자연적으로 압축(compaction)이 발생하는 효과가 발생할 수 있으며, 비휘발성 메모리(220)의 공간이 더욱 효율적으로 사용될 수 있다. 비휘발성 메모리(220)는 비휘발성 메모리에 비해 액세스 속도가 느리고 프로그램/소거 사이클이 유한하기 때문에 재배치 동작에 제한이 있기 때문에, 할당 영역을 처음에 할당할 때 공간 효율적으로 할당하는 것이 중요하다.
컨텍스트 속성 정보는 할당 영역의 순차/비순차 액세스 속성을 포함할 수 있다.
일 실시예에 따르면, 단계(S10)에서, 프로세서(100)는 할당 영역의 순차/비순차 액세스 속성을 포함하는 컨텍스트 속성 정보를 포함하는 메모리 할당 명령(CMD)을 메모리 컨트롤러(210)에 제공할 수 있다. 단계(S20)에서, 메모리 컨트롤러(210)는 메모리 할당 명령(CMD)에 포함된 컨텍스트 속성 정보가 순차 액세스 속성을 갖는 경우, 제1 할당 영역을 비휘발성 메모리(220) 내의 물리적으로 연속된 영역에 할당하고, 제1 할당 영역의 시작 주소(ADDR)를 프로세서(100)에 반환한다.
컨텍스트 속성 정보는 상기 할당 영역의 확장/비확장 속성을 포함할 수 있다.
일 실시예에 따르면, 단계(S10)에서, 프로세서(100)는 할당 영역의 확장/비확장 속성을 포함하는 컨텍스트 속성 정보를 포함하는 메모리 할당 명령(CMD)을 메모리 컨트롤러(210)에 제공할 수 있다. 단계(S20)에서, 메모리 컨트롤러(210)는 메모리 할당 명령(CMD)에 포함된 컨텍스트 속성 정보가 확장 속성을 갖는 경우, 제1 할당 영역을 비휘발성 메모리(220) 내에 물리적으로 연속되고 할당하려는 크기보다 큰 영역 내에 할당하고, 제1 할당 영역의 시작 주소(ADDR)를 프로세서(100)에 반환한다.
일 실시예에 따르면, 단계(S20)에서, 메모리 컨트롤러(210)는 확장 속성을 갖는 제1 할당 영역에 인접한 영역의 확장/비확장 속성을 '예약'으로 업데이트할 수 있다. 상기 인접한 영역은 제1 할당 영역이 할당되기 전에 빈 영역 또는 미사용 영역일 수 있다.
메인 메모리 장치(200)는 메모리 컨트롤러(210)에 의해 제어되는 휘발성 메모리(230)를 더 포함할 수 있다.
일 실시예에 따르면, 단계(210)에서, 프로세서(100)는 할당 영역의 크기, 및 할당 영역의 속도 속성을 포함하는 상기 컨텍스트 속성 정보를 포함하는 메모리 할당 명령(CMD)을 메모리 컨트롤러(210)에 제공할 수 있다. 단계(220)에서, 메모리 컨트롤러(210)는 메모리 할당 명령(CMD)을 수신하고, 메모리 할당 명령(CMD)에 포함된 속도 속성을 참조하여, 제1 할당 영역을 비휘발성 메모리(220) 또는 휘발성 메모리(230) 중 하나 내에 할당할 수 있다. 예컨대, 메모리 컨트롤러(210)는 속도 속성이 '빠름'인 경우, 제1 할당 영역을 휘발성 메모리(230)에 할당하고, 그렇지 않은 경우, 제1 할당 영역을 비휘발성 메모리(220)에 할당할 수 있다.
일 실시예에 따르면, 메모리 컨트롤러(210)는 제1 할당 영역의 시작 주소, 크기, 및 상기 컨텍스트 속성 정보를 컨텍스트 속성 테이블에 저장할 수 있다.
컨텍스트 속성 테이블은 휘발성 메모리(230) 내에 저장될 수 있다. 메모리 컨트롤러(210)는 휘발성 메모리(230)와 비휘발성 메모리(220)의 제어 및 관리를 위해 빈번하게 컨텍스트 속성 테이블에 액세스하므로, 액세스 속도가 높은 휘발성 메모리(230)에 컨텍스트 속성 테이블이 저장되는 것이 효율적이다.
도 8a는 본 발명의 일 실시예에 따른 메모리 모듈을 나타내는 블록도이다.
도 8a를 참조하면, 메모리 모듈(2000)은 비휘발성 메모리 칩들(2110, 이하 NVM 칩들), 메모리 컨트롤러(2300), 커넥터(2400), 인쇄 회로 기판(2500)을 포함한다.
NVM 칩들(2110)은 메모리 컨트롤러(2300)의 일 측면(2100) 또는 양 측면(2100, 2200)에 배치될 수 있다. NVM 칩들(2110)은 인쇄 회로 기판(2500)의 상면과 하면에 결합될 수 있다.
커넥터(2400)는 도전선들(미 도시)을 통해 NVM 칩들(2110)과 전기적으로 연결된다. 커넥터(2400)는 컴퓨터 시스템의 메인 보드에 실장된 슬롯에 연결될 수 있다.
메모리 컨트롤러(2300)는 NVM 칩들(2110) 내부의 NVM 셀들의 데이터의 기록/삭제 등을 제어한다. 메모리 컨트롤러(2300)는 도 8a에 도시된 바와 같이 인쇄 회로 기판(2500) 상에 별도의 칩으로 존재할 수 있다. 다른 예에 따르면, 메모리 컨트롤러(2300)는 NVM 칩들(2110) 내부에 함께 존재하거나, 메모리 모듈(2000) 외부에 존재할 수도 있다.
메모리 컨트롤러(2300)는 프로세서(3110)로부터 할당 영역의 컨텍스트 속성 정보를 포함하는 명령을 수신할 수 있다. 메모리 컨트롤러(2300)는 수신된 명령에 포함되는 컨텍스트 속성 정보를 활용하여 NVM 칩들(2110) 내부의 NVM 셀들을 관리 및 제어할 수 있다. NVM 칩들(2110)은 PRAM 칩들, RRAM 칩들, 또는 STT-MRAM 칩들 중 하나일 수 있다.
일 실시예에 따르면, 메모리 컨트롤러(2300)는 프로세서(3110)로부터 할당 영역(예컨대, 할당받고자 하는 영역)의 크기와 컨텍스트 속성 정보를 포함하는 메모리 할당 명령을 수신할 수 있다. 메모리 컨트롤러(2300)는 메모리 할당 명령을 수신하고, 컨텍스트 속성 정보를 참조하여 NVM 칩들(2110) 내에 메모리 할당 명령에 따른 제1 할당 영역을 할당할 수 있다. 실제로 할당된 제1 할당 영역은 컨텍스트 속성 정보에 부합하도록 선택되므로, 메모리 모듈(2000)의 내부 연산량이 감소하고 처리 속도가 높아질 수 있다.
도 8b는 본 발명의 다른 실시예에 따른 메모리 모듈을 나타내는 블록도이다.
도 8b를 참조하면, 메모리 모듈(2000a)은 NVM 칩들(2110), DRAM 칩들(2210), 메모리 컨트롤러(2300a), 커넥터(2400), 인쇄 회로 기판(2500)을 포함한다.
NVM 칩들(2110)은 메모리 컨트롤러(2300a)의 일 측면(2100)에 배치되고, DRAM 칩들(2210)은 메모리 컨트롤러(2300a)의 다른 측면(2200)에 배치될 수 있다. 그러나, 이는 예시적이며, NVM 칩들(2110)과 DRAM 칩들(2210)의 배치, 위치, 개수는 본 발명을 한정하지 않는다. 예를 들면, NVM 칩들(2110)은 인쇄 회로 기판(2500)의 제1 면에 배치되고, DRAM 칩들(2210)은 인쇄 회로 기판(2500)의 제2 면에 배치될 수도 있다. 다른 예에 따르면, 적어도 하나의 DRAM 칩(2210)이 메모리 컨트롤러(2300a)에 인접하게 배치되어, NVM 칩들(2110)의 상위 레벨의 캐시 메모리로 기능할 수도 있다.
커넥터(2400)는 도전선들(미 도시)을 통해 NVM 칩들(2110) 및 DRAM 칩들(2210)에 전기적으로 연결된다. 커넥터(2400)는 컴퓨터 시스템의 메인 보드에 실장된 슬롯에 연결될 수 있다.
메모리 컨트롤러(2300a)는 NVM 칩들(2110) 내부의 NVM 셀들의 데이터의 기록/삭제 등을 제어하고, DRAM 칩들(2210) 내부의 DRAM 셀들의 데이터의 기록/삭제/리프레시 등을 제어한다. 메모리 컨트롤러(2300)는 도 8b에 도시된 바와 같이 인쇄 회로 기판(2500) 상에 별도의 칩으로 존재하거나, 다른 예에 따르면 메모리 모듈(2000a) 외부에 존재할 수도 있다.
메모리 컨트롤러(2300a)는 프로세서(3110)로부터 할당 영역의 컨텍스트 속성 정보를 포함하는 명령을 수신할 수 있다. 메모리 컨트롤러(2300)는 수신된 명령에 포함되는 컨텍스트 속성 정보를 활용하여 NVM 칩들(2110) 내부의 NVM 셀들, 및 DRAM 칩들(2210) 내부의 DRAM 셀들을 관리 및 제어할 수 있다.
일 실시예에 따르면, 메모리 컨트롤러(2300a)는 프로세서(3110)로부터 할당 영역의 크기와 컨텍스트 속성 정보를 포함하는 메모리 할당 명령을 수신할 수 있다. 일 예에 따르면, 컨텍스트 속성 정보는 할당 영역의 속도 속성일 수 있다. 프로세서(3110)가 할당 영역(예컨대, 할당받고자 하는 영역)에 액세스할 빈도가 높을 것으로 예상되는 경우, 할당 영역의 속도 속성을 빠름으로 설정할 수 있다. 속도 속성이 '빠름'인 메모리 할당 명령이 메모리 컨트롤러(2300a)에 수신되는 경우, 메모리 컨트롤러(2300a)는 제1 할당 영역을 DRAM 칩들(2210)에 할당할 수 있다. DRAM 칩들(2210)이 NVM 칩들(2210)에 비해 액세스 속도가 빠르기 때문에, 액세스 빈도가 높을 경우, 전체 속도가 더 빨라지게 된다. 따라서, 메모리 모듈(2000a)을 포함하는 컴퓨터 시스템의 전체 처리 속도는 개선될 수 있다.
도 9는 본 발명의 일 실시예에 따른 메인 보드 및 복수의 메모리 모듈을 나타내는 블록도이다.
도 9를 참조하면, 메인 보드(3100)는 컴퓨터 시스템(3000)에 기본적인 부품을 장착하기 위한 기판이며, 메모리 모듈(3310)들이 장착될 수 있다.
메모리 모듈(3310)들은 각각 슬롯, 예컨대, DIMM(dual in-line memory module) 슬롯 또는 소켓을 통해 메인 보드(3100)에 연결될 수 있다. 일 예에 따르면, 메모리 모듈(3310)은 복수의 영역들(3200, 3300)로 구분되어 메인 보드(3100)에 연결될 수 있다.
메인 기판(3100)에는 프로세서(3110), 메모리 모듈들(3310) 외에 다양한 전자부품들이 각각 실장될 수 있다. 메인 보드(3100)에는 프로세서(3110), 메모리 모듈들(3310), 및 전자 부품들 각각이 서로 전기적으로 접속할 수 있도록 회로 패턴이 형성될 수 있다.
메모리 모듈들(3310)은 비휘발성 메모리 및 이를 제어하는 메모리 컨트롤러를 각각 포함하며, 프로세서(3110)의 구동을 위한 메인 메모리 장치로 동작한다. 프로세서(3110)는 할당 영역의 컨텍스트 속성 정보를 포함하는 명령을 메모리 모듈들(3310)에 제공한다. 메모리 모듈들(3310)의 메모리 컨트롤러는 프로세서(3110)로부터의 명령을 수신하고 명령에 포함되는 컨텍스트 속성 정보를 활용하여 비휘발성 메모리를 관리한다.
일 실시예에 따르면, 프로세서(3110)는 할당 영역의 크기와 컨텍스트 속성 정보를 포함하는 메모리 할당 명령을 메모리 모듈(3310)에 제공할 수 있다. 메모리 모듈(3310)은 메모리 할당 명령을 수신하고, 컨텍스트 속성 정보를 참조하여 비휘발성 메모리 내에 메모리 할당 명령에 따른 할당 영역을 할당할 수 있다. 할당된 할당 영역은 프로세서(3110)가 요구하는 할당 영역의 컨텍스트 속성 정보에 부합하므로, 프로세서(3110)의 메모리 모듈들(3310)로의 액세스 속도가 개선되고, 메모리 모듈들(3310)의 내부 연산 처리량은 감소될 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (20)

  1. 비휘발성 메모리, 및 상기 비휘발성 메모리를 제어하는 메모리 컨트롤러를 포함하는 메인 메모리 장치; 및
    상기 메인 메모리 장치에 연결되어 상기 비휘발성 메모리에 로딩된 응용 프로그램을 실행하고, 할당 영역의 컨텍스트 속성 정보를 포함하는 명령을 상기 메모리 컨트롤러에 제공하는 프로세서를 포함하고,
    상기 메모리 컨트롤러는 상기 명령을 수신하고 상기 컨텍스트 속성 정보를 활용하여 상기 비휘발성 메모리를 관리하는 것을 특징으로 하는 컴퓨터 시스템.
  2. 제1 항에 있어서,
    상기 명령은 상기 할당 영역의 크기 및 상기 컨텍스트 속성 정보를 포함하는 메모리 할당 명령이고,
    상기 메모리 컨트롤러는 상기 메모리 할당 명령에 응답하여 상기 컨텍스트 속성 정보를 참조하여 상기 비휘발성 메모리 내에 제1 할당 영역을 할당하고 상기 제1 할당 영역의 시작 주소를 상기 프로세서에 반환하는 것을 특징으로 하는 컴퓨터 시스템.
  3. 제2 항에 있어서,
    상기 메모리 컨트롤러는 상기 제1 할당 영역의 시작 주소, 크기, 및 상기 컨텍스트 속성 정보를 컨텍스트 속성 테이블에 저장하고,
    상기 컨텍스트 속성 테이블은 각 할당 영역들의 시작 주소, 크기 및 컨텍스트 속성 정보를 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  4. 제3 항에 있어서,
    상기 컨텍스트 속성 정보는 각 할당 영역들의 유효 기간 속성을 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  5. 제4 항에 있어서,
    상기 메모리 컨트롤러는 상기 컨텍스트 속성 테이블을 참조하여 상기 제1 할당 영역을 상기 제1 할당 영역의 상기 유효 기간 속성과 동일한 유효 기간 속성을 갖는 할당 영역과 물리적으로 인접하게 할당하는 것을 특징으로 하는 컴퓨터 시스템.
  6. 제3 항에 있어서,
    상기 컨텍스트 속성 정보는 각 할당 영역들의 순차/비순차 액세스 속성을 포함하고,
    상기 컨텍스트 속성 정보에 따라 상기 제1 할당 영역이 순차 액세스 속성을 갖는 경우, 상기 메모리 컨트롤러는 상기 제1 할당 영역을 상기 비휘발성 메모리 내의 물리적으로 연속된 영역에 할당하는 것을 특징으로 하는 컴퓨터 시스템.
  7. 제3 항에 있어서,
    상기 컨텍스트 속성 정보는 각 할당 영역들의 확장/비확장 속성을 포함하고,
    상기 컨텍스트 속성 정보에 따라 상기 제1 할당 영역이 확장 속성을 갖는 경우, 상기 메모리 컨트롤러는 상기 제1 할당 영역을 상기 비휘발성 메모리 내에 물리적으로 연속되고 할당하려는 크기보다 큰 영역 내에 할당하는 것을 특징으로 하는 컴퓨터 시스템.
  8. 제3 항에 있어서,
    상기 컨텍스트 속성 정보는 필요/불필요(valid/invalid) 속성을 포함하고,
    상기 메모리 컨트롤러는 상기 메모리 할당 명령에 응답하여 상기 컨텍스트 속성 테이블에서 상기 제1 할당 영역에 대한 상기 필요/불필요 속성을 '필요(valid)'로 업데이트하는 것을 특징으로 하는 컴퓨터 시스템.
  9. 제8 항에 있어서,
    상기 프로세서는 할당 해제하려는 할당 영역의 시작 주소를 포함하는 메모리 해제 명령을 상기 메모리 컨트롤러에 제공하고,
    상기 메모리 컨트롤러는 상기 메모리 해제 명령에 응답하여 상기 컨텍스트 속성 테이블에서 상기 시작 주소를 갖는 할당 영역에 대한 상기 필요/불필요 속성을 '불필요(invalid)'로 업데이트하는 것을 특징으로 하는 컴퓨터 시스템.
  10. 제1 항에 있어서,
    상기 메인 메모리 장치는 상기 메모리 컨트롤러에 의해 제어되는 휘발성 메모리를 더 포함하고,
    상기 명령은 할당 영역의 크기, 및 상기 할당 영역의 속도 속성을 포함하는 상기 컨텍스트 속성 정보를 포함하는 메모리 할당 명령이며,
    상기 메모리 컨트롤러는 상기 속도 속성을 참조하여 제1 할당 영역을 상기 비휘발성 메모리 또는 상기 휘발성 메모리 중 하나 내에 할당하는 것을 특징으로 하는 컴퓨터 시스템.
  11. 제10 항에 있어서,
    상기 메모리 컨트롤러는 상기 제1 할당 영역의 시작 주소, 크기, 및 상기 컨텍스트 속성 정보를 컨텍스트 속성 테이블에 저장하고,
    상기 컨텍스트 속성 테이블은 상기 휘발성 메모리 내에 저장되는 것을 특징으로 하는 컴퓨터 시스템.
  12. 프로세서에 의해, 할당 영역의 컨텍스트 속성 정보를 포함하는 명령을 메인 메모리 장치의 메모리 컨트롤러에 제공하는 단계; 및
    상기 메모리 컨트롤러에 의해, 상기 명령을 수신하고 상기 컨텍스트 속성 정보를 활용하여 상기 메인 메모리 장치의 비휘발성 메모리를 관리하는 단계를 포함하는 컴퓨터 시스템의 동작 방법.
  13. 제12 항에 있어서,
    상기 프로세서에 의해, 상기 할당 영역의 크기 및 상기 컨텍스트 속성 정보를 포함하는 메모리 할당 명령을 상기 메모리 컨트롤러에 제공하는 단계; 및
    상기 메모리 컨트롤러에 의해, 상기 컨텍스트 속성 정보를 참조하여 상기 비휘발성 메모리 내에 제1 할당 영역을 할당하고 상기 제1 할당 영역의 시작 주소를 상기 프로세서에 반환하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 시스템의 동작 방법.
  14. 제13 항에 있어서,
    상기 메모리 컨트롤러에 의해, 상기 제1 할당 영역의 시작 주소, 크기, 및 상기 컨텍스트 속성 정보를 상기 비휘발성 메모리 내의 컨텍스트 속성 테이블에 저장하는 단계를 포함하고,
    상기 컨텍스트 속성 테이블은 각 할당 영역들의 시작 주소, 크기 및 컨텍스트 속성 정보를 포함하는 것을 특징으로 하는 컴퓨터 시스템의 동작 방법.
  15. 제14 항에 있어서,
    상기 컨텍스트 속성 정보는 필요/불필요(valid/invalid) 속성을 포함하며,
    상기 메모리 컨트롤러에 의해, 상기 메모리 할당 명령에 응답하여 상기 컨텍스트 속성 테이블에서 상기 제1 할당 영역에 대한 상기 필요/불필요 속성을 '필요(valid)'로 업데이트하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 시스템의 동작 방법.
  16. 제15 항에 있어서,
    상기 프로세서에 의해, 할당 해제하려는 할당 영역의 시작 주소를 포함하는 메모리 해제 명령을 상기 메모리 컨트롤러에 제공하는 단계; 및
    상기 메모리 컨트롤러에 의해, 상기 메모리 해제 명령에 응답하여 상기 컨텍스트 속성 테이블에서 상기 시작 주소를 갖는 할당 영역에 대한 상기 필요/불필요 속성을 '불필요(invalid)'로 업데이트하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 시스템의 동작 방법.
  17. 제14 항에 있어서,
    상기 컨텍스트 속성 정보는 상기 할당 영역의 유효 기간 속성을 포함하고,
    상기 동작 방법은, 상기 메모리 컨트롤러에 의해, 상기 컨텍스트 속성 테이블을 참조하여 상기 제1 할당 영역을 상기 유효 기간 속성과 동일한 유효 기간 속성을 갖는 할당 영역과 물리적으로 인접하게 할당하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 시스템의 동작 방법.
  18. 제13 항에 있어서,
    상기 컨텍스트 속성 정보는 상기 할당 영역의 순차/비순차 액세스 속성을 포함하고,
    상기 동작 방법은, 상기 메모리 컨트롤러에 의해, 상기 제1 할당 영역이 순차 액세스 속성을 갖는 경우, 상기 제1 할당 영역을 상기 비휘발성 메모리 내의 물리적으로 연속된 영역에 할당하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 시스템의 동작 방법.
  19. 제13 항에 있어서,
    상기 컨텍스트 속성 정보는 상기 할당 영역의 확장/비확장 속성을 포함하고,
    상기 동작 방법은, 상기 메모리 컨트롤러에 의해, 상기 제1 할당 영역이 확장 속성을 갖는 경우, 상기 제1 할당 영역을 상기 비휘발성 메모리 내에 물리적으로 연속되고 할당하려는 크기보다 큰 영역 내에 할당하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 시스템의 동작 방법.
  20. 제12 항에 있어서,
    상기 메인 메모리 장치는 상기 메모리 컨트롤러에 의해 제어되는 휘발성 메모리를 더 포함하고,
    상기 동작 방법은,
    상기 프로세서에 의해, 상기 할당 영역의 크기, 및 상기 할당 영역의 속도 속성을 포함하는 상기 컨텍스트 속성 정보를 포함하는 메모리 할당 명령을 상기 메모리 컨트롤러에 제공하는 단계; 및
    상기 메모리 컨트롤러에 의해, 상기 속도 속성을 참조하여 제1 할당 영역을 상기 비휘발성 메모리 또는 상기 휘발성 메모리 중 하나 내에 할당하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 시스템의 동작 방법.
KR1020160152965A 2016-11-16 2016-11-16 컴퓨터 시스템, 및 컴퓨터 시스템의 동작 방법 KR20180055296A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020160152965A KR20180055296A (ko) 2016-11-16 2016-11-16 컴퓨터 시스템, 및 컴퓨터 시스템의 동작 방법
US15/649,848 US10698807B2 (en) 2016-11-16 2017-07-14 Computer system and method of operating the same
US16/884,328 US10846213B2 (en) 2016-11-16 2020-05-27 Memory device and method of operating the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160152965A KR20180055296A (ko) 2016-11-16 2016-11-16 컴퓨터 시스템, 및 컴퓨터 시스템의 동작 방법

Publications (1)

Publication Number Publication Date
KR20180055296A true KR20180055296A (ko) 2018-05-25

Family

ID=62106830

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160152965A KR20180055296A (ko) 2016-11-16 2016-11-16 컴퓨터 시스템, 및 컴퓨터 시스템의 동작 방법

Country Status (2)

Country Link
US (2) US10698807B2 (ko)
KR (1) KR20180055296A (ko)

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8452912B2 (en) * 2007-10-11 2013-05-28 Super Talent Electronics, Inc. Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read
US7660911B2 (en) * 2006-12-20 2010-02-09 Smart Modular Technologies, Inc. Block-based data striping to flash memory
TWM317043U (en) * 2006-12-27 2007-08-11 Genesys Logic Inc Cache device of the flash memory address transformation layer
JP4331220B2 (ja) 2007-03-07 2009-09-16 株式会社東芝 未使用物理領域自律管理機能を持つストレージ装置
US8245101B2 (en) * 2007-12-27 2012-08-14 Sandisk Enterprise Ip Llc Patrol function used in flash storage controller to detect data errors
JP2010237907A (ja) 2009-03-31 2010-10-21 Nec Corp ストレージ装置および記録方法
WO2011158280A1 (en) 2010-06-14 2011-12-22 Hitachi, Ltd. Storage apparatus, storage system
JP2012221251A (ja) 2011-04-08 2012-11-12 Toshiba Corp メモリシステムの制御方法、情報処理装置、及びプログラム
JP5882467B2 (ja) * 2012-03-13 2016-03-09 株式会社日立製作所 不揮発半導体メモリを含んだ不揮発半導体記憶デバイスを有するストレージシステム
US8724389B2 (en) 2012-07-26 2014-05-13 Ocz Storage Solutions, Inc. Non-volatile solid state memory-based mass storage device and methods thereof
US9032099B1 (en) 2013-12-12 2015-05-12 Intel Corporation Writeback mechanisms for improving far memory utilization in multi-level memory architectures
JP6525507B2 (ja) 2014-05-14 2019-06-05 キヤノン株式会社 情報処理装置、情報処理方法及びプログラム

Also Published As

Publication number Publication date
US20200285573A1 (en) 2020-09-10
US10698807B2 (en) 2020-06-30
US20180137044A1 (en) 2018-05-17
US10846213B2 (en) 2020-11-24

Similar Documents

Publication Publication Date Title
US11209989B2 (en) Zoned namespaces in solid-state drives
TWI679642B (zh) 用於組態和控制非揮發性快取記憶體的系統及方法
US9460800B2 (en) Nonvolatile memory system and refresh method
US7193923B2 (en) Semiconductor memory device and access method and memory control system for same
US20170242785A1 (en) Efficient Implementation of Optimized Host-Based Garbage Collection Strategies Using Xcopy and Arrays of Flash Devices
US20060149902A1 (en) Apparatus and method for storing data in nonvolatile cache memory considering update ratio
US10997082B2 (en) Memory system, computing system, and methods thereof for cache invalidation with dummy address space
BR112014015441B1 (pt) conservação de energia por meio de desligamento de canal de memória
JP5847940B2 (ja) 半導体装置
KR20100016987A (ko) 상 변화 메모리를 포함하는 컴퓨팅 시스템
US9110784B2 (en) Nonvolatile random access memory and data management method
US20220019384A1 (en) Memory management utilzing buffer reset commands
JPWO2010038736A1 (ja) 半導体装置
TWI718710B (zh) 資料儲存裝置以及非揮發式記憶體控制方法
US9342257B2 (en) Computer system having main memory and control method thereof
US10846213B2 (en) Memory device and method of operating the same
KR20050058497A (ko) 자기 메모리 장치와, 컴퓨터에 자기 저장 기능을 제공하는방법
Lee et al. Accelerating In-Page Logging with Non-Volatile Memory.
TW202024901A (zh) 快閃記憶體裝置及其控制方法
TWI705328B (zh) 資料儲存裝置以及非揮發式記憶體控制方法
US11822800B2 (en) Storage system including host and storage device and operation method thereof
US11068175B2 (en) Technology to manage capacity loss in storage drives
JP2006040168A (ja) フラッシュメモリシステム及びフラッシュメモリの制御方法
CN117850668A (zh) 存储器控制器、存储器系统和存储器控制器的操作方法
Firmware et al. A Beginner’s Guide to SSD Firmware