KR20190099591A - 통합 메모리 디바이스 및 그의 동작 방법 - Google Patents

통합 메모리 디바이스 및 그의 동작 방법 Download PDF

Info

Publication number
KR20190099591A
KR20190099591A KR1020180019212A KR20180019212A KR20190099591A KR 20190099591 A KR20190099591 A KR 20190099591A KR 1020180019212 A KR1020180019212 A KR 1020180019212A KR 20180019212 A KR20180019212 A KR 20180019212A KR 20190099591 A KR20190099591 A KR 20190099591A
Authority
KR
South Korea
Prior art keywords
access request
controller
data
storage area
memory
Prior art date
Application number
KR1020180019212A
Other languages
English (en)
Other versions
KR102499255B1 (ko
Inventor
노완준
Original Assignee
에스케이하이닉스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이하이닉스 주식회사 filed Critical 에스케이하이닉스 주식회사
Priority to KR1020180019212A priority Critical patent/KR102499255B1/ko
Priority to US16/159,479 priority patent/US10795613B2/en
Priority to CN201811606650.5A priority patent/CN110175140B/zh
Publication of KR20190099591A publication Critical patent/KR20190099591A/ko
Priority to US16/858,455 priority patent/US11544168B2/en
Priority to US18/060,524 priority patent/US20230094144A1/en
Application granted granted Critical
Publication of KR102499255B1 publication Critical patent/KR102499255B1/ko

Links

Images

Classifications

    • 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/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • 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/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • 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/1673Details of memory controller using buffers
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Dram (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명의 일 실시 예에 따르면, 통합 메모리 디바이스는, 다수의 메모리들; 및 상기 다수의 메모리들을 통합 관리하기 위한 컨트롤러를 포함할 수 있다. 상기 컨트롤러는, 상기 메모리들 중 적어도 하나의 메모리에 포함되는 저장 영역에 대한 액세스 요청이 수신될 때 상기 액세스 요청이 리프레시 주기 내에서 미리 설정된 횟수 이상의 액세스 요청인지 여부를 검출하고, 상기 액세스 요청이 상기 설정된 횟수 이상의 액세스 요청인 경우, 상기 액세스 요청을 지연 처리할 수 있다.

Description

통합 메모리 디바이스 및 그의 동작 방법{CONVERGENCE MEMORY DEVICE AND METHOD THEREOF}
본 발명은 통합 메모리 디바이스 및 그의 동작 방법에 관한 것이다.
데이터는 4차 산업혁명 시대 기업들의 비즈니스에 가장 중요한 자산이 되고 있으며, 이에 대규모 데이터를 빠르게 전송 및 분석하도록 지원하는 최신 기술에 대한 수요가 점차 증가하고 있다. 예를 들어, 인공지능, 자율주행, 로봇, 헬스케어, 가상현실(virtual reality)/증강현실(augmented reality, AR), 스마트홈 등이 확대됨에 따라 서버나 데이터 센터에 대한 수요의 증가가 예상되고 있다.
레거시(legacy) 데이터 센터는 자원들(예; 컴퓨팅, 네트워킹, 스토리지)을 하나의 장비 내에 포함시키는 구조였다. 그러나 미래의 대용량 데이터 센터는 자원들을 각각 별개로 구성하고, 논리적으로 자원들을 재구성하는 구조를 가질 수 있다. 예를들어, 대용량 데이터 센터는 자원들을 각각 랙(rack) 수준에서 모듈화하고, 용도에 따라 자원들을 재구성하여 공급할 수 있는 구조를 가질 수 있다. 따라서 미래의 대용량 데이터 센터에 사용하기 적합한 통합형 스토리지 또는 메모리 디바이스가 요구되고 있다.
본 발명의 실시 예들은 서버 시스템 또는 데이터 처리 시스템에 구비되는 메모리 블레이드에서 메모리를 보호하기 위한 통합 메모리 디바이스 및 그의 동작 방법을 제공한다.
본 발명의 일 실시 예에 따르면, 통합 메모리 디바이스는, 다수의 메모리들; 및 상기 다수의 메모리들을 통합 관리하기 위한 컨트롤러를 포함할 수 있다. 상기 컨트롤러는, 상기 메모리들 중 적어도 하나의 메모리에 포함되는 저장 영역에 대한 액세스 요청이 수신될 때 상기 액세스 요청이 리프레시 주기 내에서 미리 설정된 횟수 이상의 액세스 요청인지 여부를 검출하고, 상기 액세스 요청이 상기 설정된 횟수 이상의 액세스 요청인 경우, 상기 액세스 요청을 지연 처리할 수 있다.
본 발명의 일 실시 예에 따르면, 다수의 메모리들; 및 상기 다수의 메모리들을 통합 관리하기 위한 컨트롤러를 포함하는 통합 메모리 디바이스의 동작 방법은, 상기 메모리들 중 적어도 하나의 메모리에 포함되는 저장 영역에 대한 액세스 요청이 수신될 때 상기 액세스 요청이 리프레시 주기 내에서 미리 설정된 횟수 이상의 액세스 요청인지 여부를 검출하는 과정; 및 상기 액세스 요청이 상기 설정된 횟수 이상의 액세스 요청인 경우, 상기 액세스 요청을 지연 처리하는 과정을 포함할 수 있다.
본 출원의 실시 예들은 메모리 블레이드와 같은 통합 메모리 디바이스에 포함될 수 있는 특정 메모리에 로우 해머와 같은 메모리 어택이 발생하는 경우 어택 타겟(attack target) 저장 영역에 대한 액세스 요청을 지연 처리함으로써 빅팀(victim) 저장 영역에서의 데이터 변형의 위험성을 제거할 수 있다.
도 1은 데이터 처리 시스템을 도시하는 도면이다.
도 2 및 도 3은 본 출원의 실시 예에 따른 컴퓨팅 디바이스의 구성을 도시하는 도면들이다.
도 4는 본 출원의 실시 예에 따른 컴퓨터 블레이드의 구성을 도시하는 도면이다.
도 5a 및 도 5b는 본 출원의 실시 예에 따른 메모리 블레이드의 구성을 도시하는 도면들이다.
도 6은 본 출원의 실시 예에 따른 컨트롤러의 개략적인 구성을 도시하는 도면이다.
도 7은 본 출원의 실시 예에 따른 컨트롤러의 구체적인 구성을 도시하는 도면이다.
도 8은 본 출원의 실시 예에 따른 버퍼의 구조를 도시하는 도면이다.
도 9는 본 출원의 실시 예에 따른 메모리 블레이드의 구성을 도시하는 도면이다.
도 10은 본 출원의 실시 예에 따른 메모리 블레이드에 의한 액세스 요청을 처리하는 동작을 도시하는 도면이다.
도 11은 본 출원의 실시 예에 따른 메모리 블레이드에 의한 액세스 요청의 지연 처리 동작을 도시하는 도면이다.
이하, 본 발명에 따른 바람직한 실시 예를 첨부한 도면을 참조하여 상세히 설명한다. 하기의 설명에서는 본 발명에 따른 동작을 이해하는데 필요한 부분만이 설명되며 그 이외 부분의 설명은 본 발명의 요지를 흩뜨리지 않도록 생략될 것이라는 것을 유의하여야 한다.
도 1은 데이터 처리 시스템 10을 도시하는 도면이다. 도 1을 참조하면, 데이터 처리 시스템 10은 다수의 컴퓨팅 랙들(computing racks) 20과 관리 인터페이스(management interface) 30, 그리고 이들 사이의 통신이 가능하도록 하는 네트워크(network) 40을 포함할 수 있다. 이러한 랙스케일 구조(rack-scale architecture)를 가지는 데이터 처리 시스템 10은 대용량 데이터 처리를 위한 데이터 센터 등에 사용될 수 있다.
다수의 컴퓨팅 랙들 20 각각은 단독으로 하나의 컴퓨팅 디바이스(computing device)를 구현할 수 있다. 이를 대신하여, 다수의 컴퓨팅 랙들 20 각각은 다른 컴퓨팅 랙들과의 조합으로 하나의 컴퓨팅 디바이스를 구현할 수 있다. 이러한 컴퓨터 랙들 20의 구체적인 구성 및 동작에 대한 설명은 후술될 것이다.
관리 인터페이스 30은 사용자가 데이터 처리 시스템 10을 조정, 운영 또는 관리할 수 있도록 하는 인터액티브 인터페이스(interactive interface)를 제공할 수 있다. 관리 인터페이스 104는 컴퓨터, 멀티프로세서 시스템, 서버, 랙마운트(rack-mount) 서버, 블레이드(blade) 서버, 랩탑(lap-top) 컴퓨터, 노트북 컴퓨터, 태블릿 컴퓨터, 웨어러블 컴퓨팅 디바이스, 네트워크 기기, 웹 기기, 분산 컴퓨팅 시스템, 프로세서 기반 시스템, 및/또는 소비자 전자 기기를 포함하는, 임의 유형의 연산 디바이스로서 구현될 수 있다.
일부 실시 예들에서, 관리 인터페이스 30은 컴퓨팅 랙들 102에 의해 수행될 수 있는 연산 기능들이나, 관리 인터페이스 30에 의해 수행될 수 있는 사용자 인터페이스 기능들을 가지는 분산 시스템에 의해 구현되어질 수 있다. 다른 일부 실시 예들에서, 관리 인터페이스 30은 네트워크 40을 통하여 분산된 다중 컴퓨팅 디바이스들에 의해 구성되고 클라우드(cloud)로서 동작하는 가상 서버(virtual server)에 의해 구현될 수 있다. 관리 인터페이스 30은 프로세서, 입력/출력 서브시스템, 메모리, 데이터 스토리지 디바이스 및 통신 회로를 포함할 수 있다.
네트워크 40은 컴퓨팅 랙들 20과 관리 인터페이스 30 사이 및/또는 컴퓨팅 랙들 20 사이에서의 데이터를 송수신할 수 있다. 네트워크 40은 적절한 수의 다양한 유선 및/또는 유선 네트워크들에 의해 구현될 수 있다. 예를 들어, 네트워크 40은 유선 또는 무선 LAN(local area network), WAN(wide area network) 셀룰라 네트워크, 및/또는 인터넷과 같이 공개적으로 억세스가능한 글로벌 네트워크(publicly-accessible, global network)에 의해 구현되거나 이를 포함할 수 있다. 추가적으로, 네트워크 40은 보조적인 컴퓨터들, 라우터(router)들 및 스위치들과 같은 적절한 수의 보조적인 네트워크 디바이스들을 포함할 수 있다.
도 2는 본 출원의 실시 예에 따른 랙 구조를 가지는 컴퓨팅 디바이스를 도시하는 도면이다.
도 2를 참조하면, 컴퓨팅 랙 20은 구성요소들의 구조, 형태 및 호칭 등에 제한되는 것은 아니지만, 다양한 형태의 구성요소들을 포함할 수 있다. 예를 들어, 컴퓨팅 랙 20은 다수의 드로워(drawer)들 21-29를 포함할 수 있다. 다수의 드로워들 21-29 각각은 다수의 모듈(module)들을 포함할 수 있다. 다수의 모듈들 각각은 다수의 블레이드(blade)들을 포함할 수 있다.
다양한 실시 예들에 있어서, 컴퓨팅 랙 20은 적절한 수의 연산 블레이드(compute blade), 메모리 블레이드(memory blade) 및/또는 상호접속 블레이드(interconnect blade)의 조합에 의해 구현될 수 있다. 여기서는 컴퓨팅 랙 20이 다수의 블레이드들의 조합에 의해 구현되는 것으로 정의되고 있지만, 이를 대신하여, 드로워들, 모듈들, 트레이들, 보드들, 샷시들 또는 유닛들 등의 다양한 이름으로 구현되는 것으로 정의될 수 있음에 유의하여야 한다. 이러한 컴퓨팅 랙 20의 구성요소들은 구현의 편의상 기능별로 분류 및 구별되는 구조를 가질 수 있다. 제한되는 것은 아니지만, 컴퓨팅 랙 20은 상단부터 상호접속 블레이드, 연산 블레이드, 메모리 블레이드의 순서로 분류된 구조를 가질 수 있다. 이러한 컴퓨팅 랙 20 및 이에 의해 구현되는 컴퓨팅 디바이스는 "랙스케일 시스템(rack-scale system)" 또는"분류 시스템(disaggregated system)"으로 명명될 수 있다.
다양한 실시 예들에 있어서, 컴퓨팅 디바이스는 하나의 컴퓨팅 랙 20에 의해 구현될 수 있다. 이를 대신하여, 컴퓨팅 디바이스는 2개 이상의 컴퓨팅 랙들에 포함되는 모든 구성요소들에 의해 구현되거나, 2개 이상의 컴퓨팅 랙들에 포함되는 일부 구성요소들의 조합에 의해 구현되거나, 하나의 컴퓨팅 랙들에 포함되는 일부 구성요소들에 의해 구현될 수 있다.
다양한 실시 예들에 있어서, 컴퓨팅 디바이스는 컴퓨팅 랙 20에 포함되는 적절한 수의 연산 블레이드, 메모리 블레이드 및 상호접속 블레이드(interconnect blade)의 조합에 의해 구현될 수 있다. 예를 들어, 컴퓨팅 디바이스 20A는 2개의 연산 블레이드들, 3개의 메모리 블레이드들 및 1개의 상호접속 블레이드에 의해 구현될 수 있다. 다른 예로, 컴퓨팅 디바이스 20B는 3개의 연산 블레이드들, 2개의 메모리 블레이드들 및 1개의 상호접속 블레이드에 의해 구현될 수 있다. 또 다른 예로, 컴퓨팅 디바이스 20C는 1개의 연산 블레이드들, 4개의 메모리 블레이드들 및 1개의 상호접속 블레이드에 의해 구현될 수 있다.
비록 도 2에서는 컴퓨팅 랙 20이 적절한 수의 연산 블레이드, 메모리 블레이드 및/또는 상호접속 블레이드의 조합에 의해 구현되는 경우를 도시하고 있지만, 컴퓨팅 랙 20은 통상의 서버 등에서 확인될 수 있는, 파워 시스템, 냉각 시스템, 입력/출력 디바이스들과 같은 추가적인 구성요소들을 포함할 수 있다.
도 3은 본 출원의 실시 예에 따른 컴퓨팅 디바이스 100의 블록 구성을 도시하는 도면이다.
도 3을 참조하면, 컴퓨팅 디바이스 100은 다수의 연산 블레이드들(compute blades) 200, 다수의 메모리 블레이드들(memory blades) 400 및 상호접속 블레이드(interconnect blade) 300을 포함할 수 있다. 다수의 연산 블레이드들 200은 풀드 연산 블레이드(pooled compute blades), 풀드 연산 시스템 등으로 불리울 수 있다. 유사하게, 다수의 메모리 블레이드들은 풀드 메모리 블레이드(pooled memory blade), 풀드 메모리 시스템 등으로 불리울 수 있다. 여기서는 컴퓨팅 디바이스 100이 다수의 블레이드들의 조합에 의해 구현되는 것으로 정의되고 있지만, 이를 대신하여 드로워들, 모듈들, 트레이들, 보드들, 샷시들 또는 유닛들 등의 다양한 이름으로 구현되는 것으로 정의될 수 있음에 유의하여야 한다.
다수의 연산 블레이드들 200 각각은 하나 또는 그 이상의 프로세서, 프로세싱/컨트롤 회로, 또는 중앙처리장치(central processing unit, CPU)와 같은 프로세싱 요소를 포함할 수 있다.
다수의 메모리 블레이드들 400 각각은 다수의 휘발성 메모리(volatile memory)들 및/또는 비휘발성 메모리(nonvolatile memory)들과 같은 다양한 형태의 메모리들을 포함할 수 있다. 예를 들어, 다수의 메모리 블레이드들 400 다수의 DRAM(Dynamic Random Access Memory)들, 플래시 메모리(flash memory)들, 메모리 카드들, 하드 디스크 드라이브(hard disk drive, HDD)들, 솔리드 스테이트 드라이브(solid state drive, SSD)들, 및/또는 이들의 조합들을 포함할 수 있다.
다수의 메모리 블레이드들 400 각각은 연산 블레이드들 200 각각에 포함되는 하나 이상의 프로세싱 요소에 의해 분할되거나, 할당되거나, 또는 지정되어 사용될 수 있다. 또한 다수의 메모리 블레이드들 400 각각은 연산 블레이드들 200에 의해 초기화 및/또는 수행될 수 있는 하나 이상의 오퍼레이팅 시스템(operating system, OS)들을 저장할 수 있다.
상호접속 블레이드 300은 연산 블레이드들 200 각각에 포함되는 하나 이상의 프로세싱 요소에 의해 분할, 할당 또는 지정되어 사용될 수 있는, 임의의 통신 회로, 디바이스, 또는 이들의 결합에 의해 구현될 수 있다. 예를 들어, 상호접속 블레이드 300은 임의 개수의 네트워크 인터페이스 포트들, 카드들, 또는 스위치들로서 구현될 수 있다. 상호접속 블레이드 300은 통신을 실행시키기 위한, 하나 이상의 유선 또는 유선 통신 기술들과 관련된 프로토콜들을 사용할 수 있다. 예를 들어, 상호접속 블레이드 300은 PCIe(Peripheral Component Interconnect Express), QPI(QuickPath Interconnect), 이더넷(Ethernet) 등과 같은 프로토콜들에 따라 연산 블레이드들 200과 메모리 블레이드들 400 사이의 통신을 지원할 수 있다.
도 4는 본 출원의 실시 예에 따른 컴퓨터 블레이드 200의 구성을 도시하는 도면이다.
도 4를 참조하면, 컴퓨터 블레이드 200은 하나 이상의 중앙처리장치(central processing unit, CPU) 210과, 하나 이상의 로컬 메모리(local memory) 220과, 입출력(input/output, I/O) 인터페이스(interface) 230을 포함할 수 있다.
CPU 210은 도 3에 도시된 다수의 메모리 블레이드들 400 중에서 사용하기 위한 적어도 하나의 메모리 블레이드를 분할, 할당 또는 지정할 수 있다. 또한 CPU 210은 분할, 할당 또는 지정된 적어도 하나의 메모리 블레이드를 초기화하고, 이들을 통해 데이터의 리드 동작, 라이트(또는 프로그램) 동작 등을 수행할 수 있다.
로컬 메모리 220은 CPU 210의 동작 수행 중에 필요한 데이터를 저장할 수 있다. 다양한 실시 예들에 있어서, 하나의 로컬 메모리 220은 하나의 CPU 210에 일대일 대응하는 구조를 가질 수 있다.
I/O 인터페이스 230은 도 3의 상호접속 블레이드 300을 통한 CPU 210과 메모리 블레이드들 400 사이에서의 인터페이싱을 지원할 수 있다. I/O 인터페이스 230은 하나 이상의 유선 또는 유선 통신 기술들과 관련된 프로토콜들을 사용하여, CPU 210으로부터 상호접속 블레이드 300으로의 송신 데이터를 출력하고, 상호접속 블레이드 300으로부터 CPU 210으로의 수신 데이터를 입력할 수 있다. 예를 들어, I/O 인터페이스 230은 PCIe(Peripheral Component Interconnect Express), QPI(QuickPath Interconnect), 이더넷(Ethernet) 등과 같은 프로토콜들에 따라 CPU 210과 상호접속 블레이드 300 사이의 통신을 지원할 수 있다.
도 5a 및 도 5b는 본 출원의 실시 예에 따른 메모리 블레이드 400의 구성을 도시하는 도면들이다.
도 5a를 참조하면, 메모리 블레이드 400은 컨트롤러 410과 다수의 메모리들 420을 포함할 수 있다. 다수의 메모리들 420은 컨트롤러 410의 제어에 따라 데이터를 저장(또는 라이트)하고, 저장된 데이터를 출력(또는 리드)할 수 있다. 다수의 메모리들 420은 제1 그룹의 메모리들 420A, 제2 그룹의 메모리들 420B 및 제3 그룹의 메모리들 420C를 포함할 수 있다. 제1 그룹의 메모리들 420A, 제2 그룹의 메모리들 420B 및 제3 그룹의 메모리들 420C은 서로 동일한 특성을 가질 수도 있고, 서로 다른 특성을 가질 수 있다. 다양한 실시 예들에 있어서, 제1 그룹의 메모리들 420A, 제2 그룹의 메모리들 420B 및 제3 그룹의 메모리들 420C은 저장 용량(capacity) 또는 레이턴시(latency) 측면에서 동일한 특성을 가지는 메모리들이거나, 서로 다른 특성을 가지는 메모리들일 수 있다.
도 5b를 참조하면, 제1 그룹의 메모리들 420A와 제2 그룹의 메모리들 420B와 제3 그룹의 메모리들 420C는 동적 램(dynamic random access memory, DRAM)일 수 있다.
다시 도 5a를 참조하면, 컨트롤러 410은 데이터 컨트롤러(data controller) 510, 메모리 컨트롤러들(memory controller, MC) 520A-520C, 및 I/O 인터페이스 530을 포함할 수 있다.
데이터 컨트롤러 510은 도 3의 연산 블레이드들 200과 다수의 메모리들 420 사이에서 송수신되는 데이터를 제어할 수 있다. 예를 들어, 라이트 요청 또는 커맨드에 응답하여, 데이터 컨트롤러 510은 연산 블레이드들 200로부터의 라이트를 위한 데이터를 수신하고, 이 데이터를 다수의 메모리들 420중에서 해당하는 메모리에 라이트하는 라이트 동작을 제어할 수 있다. 다른 예로, 리드 요청 또는 커맨드에 응답하여, 데이터 컨트롤러 510은 연산 블레이드들 200으로부터 다수의 메모리들 420중에서 특정 메모리에 저장된 데이터를 리드하고, 리드 데이터를 연산 블레이드들 200중에서 해당하는 연산 블레이드로 출력하는 리드 동작을 제어할 수 있다.
메모리 컨트롤러들 520A-520C는 데이터 컨트롤러 510과 다수의 메모리들 420의 사이에 위치하며, 이들 사이에서의 인터페이싱을 지원할 수 있다. 메모리 컨트롤러들 520은 다수의 메모리들 420에 포함되는 제1 그룹의 메모리들 420A, 제2 그룹의 메모리들 420B 및 제3 그룹의 메모리들 420C를 각각에 대응하는 메모리 컨트롤러(iMC0) 520A, 메모리 컨트롤러(iMC1) 520B, 메모리 컨트롤러(iMC2) 520C를 포함할 수 있다. 메모리 컨트롤러(iMC0) 520A는 데이터 컨트롤러 510과 제1 그룹의 메모리들 420A의 사이에 위치하며, 이들 사이에서의 데이터 송수신을 지원할 수 있다. 메모리 컨트롤러(iMC1) 520B는 데이터 컨트롤러 510과 제2 그룹의 메모리들 420B의 사이에 위치하며, 이들 사이에서의 데이터 송수신을 지원할 수 있다. 메모리 컨트롤러(iMC2) 520C는 데이터 컨트롤러 510과 제3 그룹의 메모리들 420C의 사이에 위치하며, 이들 사이에서의 데이터 송수신을 지원할 수 있다. 여기서는 컨트롤러 410이 3개의 메모리 컨트롤러들, 즉 메모리 컨트롤러(iMC0) 520A, 메모리 컨트롤러(iMC1) 520B, 메모리 컨트롤러(iMC2) 520C를 포함하는 예가 도시되어 있지만, 도 5b에 도시된 바와 같이 제1 그룹의 메모리들 420A, 제2 그룹의 메모리들 420B 및 제3 그룹의 메모리들 420C가 모두 동일한 DRAM으로 구현되는 경우 컨트롤러 410은 단일의 메모리 컨트롤러를 포함하는 형태로 도시될 수도 있다.
I/O 인터페이스 530은 도 3의 상호접속 블레이드 300을 통한 데이터 컨트롤러 510과 연산 블레이드들 200 사이에서의 인터페이싱을 지원할 수 있다. I/O 인터페이스 530은 하나 이상의 유선 또는 유선 통신 기술들과 관련된 프로토콜들을 사용하여, 데이터 컨트롤러 510으로부터 상호접속 블레이드 300으로의 송신 데이터를 출력하고, 상호접속 블레이드 300으로부터 데이터 컨트롤러 510으로의 수신 데이터를 입력할 수 있다. 예를 들어, I/O 인터페이스 530은 PCIe(Peripheral Component Interconnect Express), QPI(QuickPath Interconnect), 이더넷(Ethernet) 등과 같은 프로토콜들에 따라 데이터 컨트롤러 510과 상호접속 블레이드 300 사이의 통신을 지원할 수 있다.
전술한 바와 같이, 미래의 데이터 센터와 같은 서버 시스템 또는 데이터 처리 시스템은 연산 블레이드들, 메모리 또는 스토리지 블레이드들 등과 같은 다수의 블레이드들이 단위 랙 내에서 구별되어 장착되는 구조를 가질 수 있다. 이때 하나의 메모리 블레이드는 요구되는 특성에 따라 동일하거나 서로 다른 다수의 메모리들이 통합된 형태를 가지는 통합 메모리 디바이스(convergence memory device) 또는 풀드 메모리(pooled memory)일 수 있다.
이러한 메모리 블레이드에서는 악의적이던 그렇지 않던 특정 메모리의 저장 영역이 지속적으로 접근됨에 따라 메모리 어택(memory attack)이 발생할 수 있다. 예를 들어, DRAM의 특정 로우(row)가 반복적 또는 지속적으로 접근됨에 따라 액세스 요청된 특정 타겟 로우에 인접한 로우에 비트 플립(bit flip)이 나타나는 로우 해머(row hammer or rowhammer)가 발생할 수 있다. 이와 같이 특정 타겟 로우에 메모리 어택이 발생하는 경우 인접한 빅팀 로우(victim row)의 데이터가 변형될 수 있고, 결과적으로 데이터 변형의 위험성 및 데이터 변형에 따른 보안의 위험성이 초래될 수 있다.
후술되는 본 출원의 실시 예들은 통합 메모리 디바이스를 포함하는 시스템에서 DRAM과 같은 특정 메모리에 대하여 로우 해머와 같은 메모리 어택으로부터 메모리를 보호하기 위한 보호 방안을 제안한다. 다양한 실시 예들에 따르면, 통합 메모리 디바이스는 로우 해머와 같은 메모리 어택이 발생하는 경우 타겟 저장 영역(또는 어택 저장 영역)에 대한 액세스 요청을 지연 처리함으로써 빅팀 저장 영역에서의 데이터 변형의 위험성을 제거할 수 있다. 후술되는 본 출원의 실시 예들은 DRAM에 적용되는 경우가 예시적으로 설명될 것이지만 이에 제한되지는 않음에 유의하여 야 한다. 예를 들어, 본 출원의 실시 예들은 DRAM과 유사하게 특정 주기(예; 리프레시 주기)내에서 메모리 어택이 발생할 수 있는 PCRAM(Phase Change RAM)에도 동일하게 적용될 수 있다.
도 6은 본 출원의 실시 예에 따른 컨트롤러 600의 개략적인 구성을 도시하는 도면이다. 예를 들어, 컨트롤러 600은 도 5a 및 도 5b에 도시된 메모리 블레이드 400에 포함되는 컨트롤러 410에 대응하는 구성요소일 수 있다.
도 6을 참조하면, 컨트롤러 600은 데이터 컨트롤러(data controller) 610과 어택 검출기(attack detector) 620을 포함할 수 있다. 어택 검출기 620은 다수의 메모리들(예; 도 5a 및 도 5b에 도시된 메모리들 420) 중 적어도 하나의 메모리에 포함되는 저장 영역에 대한 액세스 요청이 수신될 때 상기 액세스 요청이 리프레시(refresh) 주기(예; 7.8마이크로초(㎲) tREFI) 내에서 미리 설정된 횟수 이상의 액세스 요청인지 여부를 검출할 수 있다.
데이터 컨트롤러 610은 상기 액세스 요청이 상기 설정된 횟수 이상의 액세스 요청인 경우, 상기 액세스 요청을 지연 처리할 수 있다. 반면에, 데이터 컨트롤러 610은 상기 액세스 요청이 상기 설정된 횟수보다 작은 액세스 요청인 경우, 상기 액세스 요청을 지연없이 바로 처리할 수 있다.
이와 같이 어택 검출기 620에 의해 상기 액세스 요청이 메모리 어택에 해당하는 것으로 검출되는 경우, 데이터 컨트롤러 610은 어택 타겟 저장 영역에 대한 상기 액세스 요청을 리프레시 주기가 완료될 때까지 지연시킨 후 처리할 수 있다. 리프레시 주기가 완료된 이후에 상기 액세스 요청이 수행되는 경우, 이미 어택 타겟 저장 영역에 인접한 빅팀 저장 영역에 대한 리프레시 동작이 수행된 이후이므로 메모리 어택의 위험성은 제거될 수 있다. 다시 말하면, 어택 타겟 저장 영역에 대한 액세스 요청 처리가 최대 리프레시 주기 동안 지연(또는 캐시)됨에 따라 어택 타겟 저장 영역에 대한 액세스 요청이 수신된 이후에도 빅팀 저장 영역에 대한 다음의 리프레시 시간이 보장될 수 있다.
도 7은 본 출원의 실시 예에 따른 컨트롤러 700의 구체적인 구성을 도시하는 도면들이다. 예를 들어, 컨트롤러 700은 도 5a 및 도 5b에 도시된 메모리 블레이드 400에 포함되는 컨트롤러 410에 대응하는 구성요소일 수 있다.
도 7을 참조하면, 컨트롤러 700은 데이터 컨트롤러(data controller) 710, 어택 검출기(attack detector) 720, 입력/출력 인터페이스(input/output (I/O) interface) 730, 버퍼(buffer) 740, 타이머(timer) 750 및 리프레시 컨트롤러(refresh controller) 760을 포함할 수 있다.
I/O 인터페이스 730은 외부로부터 액세스 요청을 수신할 수 있다. 예를 들어, I/O 인터페이스 730은 도 4에 도시된 연산 블레이드 200과 같은 호스트(host)로부터 다수의 메모리들(예; 도 5a 및 도 5b에 도시된 메모리들 420) 중 적어도 하나의 메모리에 대한 액세스 요청을 수신할 수 있다.
어택 검출기 720은 다수의 메모리들(예; 도 5a 및 도 5b에 도시된 메모리들 420) 중 적어도 하나의 메모리에 포함되는 저장 영역에 대한 액세스 요청이 수신될 때 상기 액세스 요청이 리프레시(refresh) 주기(예; 7.8마이크로초(㎲) tREFI) 내에서 미리 설정된 횟수 이상의 액세스 요청인지 여부를 검출할 수 있다. 다양한 실시 예에 있어서, 어택 검출기 720은 필드 프로그래머블 게이트 어레이(field programmable gate array, FPGA)에 의해 구현될 수 있다. FPGA 구현을 통하여 어택 검출기 720은 다양한 구현될 수 있는 메모리들을 위해서도 가변적으로 사용될 수 있다.
데이터 컨트롤러 710은 상기 액세스 요청이 상기 설정된 횟수 이상의 액세스 요청인 경우, 상기 액세스 요청을 지연 처리할 수 있다. 반면에, 데이터 컨트롤러 710은 상기 액세스 요청이 상기 설정된 횟수보다 작은 액세스 요청인 경우, 상기 액세스 요청을 지연없이 바로 처리할 수 있다.
버퍼 740은 데이터 컨트롤러 710에서 처리되는 액세스 요청과 관련하는 해당 저장 영역에 대한 정보를 버퍼링(또는 캐시)할 수 있다. 타이머 750은 리프레시 주기가 경과하였는지 여부 및 지연 처리된 액세스 요청에 대한 시간 정보를 제공할 수 있다.
리프레시 컨트롤러 760은 데이터 컨트롤러 710으로부터 리프레시 커맨드를 수신할 수 있고, 리프레시 커맨드에 응답하여 해당하는 메모리의 저장 영역을 리프레시할 수 있다. 다양한 실시 예에 있어서, 리프레시 컨트롤러 760은 도 5a 및 도 5b에 도시된 메모리 컨트롤러들 520A 내지 520C에 포함되는 구성요소일 수 있다.
구체적으로, 상기 액세스 요청이 상기 설정된 횟수 이상의 액세스 요청인 것으로 어택 검출기 720에 의해 검출된 경우, 데이터 컨트롤러 710은 액세스 요청과 관련하여 해당 저장 영역에 대한 정보를 버퍼 740에 버퍼링할 수 있다. 상기 액세스 요청이 라이트 요청인 경우, 버퍼 740은 해당 저장 영역에 대한 어드레스, 라이트 커맨드, 라이트 데이터 및 지연 처리 여부에 대한 정보를 버퍼링할 수 있다. 상기 액세스 요청이 리드 요청인 경우, 버퍼 740은 해당 저장 영역에 대한 어드레스, 리드 커맨드 및 및 지연 처리 여부에 대한 정보를 버퍼링할 수 있다.
리프레시 주기가 완료됨에 응답하여 데이터 컨트롤러 710은 해당 저장 영역에 인접한 적어도 하나의 인접 저장 영역에 대한 리프레시 커맨드 또는 해당 저장 영역에 대한 리프레시 커맨드를 생성할 수 있다. 리프레시 컨트롤러 760은 상기 리프레시 커맨드에 응답하여 상기 인접 저장 영역 또는 상기 저장 영역을 리프레시할 수 있다.
리프레시 주기가 완료된 이후에 데이터 컨트롤러 710은 버퍼 740에 버퍼링된 액세스 요청과 관련하여 해당 저장 영역에 대한 정보를 읽어들이고, 해당하는 액세스 요청을 처리할 수 있다. 예를 들어, 타이머 750에 의해 리프레시 주기가 완료됨에 응답하여 데이터 컨트롤러 710은 버퍼 740에 버퍼링된 라이트 데이터를 해당 저장 영역으로 플러시(flush)할 수 있다.
리프레시 주기가 완료되기 이전이라도 버퍼 740이 풀(full) 상태인 경우, 데이터 컨트롤러 710은 해당 저장 영역에 인접한 적어도 하나의 인접 저장 영역에 대한 리프레시 커맨드를 생성할 수 있다. 리프레시 컨트롤러 760은 상기 리프레시 커맨드에 응답하여 상기 인접 저장 영역을 리프레시할 수 있다.
이와 같이 어택 검출기 720에 의해 상기 액세스 요청이 메모리 어택에 해당하는 것으로 검출되는 경우, 데이터 컨트롤러 710은 상기 액세스 요청을 리프레시 주기가 완료될 때까지 지연시킨 후 처리할 수 있다. 리프레시 주기가 완료된 이후에 상기 액세스 요청이 수행되는 경우, 이미 상기 저장 영역에 인접한 저장 영역에 대한 리프레시 동작이 수행된 이후이므로 메모리 어택의 위험성은 제거될 수 있다.
도 8은 본 출원의 실시 예에 따른 버퍼 800의 구조를 도시하는 도면이다. 예를 들어, 버퍼 800은 도 7에 도시된 버퍼 740에 대응하는 구성요소일 수 있다.
도 8을 참조하면, 버퍼 800은 CMD 영역, ADDR 영역, VALID 영역, DELAYED 영역 및 Time 영역을 포함할 수 있다. CMD 영역은 액세스 요청에 따른 커맨드를 저장하기 위한 영역이다. CMD 영역에는 도 5a 및 도 5b의 메모리들 420 중의 적어도 하나의 메모리에 대한 라이트 요청에 따른 커맨드 W 또는 리드 요청에 따른 커맨드 R이 저장될 수 있다. ADDR 영역은 액세스 요청에 따른 메모리의 해당 저장 영역에 대한 어드레스(예; 111, 222, 333, 444)를 저장하기 위한 영역이다. 예를 들어, 액세스 요청된 메모리가 DRAM인 경우 ADDR 영역은 액세스 요청에 따른 메모리의 해당 로우 영역에 대한 어드레스를 저장할 수 있다.
VALID 영역은 액세스 요청에 따른 메모리의 해당 저장 영역으로의 플러시(flush) 여부에 대한 정보를 저장하기 위한 영역이다. 예를 들어, VALID 영역에서의 "1"은 플러시가 이루어지지 않음에 따라 버퍼 800에 저장된 정보가 유효함(valid)을 나타내며, "0"은 플러시가 이루어졌음에 따라 버퍼 800에 저장된 정보가 유효하지 않음(invalid)을 나타낼 수 있다. DELAYED 영역은 액세스 요청의 지연 처리 여부에 대한 정보를 저장하기 위한 영역이다. Time 영역은 액세스 요청이 지연 처리된 시간에 대한 정보를 저장하기 위한 영역이다.
예를 들어, 메모리의 저장 영역, 즉 로우의 어드레스 "333"에 대한 라이트 요청이 수신되는 경우, 도 7의 데이터 컨트롤러 710은 수신된 라이트 요청에 따른 어드레스 "333"이 어택 타겟 저장 영역인지 여부를 어택 검출기 720을 통하여 판단한다. 어드레스 "333"이 어택 타겟 저장 영역인 것으로 판단되는 경우, 데이터 컨트롤러 710은 ADDR 영역 및 CMD 영역에 각각 해당 저장 영역에 대한 어드레스 "333"과 라이트 커맨드 "W"를 저장할 수 있다. 또한 데이터 컨트롤러 710은 해당하는 라이트 요청을 지연 처리하고 지연 처리를 나타내는 정보와 지연 처리 시간에 대한 정보를 각각 DELAYED 영역과 Time 영역에 저장할 수 있다. 비록 도 8에는 도시되어 있지 않지만, 버퍼 800에는 지연 처리되는 라이트 요청에 따른 라이트 데이터가 저장될 수 있다.
리프레시 주기가 완료된 경우 데이터 컨트롤러 710은 해당하는 액세스 요청에 따른 데이터를 해당하는 메모리의 저장 영역으로 플러시하고 버퍼 800을 업데이트할 수 있다. 예를 들어, 데이터 컨트롤러 710은 리프레시 주기가 완료된 경우 어드레스 "444"에 대한 라이트 요청에 따른 데이터를 해당 어드레스 "444"로 플러시하고 버퍼 800의 해당 VALID 영역을 "0"으로 업데이트할 수 있다. 이와 같이 버퍼 800에 의해 저장되는 어택 저장 영역들에 대한 리스트 스택(list stack)은 리프레시 주기를 기준으로 유지될 수 있으며, 인접한 빅팀 저장 영역들이 리프레시될 수 있다.
도 9는 본 출원의 실시 예에 따른 메모리 블레이드 900의 구성을 도시하는 도면이다.
도 9를 참조하면, 메모리 블레이드 900은 메모리 910과 컨트롤러 950을 포함할 수 있다. 여기서는 메모리 910이 DRAM인 경우가 예시적으로 설명될 것이지만, 본 출원의 실시 예에 따른 동작은 DRAM과 유사하게 메모리 어택이 발생할 수 있고, 또한 리프레시 동작을 수행할 수 있는 PCRAM에서도 동일하게 적용될 수 있음에 유의하여야 한다.
메모리 910은 메모리 셀 어레이(memory cell array) 920, 로우 디코더(row decoder) 925, 컬럼 디코더(column decoder) 930, 센스 증폭기(sense amplifier) 935 및 입출력 버퍼(inout buffer) 940을 포함할 수 있다.
메모리 셀 어레이 920은 다수의 워드 라인들과 다수의 비트 라인들이 교차하여 배치된 다수의 메모리 셀들을 포함할 수 있다. 로우 디코더 925는 메모리 셀 어레이 920으로 로우 어드레스(row address)를 제공하고, 메모리 셀 어레이 920에 포함되는 다수의 워드 라인들 중 적어도 하나를 선택할 수 있다. 컬럼 디코더 930은 메모리 셀 어레이 920으로 컬럼 어드레스(column address)를 제공하고, 메모리 셀 어레이 920에 포함되는 다수의 비트 라인 쌍들 중 적어도 하나의 비트 라인 쌍을 선택할 수 있다.
다수의 메모리 셀들 각각은 워드 라인에 의하여 선택되고, 메모리 셀의 데이터는 비트 라인을 통하여 센스 증폭기 935로 전송될 수 있다. 센스 증폭기 935는 메모리 셀 어레이 920에서 선택된 로우(row)에 해당하는 메모리 셀의 데이터를 센싱하여 각 비트 라인을 통하여 증폭하여 입출력 버퍼 940으로 출력할 수 있다. 또한 센스 증폭기 935는 입출력 버퍼 940으로부터 수신되는 데이터를 메모리 셀 어레이 920에서 선택된 로우에 해당하는 메모리 셀에 라이트할 수 있다. 입출력 버퍼 940은 메모리 셀 어레이 920에 라이트될 데이터, 소위 DQ 신호를 데이터 패드를 통해 입력하고, 메모리 셀 어레이 920으로부터 리드되는 데이터를 데이터 패드 DQ를 통하여 출력할 수 있다. 입출력 버퍼 940은 데이터 패드를 통하여 도 5a 및 도 5b에 도시된 메모리 컨트롤러들 520A 내지 520C에 결합될 수 있다.
컨트롤러 950은 컨트롤 블록(control block) 960, 레이턴시 컨트롤러(latency controller) 970, 어드레스 버퍼(address buffer) 980 및 리프레시 컨트롤러(refresh controller) 990을 포함할 수 있다. 컨트롤러 950, 컨트롤 블록 960 및 리프레시 컨트롤러 990은 각각 도 7에 도시된 컨트롤러 700, 데이터 컨트롤러 710 및 리프레시 컨트롤러 760에 대응하는 구성요소일 수 있다. 다양한 실시 예에 있어서, 레이턴시 컨트롤러 970, 어드레스 버퍼 980 및 리프레시 컨트롤러 990은 도 5a 및 도 5b에 도시된 메모리 컨트롤러들 520A 내지 520C에 포함되는 구성요소일 수 있다.
컨트롤 블록 960은 레이턴시 컨트롤러 970, 어드레스 버퍼 980 및 리프레시 컨트롤러 990을 제어할 수 있다. 컨트롤 블록 960은 도 4의 연산 블레이드 200과 같은 호스트로부터 각종 신호들 ADDR, /WE, /CAS, /RAS, /CS, DQ, DQS를 수신할 수 있다. ADDR은 메모리 셀 어레이 920에 대한 로우 어드레스와 컬럼 어드레스를 포함하는 어드레스 신호이다. /WE는 메모리 셀 어레이 920에 대한 라이트 동작을 인에이블시키기 위한 신호이다. /CAS 제어 신호는 컬럼 어드레스 스트로브(column address strobe) 신호이다. /RAS 제어 신호는 로우 어드레스 스트로브(row address strobe) 신호이다. /CS 제어 신호는 메모리 910을 선택하기 위한 신호이다. DQ(Data Queue)신호는 데이터를 포함하는 신호이다. DQS 제어 신호는 데이터 큐(DQ)를 스트로브(strobe)하기 위한 신호이다.
컨트롤 블록 960은 레이턴시 컨트롤러 970을 통하여 메모리 910에 대한 JEDEC(Joint Electron Device Engineering Council) 스펙에서 정의된 타이밍에 따른 동작을 위한 소위 AC 파라미터를 조절할 수 있다. 예를 들어, AC 파라미터는 tRCD(RAS-to-CAS Delay Time) 및 tWR(Write Recovery Time)을 포함할 수 있다. 레이턴시 컨트롤러 970은 컨트롤 블록 960으로부터 카스 레이턴시(CAS latency)를 수신할 수 있다. 레이턴시 컨트롤러 970은 입출력 버퍼 940이 적절한 시점에 데이터를 출력하도록 리드 레이턴시(read latency)를 입출력 버퍼 940으로 전송할 수 있다. 입출력 버퍼 940은 리드 레이턴시가 인에이블되는 동안 센스 증폭기 935를 통해서 메모리 셀 어레이 920으로 데이터를 전송할 수 있다. 즉, 레이턴시 컨트롤러 970은 입출력 버퍼 940을 제어하여 메모리 910에 대한 tRCD 또는 tWR을 조절할 수 있다. 또한, 레이턴시 컨트롤러 970은 입출력 버퍼 940을 제어하여 DQ 또는 DQS 신호의 셋업(setup) 및 홀드(hold) 타임 마진(time margin)을 조절할 수 있다.
리프레시 컨트롤러 990은 메모리 910에 대한 리프레시 동작을 제어할 수 있다. 리프레시 컨트롤러 990은 컨트롤 블록 960으로부터 제공되는 리프레시 커맨드에 응답하여 해당하는 저장 영역에 대하여 리프레시 동작이 수행되도록 할 수 있다. 다양한 실시 예에 있어서, 리프레시 주기가 완료된 경우, 리프레시 컨트롤러 990은 컨트롤 블록 960으로부터 제공되는 리프레시 커맨드에 응답하여 액세스 요청이 지연 처리된 메모리 셀 어레이 920의 저장 영역 또는 이 저장 영역에 인접한 저장 영역에 대하여 리프레시 동작이 수행되도록 할 수 있다. 또한, 비록 리프레시 주기가 완료되지 않았다고 하더라도 리프레시 컨트롤러 990은 컨트롤 블록 960으로부터 제공되는 리프레시 커맨드에 응답하여 메모리 셀 어레이 920의 해당 저장 영역에 하여 리프레시 동작이 수행되도록 할 수 있다.
도 10은 본 출원의 실시 예에 따른 메모리 블레이드에 의한 액세스 요청을 처리하는 동작 1000을 도시하는 도면이다. 도 10에 도시된 동작 1000은 도 7에 도시된 컨트롤러 700에 의해 수행될 수 있다.
도 10을 참조하면, 컨트롤러 700은 다수의 메모리들(예; 도 5a 및 도 5b의 메모리들 420) 중 적어도 하나의 메모리에 포함되는 저장 영역에 대한 액세스 요청이 I/O 인터페이스 730을 통하여 수신되는지 여부를 판단할 수 있다(1010).
다수의 메모리들 중 적어도 하나의 메모리에 포함되는 저장 영역에 대한 액세스 요청이 수신되는 것으로 판단되는 경우, 컨트롤러 700은 어택 검출기 720을 통하여 상기 액세스 요청이 리프레시 주기 내에서 미리 설정된 횟수 이상의 액세스 요청인지 여부를 검출할 수 있다(1020).
상기 액세스 요청이 상기 설정된 횟수 이상의 액세스 요청인 것으로 검출되는 경우, 컨트롤러 700은 상기 액세스 요청을 지연 처리할 수 있다(1040). 반면에, 상기 액세스 요청이 상기 설정된 횟수보다 작은 액세스 요청인 경우, 컨트롤러 700은 상기 액세스 요청을 지연없이 바로 처리할 수 있다(1050).
도 11은 본 출원의 실시 예에 따른 메모리 블레이드에 의한 액세스 요청의 지연 처리 동작 1100을 도시하는 도면이다. 도 11에 도시된 동작 1100은 도 7에 도시된 컨트롤러 700에 의해, 다수의 메모리들 중 적어도 하나의 메모리에 포함되는 저장 영역에 대한 액세스 요청이 리프레시 주기 내에서 미리 설정된 횟수 이상의 액세스 요청인 경우에 수행될 수 있다.
도 11을 참조하면, 컨트롤러 700의 데이터 컨트롤러 710은 리프레시 주기 내에서 미리 설정된 횟수 이상 발생한 액세스 요청과 관련하는 메모리에 포함되는 저장 영역에 대한 정보를 버퍼 740에 버퍼링할 수 있다(1110). 예를 들어, 상기 액세스 요청이 라이트 요청인 경우, 데이터 컨트롤러 710은 상기 저장 영역에 대한 어드레스, 라이트 커맨드, 라이트 데이터 및 지연 처리 여부에 대한 정보를 버퍼 740에 버퍼링할 수 있다. 다른 예로, 상기 액세스 요청이 리드 요청인 경우, 데이터 컨트롤러 710은 상기 저장 영역에 대한 어드레스, 리드 커맨드 및 및 지연 처리 여부에 대한 정보를 버퍼 740에 버퍼링할 수 있다.
리프레시 주기가 완료된 것으로 판단되는 경우(1120, YES), 이에 응답하여 데이터 컨트롤러 710은 버퍼 740에 버퍼링된 데이터를 상기 저장 영역으로 플러시(flush)할 수 있다(1130). 또한, 데이터 컨트롤러 710은 액세스 요청과 관련하는 메모리의 저장 영역에 대한 리프레시 커맨드 또는 저장 영역에 인접한 저장 영역에 대한 리프레시 커맨드를 생성할 수 있다. 리프레시 커맨드에 응답하여, 리프레시 컨트롤러 760은 액세스 요청과 관련하는 메모리의 저장 영역 또는 인접한 저장 영역에 대한 리프레시 동작을 수행할 수 있다. 이러한 리프레시 동작이 수행된 경우, 데이터 컨트롤러 710은 버퍼 740에 버퍼링되어 있던 해당 저장 영역에 대한 정보를 클리어할 수 있다.
리프레시 주기가 완료되지 않은 것으로 판단되는 경우에도(1120, NO), 버퍼740이 풀(full) 상태인 것으로 판단되는 경우(1140, YES), 이에 응답하여 데이터 컨트롤러 710은 액세스 요청과 관련하는 메모리의 저장 영역에 인접한 적어도 하나의 인접 저장 영역에 대한 리프레시 커맨드를 생성할 수 있다. 리프레시 커맨드에 응답하여, 리프레시 컨트롤러 760은 액세스 요청과 관련하는 메모리의 인접 저장 영역에 대한 리프레시 동작을 수행할 수 있다(1150).
전술한 바와 같이, 본 출원의 실시 예들은 메모리 블레이드와 같은 통합 메모리 디바이스에 포함될 수 있는 특정 메모리에 로우 해머와 같은 메모리 어택이 발생하는 경우 어택 타겟 저장 영역에 대한 액세스 요청을 지연 처리함으로써 빅팀 저장 영역에서의 데이터 변형의 위험성을 제거할 수 있다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관해 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로, 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.

Claims (20)

  1. 다수의 메모리들; 및
    상기 다수의 메모리들을 통합 관리하기 위한 컨트롤러를 포함하고,
    상기 컨트롤러는,
    상기 메모리들 중 적어도 하나의 메모리에 포함되는 저장 영역에 대한 액세스 요청이 수신될 때 상기 액세스 요청이 리프레시 주기 내에서 미리 설정된 횟수 이상의 액세스 요청인지 여부를 검출하고,
    상기 액세스 요청이 상기 설정된 횟수 이상의 액세스 요청인 경우, 상기 액세스 요청을 지연 처리하는 통합 메모리 디바이스.
  2. 청구항 1에 있어서, 상기 데이터 컨트롤러는,
    상기 액세스 요청이 상기 설정된 횟수보다 작은 액세스 요청인 경우, 상기 액세스 요청을 지연없이 바로 처리하는 통합 메모리 디바이스.
  3. 청구항 1에 있어서, 상기 컨트롤러는,
    상기 액세스 요청이 상기 리프레시 주기 내에서 미리 설정된 횟수 이상의 액세스 요청인지 여부를 검출하는 검출기; 및
    상기 액세스 요청이 상기 설정된 횟수 이상의 액세스 요청인 경우, 상기 액세스 요청을 지연 처리하는 데이터 컨트롤러를 포함하는 통합 메모리 디바이스.
  4. 청구항 3에 있어서, 상기 컨트롤러는,
    상기 액세스 요청을 수신하는 입/출력 인터페이스를 더 포함하는 통합 메모리 디바이스.
  5. 청구항 2에 있어서, 상기 데이터 컨트롤러는,
    상기 액세스 요청이 상기 설정된 횟수 이상의 액세스 요청인 경우, 상기 액세스 요청을 지연시키고,
    상기 리프레시 주기가 완료됨에 응답하여 상기 지연된 액세스 요청을 수행하는 통합 메모리 디바이스.
  6. 청구항 5에 있어서, 상기 액세스 요청은,
    상기 저장 영역에 대한 데이터의 라이트 요청 또는 리드 요청 중의 적어도 하나를 포함하는 통합 메모리 디바이스.
  7. 청구항 6에 있어서, 상기 적어도 하나의 메모리는 DRAM(Dynamic Random Access Memory) 또는 PCRAM(Phase Change RAM) 중의 적어도 하나를 포함하는 통합 메모리 디바이스.
  8. 청구항 7에 있어서, 상기 저장 영역은,
    로우(row) 영역을 포함하고,
    상기 데이터 컨트롤러는,
    상기 리프레시 주기가 완료됨에 응답하여 상기 로우 영역에 인접한 적어도 하나의 인접 로우 영역에 대한 리프레시 커맨드를 생성하는 통합 메모리 디바이스.
  9. 청구항 8에 있어서, 상기 리프레시 커맨드에 응답하여 상기 인접 로우 영역을 리프레시하기 위한 리프레시 컨트롤러를 더 포함하는 통합 메모리 디바이스.
  10. 청구항 9에 있어서, 상기 데이터 컨트롤러는,
    상기 액세스 요청이 라이트 요청인 경우, 상기 저장 영역에 대한 어드레스, 라이트 커맨드, 라이트 데이터 및 지연 처리 여부에 대한 정보를 버퍼링하고,
    상기 액세스 요청이 리드 요청인 경우, 상기 저장 영역에 대한 어드레스, 리드 커맨드 및 및 지연 처리 여부에 대한 정보를 버퍼링하는 버퍼를 더 포함하는 통합 메모리 디바이스.
  11. 청구항 10에 있어서, 상기 데이터 컨트롤러는,
    상기 리프레시 주기가 완료됨에 응답하여 상기 버퍼에 버퍼링된 데이터를 상기 저장 영역으로 플러시(flush)하는 통합 메모리 디바이스.
  12. 청구항 10에 있어서, 상기 데이터 컨트롤러는,
    상기 버퍼의 풀(full) 상태에 응답하여 상기 로우 영역에 인접한 적어도 하나의 인접 로우 영역에 대한 리프레시 커맨드를 생성하는 통합 메모리 디바이스.
  13. 다수의 메모리들; 및 상기 다수의 메모리들을 통합 관리하기 위한 컨트롤러를 포함하는 통합 메모리 디바이스의 동작 방법에 있어서:
    상기 메모리들 중 적어도 하나의 메모리에 포함되는 저장 영역에 대한 액세스 요청이 수신될 때 상기 액세스 요청이 리프레시 주기 내에서 미리 설정된 횟수 이상의 액세스 요청인지 여부를 검출하는 과정; 및
    상기 액세스 요청이 상기 설정된 횟수 이상의 액세스 요청인 경우, 상기 액세스 요청을 지연 처리하는 과정을 포함하는 방법.
  14. 청구항 13에 있어서, 상기 액세스 요청이 상기 설정된 횟수보다 작은 액세스 요청인 경우, 상기 액세스 요청을 지연없이 바로 처리하는 과정을 더 포함하는 방법.
  15. 청구항 13에 있어서, 상기 액세스 요청을 지연 처리하는 과정은,
    상기 액세스 요청이 상기 설정된 횟수 이상의 액세스 요청인 경우, 상기 액세스 요청을 지연시키는 과정; 및
    상기 리프레시 주기가 완료됨에 응답하여 상기 지연된 액세스 요청을 수행하는 과정을 포함하는 방법.
  16. 청구항 15에 있어서, 상기 액세스 요청은,
    상기 저장 영역에 대한 데이터의 라이트 요청 또는 리드 요청 중의 적어도 하나를 포함하는 방법.
  17. 청구항 16에 있어서, 상기 적어도 하나의 메모리는, DRAM(Dynamic Random Access Memory) 또는 PCRAM(Phase Change RAM) 중의 적어도 하나를 포함하고,
    상기 저장 영역은, 로우(row) 영역을 포함하고,
    상기 리프레시 주기가 완료됨에 응답하여 상기 로우 영역에 인접한 적어도 하나의 인접 로우 영역을 리프레시하는 과정을 더 포함하는 방법.
  18. 청구항 17에 있어서, 상기 액세스 요청을 지연시키는 과정은,
    상기 액세스 요청이 라이트 요청인 경우, 상기 저장 영역에 대한 어드레스, 라이트 커맨드, 라이트 데이터 및 지연 처리 여부에 대한 정보를 버퍼링하는 과정; 및
    상기 액세스 요청이 리드 요청인 경우, 상기 저장 영역에 대한 어드레스, 리드 커맨드 및 및 지연 처리 여부에 대한 정보를 버퍼링하는 과정을 포함하는 방법.
  19. 청구항 18에 있어서, 상기 리프레시 주기가 완료됨에 응답하여 상기 버퍼링된 데이터를 상기 저장 영역으로 플러시(flush)하는 과정을 더 포함하는 방법.
  20. 청구항 18에 있어서, 상기 버퍼의 풀(full) 상태에 응답하여 상기 로우 영역에 인접한 적어도 하나의 인접 로우 영역을 리프레시하는 과정을 더 포함하는 방법.
KR1020180019212A 2017-10-30 2018-02-19 통합 메모리 디바이스 및 그의 동작 방법 KR102499255B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020180019212A KR102499255B1 (ko) 2018-02-19 2018-02-19 통합 메모리 디바이스 및 그의 동작 방법
US16/159,479 US10795613B2 (en) 2018-02-19 2018-10-12 Convergence memory device and operation method thereof
CN201811606650.5A CN110175140B (zh) 2018-02-19 2018-12-27 融合式存储器件及其操作方法
US16/858,455 US11544168B2 (en) 2017-10-30 2020-04-24 Memory system
US18/060,524 US20230094144A1 (en) 2017-10-30 2022-11-30 Memory system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180019212A KR102499255B1 (ko) 2018-02-19 2018-02-19 통합 메모리 디바이스 및 그의 동작 방법

Publications (2)

Publication Number Publication Date
KR20190099591A true KR20190099591A (ko) 2019-08-28
KR102499255B1 KR102499255B1 (ko) 2023-02-13

Family

ID=67616830

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180019212A KR102499255B1 (ko) 2017-10-30 2018-02-19 통합 메모리 디바이스 및 그의 동작 방법

Country Status (3)

Country Link
US (1) US10795613B2 (ko)
KR (1) KR102499255B1 (ko)
CN (1) CN110175140B (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11010233B1 (en) 2018-01-18 2021-05-18 Pure Storage, Inc Hardware-based system monitoring
US11711310B2 (en) 2019-09-18 2023-07-25 Tweenznet Ltd. System and method for determining a network performance property in at least one network
US11941116B2 (en) 2019-11-22 2024-03-26 Pure Storage, Inc. Ransomware-based data protection parameter modification
US11615185B2 (en) 2019-11-22 2023-03-28 Pure Storage, Inc. Multi-layer security threat detection for a storage system
US11675898B2 (en) 2019-11-22 2023-06-13 Pure Storage, Inc. Recovery dataset management for security threat monitoring
US11500788B2 (en) 2019-11-22 2022-11-15 Pure Storage, Inc. Logical address based authorization of operations with respect to a storage system
US11720692B2 (en) 2019-11-22 2023-08-08 Pure Storage, Inc. Hardware token based management of recovery datasets for a storage system
US11651075B2 (en) 2019-11-22 2023-05-16 Pure Storage, Inc. Extensible attack monitoring by a storage system
US11720714B2 (en) 2019-11-22 2023-08-08 Pure Storage, Inc. Inter-I/O relationship based detection of a security threat to a storage system
US11520907B1 (en) 2019-11-22 2022-12-06 Pure Storage, Inc. Storage system snapshot retention based on encrypted data
US11755751B2 (en) 2019-11-22 2023-09-12 Pure Storage, Inc. Modify access restrictions in response to a possible attack against data stored by a storage system
US11625481B2 (en) 2019-11-22 2023-04-11 Pure Storage, Inc. Selective throttling of operations potentially related to a security threat to a storage system
US11341236B2 (en) 2019-11-22 2022-05-24 Pure Storage, Inc. Traffic-based detection of a security threat to a storage system
US11645162B2 (en) 2019-11-22 2023-05-09 Pure Storage, Inc. Recovery point determination for data restoration in a storage system
US11657155B2 (en) 2019-11-22 2023-05-23 Pure Storage, Inc Snapshot delta metric based determination of a possible ransomware attack against data maintained by a storage system
US11687418B2 (en) 2019-11-22 2023-06-27 Pure Storage, Inc. Automatic generation of recovery plans specific to individual storage elements
US11716338B2 (en) * 2019-11-26 2023-08-01 Tweenznet Ltd. System and method for determining a file-access pattern and detecting ransomware attacks in at least one computer network
US20230022096A1 (en) * 2021-07-22 2023-01-26 Vmware, Inc. Coherence-based attack detection
KR20230021496A (ko) 2021-08-05 2023-02-14 삼성전자주식회사 로우 해머 제어 방법 및 메모리 장치
CN114500108A (zh) * 2022-04-02 2022-05-13 四川易诚智讯科技有限公司 一种安全高效的工业硬件加密方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008192266A (ja) * 2007-02-07 2008-08-21 Megachips Lsi Solutions Inc メモリコントローラ
KR20160144516A (ko) * 2012-12-21 2016-12-16 인텔 코포레이션 행 해머 이벤트에 응답하기 위한 방법, 장치 및 시스템
KR101731508B1 (ko) * 2012-11-30 2017-05-11 인텔 코포레이션 저장된 행 해머 임계값에 기초한 행 해머 모니터링

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4142068B2 (ja) * 2006-06-16 2008-08-27 株式会社ソニー・コンピュータエンタテインメント 情報処理装置およびアクセス制御方法
JP2008015876A (ja) * 2006-07-07 2008-01-24 Matsushita Electric Ind Co Ltd データアクセスシステム、データアクセス装置、データアクセス集積回路及びデータアクセス方法
KR20080023191A (ko) * 2006-09-08 2008-03-12 삼성전자주식회사 퓨전메모리 장치 및 방법
JP5012898B2 (ja) * 2007-07-18 2012-08-29 富士通株式会社 メモリリフレッシュ装置およびメモリリフレッシュ方法
US9268721B2 (en) * 2010-11-25 2016-02-23 International Business Machines Corporation Holding by a memory controller multiple central processing unit memory access requests, and performing the multiple central processing unit memory requests in one transfer cycle
KR20130136343A (ko) * 2012-06-04 2013-12-12 에스케이하이닉스 주식회사 반도체 장치 및 그 동작 방법
US9384821B2 (en) * 2012-11-30 2016-07-05 Intel Corporation Row hammer monitoring based on stored row hammer threshold value
US9087554B1 (en) * 2012-12-21 2015-07-21 Samsung Electronics Co., Ltd. Memory device, method for performing refresh operation of the memory device, and system including the same
US9342443B2 (en) 2013-03-15 2016-05-17 Micron Technology, Inc. Systems and methods for memory system management based on thermal information of a memory system
US9524771B2 (en) 2013-07-12 2016-12-20 Qualcomm Incorporated DRAM sub-array level autonomic refresh memory controller optimization
US11243898B2 (en) * 2014-08-01 2022-02-08 Arm Limited Memory controller and method for controlling a memory device to process access requests issued by at least one master device
KR20170057704A (ko) 2015-11-17 2017-05-25 삼성전자주식회사 액세스 동작과 리프레쉬 동작의 충돌을 제어하는 메모리 장치 및 이를 포함하는 메모리 시스템
KR20180075761A (ko) * 2016-12-26 2018-07-05 에스케이하이닉스 주식회사 메모리 장치, 이를 포함하는 메모리 시스템, 및, 그의 리프레시 동작방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008192266A (ja) * 2007-02-07 2008-08-21 Megachips Lsi Solutions Inc メモリコントローラ
KR101731508B1 (ko) * 2012-11-30 2017-05-11 인텔 코포레이션 저장된 행 해머 임계값에 기초한 행 해머 모니터링
KR20160144516A (ko) * 2012-12-21 2016-12-16 인텔 코포레이션 행 해머 이벤트에 응답하기 위한 방법, 장치 및 시스템
KR20170127046A (ko) * 2012-12-21 2017-11-20 인텔 코포레이션 행 해머 이벤트에 응답하기 위한 방법, 장치 및 시스템

Also Published As

Publication number Publication date
CN110175140B (zh) 2023-04-18
CN110175140A (zh) 2019-08-27
KR102499255B1 (ko) 2023-02-13
US10795613B2 (en) 2020-10-06
US20190258426A1 (en) 2019-08-22

Similar Documents

Publication Publication Date Title
KR102499255B1 (ko) 통합 메모리 디바이스 및 그의 동작 방법
US11482278B2 (en) Method of performing internal processing operation of memory device
CN110008149B (zh) 融合式存储器件及其操作方法
US10908846B2 (en) Memory system and operation method thereof
TWI795505B (zh) 記憶體系統、其操作方法和包括該記憶體系統的計算系統
US20230094144A1 (en) Memory system
US10936534B2 (en) Converged memory device and method thereof
US11216326B2 (en) Memory system and operation method thereof
KR102433549B1 (ko) 통합 메모리 디바이스 및 그의 동작 방법
KR102586768B1 (ko) 컴퓨팅 시스템 및 그것의 동작방법
KR102394695B1 (ko) 메모리 시스템 및 그것의 동작방법
KR20190123038A (ko) 메모리 시스템 및 그것의 동작방법
KR20230160673A (ko) 메모리 시스템 및 이를 포함하는 컴퓨팅 시스템

Legal Events

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