KR102514717B1 - 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 - Google Patents

메모리 컨트롤러 및 이를 포함하는 메모리 시스템 Download PDF

Info

Publication number
KR102514717B1
KR102514717B1 KR1020160138239A KR20160138239A KR102514717B1 KR 102514717 B1 KR102514717 B1 KR 102514717B1 KR 1020160138239 A KR1020160138239 A KR 1020160138239A KR 20160138239 A KR20160138239 A KR 20160138239A KR 102514717 B1 KR102514717 B1 KR 102514717B1
Authority
KR
South Korea
Prior art keywords
memory
address
central processing
processing unit
extended
Prior art date
Application number
KR1020160138239A
Other languages
English (en)
Other versions
KR20180044567A (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 KR1020160138239A priority Critical patent/KR102514717B1/ko
Priority to CN201710790161.9A priority patent/CN107977325B/zh
Priority to US15/696,940 priority patent/US10261714B2/en
Publication of KR20180044567A publication Critical patent/KR20180044567A/ko
Application granted granted Critical
Publication of KR102514717B1 publication Critical patent/KR102514717B1/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/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1657Access to multiple memories
    • 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/1678Details of memory controller using bus width
    • 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
    • G06F3/0611Improving I/O performance in relation to response time
    • 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
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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)
  • Computer Networks & Wireless Communication (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명은 높은 대역폭(High bandwidth)을 갖는 로우 레벨 메모리의 인터페이스(low level memory interface)를 이용하여, 메인 메모리의 뱅크 확장에 따른 확장 어드레스 변경 시, 속도와 성능을 향상시키는 메모리 컨트롤러 및 이를 포함하는 메모리 시스템을 제공하기 것이다. 상기 메모리 컨트롤러는, 메인 메모리에 포함된 복수의 메모리 뱅크 중 어느 하나를 선택하는 중앙처리장치, 상기 중앙처리장치가 선택한 제1 메모리 뱅크 대한 주소값을 저장하는 제1 확장 어드레스(Extended Address)를 포함하는 메모리, 및 상기 제1 확장 어드레스에 저장된 주소값를 복제(cloning)하여 저장하는 제2 확장 어드레스를 포함하는 메모리 관리 유닛(MMU)을 포함하되, 상기 메모리 관리 유닛은, 상기 제1 확장 어드레스가 저장된 상기 메모리의 메모리 어드레스를 저장하고, 상기 중앙처리장치에서 상기 메모리로 입력되는 어드레스를 입력받아 상기 메모리 어드레스와 상기 어드레스를 비교한 뒤, 업데이트 신호를 출력하는 스눕 로직(Snoop Logic)과, 상기 업데이트 신호를 입력받아, 상기 중앙처리장치로부터 수신한 데이터를 상기 제2 확장 어드레스에 저장하는 클로닝 레지스터(Cloning register)를 포함한다.

Description

메모리 컨트롤러 및 이를 포함하는 메모리 시스템{Memory controller and memory system including the same}
본 발명은 메모리 컨트롤러 및 이를 포함하는 메모리 시스템에 관한 것으로, 좀 더 구체적으로, 플래시 메모리를 기초로 하는 메모리 컨트롤러 및 이를 포함하는 메모리 시스템에 관한 것이다.
최근의 플래시 메모리 장치들은 '내장형 플래시 메모리'와, '시스템 온 칩(System on Chip: SoC) 장치'를 포함한다. 플래시 메모리 셀 어레이와 플래시 메모리 셀을 위한 주변 회로는, 단일의 칩 또는 집적 회로 상에 형성된다. 주변 회로는 고전압 회로, 마이크로제어기 또는 프로세서를 위한 로직 회로 및 다른 유형의 장치를 포함할 수 있다.
SoC 메모리 시스템을 구성하는 과정에서, 높은 대역폭(high bandwidth)을 가지는 메모리 일수록 단가가 높고 집적도가 낮기 때문에 메모리의 사용 목적에 따라 높은 대역폭(high bandwidth)과 낮은 대역폭(low bandwidth)의 메모리를 구분하여 다중 레벨(multi-level)로 구성하는 경우가 일반적이다. 높은 대역폭의 메모리(High bandwidth memory)는 중앙처리장치(CPU)에 대하여 낮은 지연(low latency)을 갖고, 직접 접근이 가능한 전용의 인터페이스(interface)를 가지며, 이를 로우 레벨 메모리(low-level memory)라 한다. 이와 반대로, 낮은 대역폭 메모리(low bandwidth memory)의 경우, SoC 대상 온칩 버스 프로토콜(SoC target on-chip bus protocol)을 이용하여 다른 구성요소에 접근하도록 구성되며, 이를 하이 레벨 메모리(high-level memory)라 한다.
최근 고용량 저장장치에 대한 수요의 증가로 SoC 메모리 시스템 또한 고용량의 저장공간을 필요로 하게 되었는데, 이를 구현하기 위한 방법 중 하나로 '뱅크 메모리(bank memory) 확장 기법'이 이용된다. 뱅크 메모리 확장 기법은 동일 주소 공간 내에 교체 가능한 복수의 물리적 메모리를 맵핑(mapping)하고, 이를 소프트웨어를 이용해 제어함으로써 사용 가능한 메모리량을 늘리는 방법이다.
종래의 기술에서 SoC 대상 온칩 버스 프로토콜(SoC target on-chip bus protocol)을 이용한 뱅크 메모리 확장 방법의 경우, 낮은 대역폭의 메모리(low bandwidth memory)를 이용하기 때문에, 메모리의 뱅크 확장에 따른 확장 어드레스(Extended address)를 자주 변경해야 하는 경우, 과다한 지연(latency)이 발생하여 성능이 저하되는 문제점이 있었다.
본 발명이 해결하고자 하는 기술적 과제는, 높은 대역폭(High bandwidth)을 갖는 로우 레벨 메모리의 인터페이스(low level memory interface)를 이용하여, 플래시 메모리의 뱅크 확장에 따른 확장 어드레스 변경 시, 속도와 성능이 향상되는 메모리 컨트롤러를 제공하는 것이다.
본 발명이 해결하고자 하는 기술적 과제는, 높은 대역폭(High bandwidth)을 갖는 로우 레벨 메모리의 인터페이스(low level memory interface)를 이용하여, 플래시 메모리의 뱅크 확장에 따른 확장 어드레스 변경 시, 속도와 성능이 향상되는 메모리 시스템을 제공하는 것이다.
본 발명이 해결하려는 과제들은 이상에서 언급한 과제들로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 과제를 해결하기 위한 본 발명의 메모리 컨트롤러의 일 태양(aspect)은, 메인 메모리에 포함된 복수의 메모리 뱅크 중 어느 하나를 선택하는 중앙처리장치, 상기 중앙처리장치가 선택한 제1 메모리 뱅크 대한 주소값을 저장하는 제1 확장 어드레스(Extended Address)를 포함하는 메모리, 및 상기 제1 확장 어드레스에 저장된 주소값를 복제(cloning)하여 저장하는 제2 확장 어드레스를 포함하는 메모리 관리 유닛(MMU)을 포함하되, 상기 메모리 관리 유닛은, 상기 제1 확장 어드레스가 저장된 상기 메모리의 메모리 어드레스를 저장하고, 상기 중앙처리장치에서 상기 메모리로 입력되는 어드레스를 입력받아 상기 메모리 어드레스와 상기 어드레스를 비교한 뒤, 업데이트 신호를 출력하는 스눕 로직(Snoop Logic)과, 상기 업데이트 신호를 입력받아, 상기 중앙처리장치로부터 수신한 데이터를 상기 제2 확장 어드레스에 저장하는 클로닝 레지스터(Cloning register)를 포함한다.
상기 과제를 해결하기 위한 본 발명의 메모리 시스템의 일 태양은, 데이터를 저장하기 위한 복수의 메모리 뱅크(Bank)를 포함하는 메인 메모리 및 상기 메인 메모리를 제어하는 메모리 컨트롤러를 포함하되, 상기 메모리 컨트롤러는, 상기 복수의 메모리 뱅크 중 어느 하나를 선택하는 중앙처리장치와, 상기 중앙처리장치가 선택한 제1 메모리 뱅크 대한 주소값을 저장한 제1 확장 어드레스(Extended Address)를 포함하는 메모리와, 상기 제1 확장 어드레스에 저장된 주소값를 복제(cloning)하여 저장하는 제2 확장 어드레스를 포함하는 메모리 관리 유닛(MMU)와, 상기 제2 확장 어드레스에 저장된 주소값를 이용하여 상기 제1 메모리 뱅크에 접근하는 메인 메모리 컨트롤러를 포함하되, 상기 중앙처리장치가 선택된 메모리 뱅크를 상기 제1 메모리 뱅크에서 상기 제1 메모리 뱅크와 다른 제2 메모리 뱅크로 변경하는 경우, 상기 메모리는 상기 제2 메모리 뱅크에 대한 주소값으로 상기 제1 확장 어드레스를 업데이트 하고, 상기 메모리 관리 유닛은 상기 제1 확장 어드레스에 업데이트된 주소값으로 상기 제2 확장 어드레스를 업데이트한다.
본 발명의 기타 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 본 발명의 몇몇 실시예에 따른 메모리 시스템를 설명하기 위한 블럭도이다.
도 2는 본 발명의 몇몇 실시예에 따른 메모리 컨트롤러를 설명하기 위한 블럭도이다.
도 3은 본 발명의 몇몇 실시예에 따른 메모리 컨트롤러를 설명하기 위한 블럭도이다.
도 4는 본 발명의 몇몇 실시예에 따른 메모리 컨트롤러의 메모리 관리 유닛(MMU)의 구성요소를 설명하기 위한 블럭도이다.
도 5는 본 발명의 몇몇 실시예에 따른 메모리 컨트롤러의 메모리 관리 유닛(MMU)의 클로닝 레지스터를 설명하기 위한 블럭도이다.
도 6은 본 발명의 몇몇 실시예에 따른 메모리 컨트롤러에 포함된 메모리 관리 유닛(MMU)의 뱅크 선택 동작을 설명하기 위한 도면이다.
도 7은 본 발명의 몇몇 실시예에 따른 메모리 컨트롤러의 동작을 설명하기 위한 타이밍도이다.
도 8은 도 7의 <t = to>에서의 메모리 컨트롤러의 동작을 설명하기 위한 블럭도이다.
도 9는 도 7의 <t = t2>에서의 메모리 컨트롤러의 동작을 설명하기 위한 블럭도이다.
도 10은 도 7의 <t = t3>에서의 메모리 컨트롤러의 동작을 설명하기 위한 블럭도이다.
이하에서, 도 1 내지 도 9를 이용하여, 본 발명의 몇몇 실시예에 따른 메모리 컨트롤러 및 이를 포함하는 메모리 시스템에 대해 설명한다.
도 1은 본 발명의 몇몇 실시예에 따른 메모리 시스템를 설명하기 위한 블럭도이다.
도 1을 참조하면, 본 발명의 몇몇 실시예에 따른 메모리 시스템은 호스트(400)(Host)와 저장 장치(1000)(Storage Device)를 포함한다. 저장 장치(1000)는 메모리 컨트롤러(100), 메인 메모리(300)를 포함한다. 여기에서, 각각의 구성은 별개의 칩이나 모듈이나 장치로 구성될 수 있고, 하나의 장치 내에 포함될 수도 있다. 예를 들어, 메모리 컨트롤러(100)와 메인 메모리(300)는 하나의 저장 장치(1000)로 구현되고, 별개의 호스트(400)에 연결되어 사용될 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니며, 호스트(400), 메모리 컨트롤러(100), 메인 메모리(300)는 하나의 장치에 집적될 수 있다.
호스트(400)는 애플리케이션이나 파일 시스템을 이용하여 메모리 컨트롤러(100)로 읽기 또는 쓰기 등의 요청을 한다. 메모리 컨트롤러(100)는 호스트(400)로부터의 요청에 응답하여 메인 메모리(300)의 동작(예를 들면, 읽기 또는 쓰기 동작 등)을 제어한다.
메인 메모리(300)는 스트링 셀 구조(string cell structure)를 갖는 복수의 메모리 셀로 구성된다. 이러한 메모리 셀들의 집합을 메모리 셀 어레이(memory cell array)라고 부른다. 복수의 메모리 셀 어레이는 메모리 뱅크(memory bank)에 포함된다. 메인 메모리(300)는 복수의 메모리 뱅크를 포함할 수 있다. 메인 메모리(300)에 포함되는 메모리 뱅크의 숫자가 증가함에 따라, 메인 메모리(300)의 용량은 증가할 수 있다.
이때, 메인 메모리(300)에 포함된 각각의 메모리 뱅크들은 동일 주소를 이용하며, 액세스하는 메모리 뱅크가 변경되는 방식으로 메모리 컨트롤러(100)에 의해 제어될 수 있다. 이러한 방식을 '뱅크 메모리 확장 기법'이라 한다.
메모리 컨트롤러(100)는 메인 메모리(300)의 동작을 제어할 수 있다. 구체적으로, 메모리 컨트롤러(100)는 메인 메모리(300)에 포함된 복수의 메모리 뱅크 중에서 어떠한 메모리 뱅크를 이용할 것인지를 결정하여, 상기 메모리 뱅크를 액세스 할 수 있다. 이에 대한 구체적인 설명은 다음 도면을 참조하여 후술하도록 한다.
도 2는 본 발명의 몇몇 실시예에 따른 메모리 컨트롤러를 설명하기 위한 블럭도이다.
도 2를 참조하면, 본 발명의 몇몇 실시예에 따른 메모리 컨트롤러(100)는, 중앙처리장치(110)(CPU), 메모리(120), 메모리 관리 유닛(130)(Memory Management Unit; 이하, MMU), 메인 메모리 컨트롤러(140)(Main Memory Controller), 호스트 인터페이스(150)(Host I/F), 버스(170)를 포함할 수 있다.
중앙처리장치(110)는 메모리 컨트롤러(100)의 구동에 필요한 연산을 수행할 수 있다. 중앙처리장치(110)는 메모리(120) 및 메모리 관리 유닛(130)과 저지연 인터페이스(Low-latency Interface)를 통하여 연결될 수 있다. 중앙처리장치(110)는 메인 메모리(300)의 어떠한 메모리 뱅크에 액세스 할지를 선택하며, 메모리(120)와 메모리 관리 유닛(130)에 선택된 메모리 뱅크에 대한 주소값을 전달할 수 있다.
메모리(120)는 중앙처리장치(110)에서 처리하는 데이터를 저장할 수 있다. 메모리(120)는 중앙처리장치(110)와 직접적으로 연결되어 데이터를 교환할 수 있다. 메모리(120)는 중앙처리장치(110)와 빠르게 데이터를 교환할 수 있도록, 높은 대역폭(high bandwidth)을 가질 수 있다. 이에 따라, 메모리(120)는 중앙처리장치(110)에 대하여 낮은 지연속도(low latency)를 가질 수 있다. 메모리(120)는 중앙처리장치(110)에 직접 접근이 가능한 전용의 인터페이스(interface)를 가지며, 이때, 메모리(120)는 로우 레벨 메모리(low-level memory)에 해당한다.
메모리(120)는 휘발성 메모리 또는 비휘발성 메모리를 포함한다. 예를 들어, 메모리(120)는 대용량의 메인 메모리(main memory)에 대한 접근을 빠르게 하기 위해 CPU 칩 내부나 근방에 탑재되는 TCM(Tightly Coupled Memory)일 수 있으나, 본 발명이 이에 한정되는 것은 아니다. 메모리(120)는 고속의 SRAM을 포함할 수 있다. 이때, 메모리(120)는 캐시 메모리(Cache memory)로써 동작할 수 있다.
메모리 관리 유닛(130)은 메인 메모리(300)에 포함된 복수의 메모리 뱅크 중에서, 특정 메모리 뱅크에 대한 주소값을 출력한다. 상기 주소값은 메인 메모리(300)에 포함된 복수의 메모리 뱅크 중 어떠한 메모리 뱅크를 액세스 해야하는지를 나타낸다.
메인 메모리(300)는 내부의 복수의 메모리 뱅크에 각각의 고유의 주소값을 할당한다. 메모리 관리 유닛(130)은 중앙처리장치(110)에서 액세스하고자 하는 메모리 뱅크에 대한 주소값을 수신하여 저장한다. 메모리 관리 유닛(130)은 저장된 주소값을 메인 메모리(300)를 제어하는 메인 메모리 컨트롤러(140)에 전달한다. 이때, 메모리 관리 유닛(130)에서 출력된 메모리 뱅크의 주소값은 버스(170)를 통하여 메인 메모리 컨트롤러(140)에 전달될 수 있다.
메모리 관리 유닛(130)은 메모리 뱅크를 선택하는데 이용되는 확장 어드레스(Extended Address; 이하, EA)를 포함한다. 확장 어드레스(EA)에 저장된 주소값은 메인 메모리(300)에 포함된 각각의 메모리 뱅크에 대한 고유의 주소값에 해당된다. 즉, 각각의 메모리 뱅크에 고유의 주소값을 할당함으로써, 메모리 컨트롤러(100)가 제어할 수 있는 메인 메모리(300)의 메모리 뱅크의 숫자를 증가시킬 수 있고, 이를 통해, 저장 장치(1000)의 저장 용량도 증가시킬 수 있다.
메모리 관리 유닛(130)은, 메모리(120)와 마찬가지로, 중앙처리장치(110)와 빠르게 데이터를 교환할 수 있도록, 높은 대역폭(high bandwidth)을 갖고, 이에 따라, 메모리 관리 유닛(130)은 낮은 지연속도(low latency)를 갖는다.
종래의 경우, '뱅크 메모리 확장 기법'을 사용하는 메모리 관리 유닛은 메모리 시스템 내에서 버스에 연결되도록 구성되었고, 낮은 대역폭(low bandwidth)을 갖는 하이 레벨 메모리(high-level memory)에 해당하였다. 따라서, 종래의 메모리 시스템의 경우, 빈번한 메모리 뱅크의 변경이 필요한 경우, 성능이 저하되는 문제점이 있었다.
이에 반하여, 본 발명의 메모리 관리 유닛(130)은 중앙처리장치(110)에 직접 접근이 가능한 전용의 인터페이스(interface)를 가진다. 메모리 관리 유닛(130)은 메모리(120)와 마찬가지로 로우 레벨 메모리(low-level memory)에 해당한다. 이에 따라, 메모리 관리 유닛(130)에 빈번한 확장 어드레스(EA)의 변경이 발생하더라도, 저장 장치(1000)의 성능이 저하되는 것을 막을 수 있다. 이에 대한 구체적인 설명은 후술하도록 한다.
메인 메모리 컨트롤러(140)는 메모리 컨트롤러(100)와 메인 메모리(300) 사이의 명령어 및 데이터의 교환을 수행하고, 메인 메모리(300)의 동작을 제어할 수 있다. 메인 메모리 컨트롤러(140)는 중앙처리장치(110)의 데이터 및 메모리 관리 유닛(130)의 주소값을 수신하여, 메인 메모리(300)에 포함된 복수의 메모리 뱅크에 액세스 할 수 있다.
호스트 인터페이스(150)는 호스트(400) 및 메모리 컨트롤러(100) 사이의 데이터 교환을 수행하기 위한 프로토콜을 포함할 수 있다. 예시적으로, 호스트 인터페이스(150)는 USB (Universal Serial Bus) 프로토콜, MMC (multimedia card) 프로토콜, PCI (peripheral component interconnection) 프로토콜, PCI-E (PCI-express) 프로토콜, ATA (Advanced Technology Attachment) 프로토콜, Serial-ATA 프로토콜, Parallel-ATA 프로토콜, SCSI (small computer small interface) 프로토콜, ESDI (enhanced small disk interface) 프로토콜, 그리고 IDE (Integrated Drive Electronics) 프로토콜 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 호스트(400)와 통신하도록 구성될 수 있다.
버스(170)는, 중앙처리장치(110), 메모리(120), 메모리 관리 유닛(130), 메인 메모리 컨트롤러(140), 및 호스트 인터페이스(150)가 서로 데이터 통신을 하는데 이용될 수 있다. 예를 들어, 버스(170)는 중앙처리장치(110)의 출력 및 메모리 관리 유닛(130)의 출력을 메인 메모리 컨트롤러(140)에 전달할 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니다.
버스(170)는 데이터들이 이동되는 통로(path)에 해당한다. 본 발명의 몇몇 실시예에서, 이러한 버스(170)는 다층 구조를 가질 수 있다. 또한, 버스(170)는 중앙처리장치(110), 메모리(120), 메모리 관리 유닛(130), 메인 메모리 컨트롤러(140), 및 호스트 인터페이스(150) 사이의 데이터 교환을 수행하기 위한 프로토콜을 포함할 수 있다. 버스(170)는 SoC 대상 온칩 버스 프로토콜(SoC target on-chip bus protocol)을 이용하여 상기 구성요소에 접근할 수 있다. 이러한 버스(170)의 예로는 다층 AHB(multi-layer Advanced High-performance Bus), 또는 다층 AXI(multi-layer Advanced eXtensible Interface)가 이용될 수 있으나, 본 발명이 이에 제한되는 것은 아니다.
도 3은 본 발명의 몇몇 실시예에 따른 메모리 컨트롤러를 설명하기 위한 블럭도이다.
도 3을 참조하면, 본 발명의 몇몇 실시예에 따른 메모리 컨트롤러(100)에서 중앙처리장치(110)와 메모리(120), 중앙처리장치(110)와 메모리 관리 유닛(130)은 높은 대역폭(high bandwidth)을 갖는 저지연 인터페이스(Low-latency Interface)를 이용하여 연결될 수 있다. 중앙처리장치(110)와 메모리(120), 중앙처리장치(110)와 메모리 관리 유닛(130)은 버스(170)를 이용하지 않고, 고속으로 데이터를 교환할 수 있다.
중앙처리장치(110)는 저지연 인터페이스(Low-latency Interface)를 통하여, 메모리(120)에 자주 사용하는 데이터를 임시로 저장할 수 있고, 메모리 관리 유닛(130)에 선택된 메모리 뱅크에 대한 주소값을 저장할 수 있다.
도면에 명확하게 도시하지는 않았은, 메모리(120)는 중앙처리장치(110)에서 처리가능한 명령어를 저장하는 펌웨어(Firmware; F/W)를 포함하는 코드 메모리(code memory)와, 데이터를 저장하는 데이터 메모리(data memory)를 포함할 수 있다.
메모리(120)는 중앙처리장치(110)가 선택한 메모리 뱅크 대한 주소값을 저장하는 제1 확장 어드레스(First Extended Address; 이하 EA1)를 포함할 수 있다. 제1 확장 어드레스(EA1)는 메모리(120)의 펌웨어(F/W)에 저장될 수 있으나, 본 발명이 이에 한정되는 것은 아니다.
메모리(120)는 메모리 어드레스(memory address; 이하 MA)를 이용하여 제1 확장 어드레스(EA1)에 접근할 수 있다. 메모리 어드레스(MA)는 메모리(120) 내에서 제1 확장 어드레스(EA1)가 저장된 주소값를 나타낸다. 중앙처리장치(110)는 메모리(120)의 메모리 어드레스(MA)에 접근하여 제1 확장 어드레스(EA1)의 값을 변경할 수 있다.
메모리 관리 유닛(130)은 스눕 로직(210)(Snoop Logic)과 클로닝 레지스터(220)(Cloning register)를 포함한다. 메모리 관리 유닛(130)은 제1 확장 어드레스(EA1)에 저장된 주소값를 복제(cloning)하여, 메모리 관리 유닛(130) 내부의 제2 확장 어드레스(EA2)에 저장한다. 메모리 관리 유닛(130)은 매 클럭마다 제2 확장 어드레스(EA2)에 저장된 값을 출력한다.
구체적으로, 스눕 로직(210)은 제1 확장 어드레스(EA1)가 저장된 메모리(120)의 메모리 어드레스(MA)를 저장하고, 중앙처리장치(110)에서 메모리(120)로 입력되는 어드레스(ADDRESS)를 입력받아 메모리 어드레스(MA)와 상기 어드레스(ADDRESS)를 비교한 뒤, 업데이트 신호(SOUT)를 출력한다.
스눕 로직(210)은 중앙처리장치(110)에서 출력하는 어드레스(ADDRESS)가 메모리 어드레스(MA)와 동일한지 여부를 판단하고, 동일한 경우, 중앙처리장치(110)에서 출력되는 다른 신호(예를 들어, 칩 선택 신호(CS) 또는 쓰기 신호(WEN))를 참조하여, 제2 확장 어드레스(EA2)에 중앙처리장치(110)가 선택한 메모리 뱅크 대한 주소값을 업데이트 할지 여부를 결정한다.
클로닝 레지스터(220)는 제2 확장 어드레스(EA2)를 저장한다. 구체적으로, 클로닝 레지스터(220)는 스눕 로직(210)의 업데이트 신호(SOUT)와, 중앙처리장치(110)에서 출력되는 어드레스(ADDRESS)를 입력받고, 상기 업데이트 신호(SOUT)가 활성화되는 경우, 입력받은 어드레스(ADDRESS)를 제2 확장 어드레스(EA2)에 저장한다. 즉, 클로닝 레지스터(220)는 제1 확장 어드레스(EA1)에 저장된 주소값이 업데이트 되는 경우, 이를 복제(cloning)하여 제2 확장 어드레스(EA2)에 저장할 수 있다.
클로닝 레지스터(220)는 제2 확장 어드레스(EA2)에 저장된 주소값을 기억하여 클럭마다 출력할 수 있다.
중앙처리장치(110)는 매 클럭마다 L bit의 데이터를 출력하고, 메모리 관리 유닛(130)은 매 클럭마다 M bit의 제2 확장 어드레스(EA2)에 저장된 주소값을 출력할 수 있다. 이때, 제2 확장 어드레스(EA2)에 저장된 주소값은 메모리(120)에 저장된 제1 확장 어드레스(EA1)의 값과 동일하다. 제2 확장 어드레스(EA2)는 중앙처리장치(110)가 액세스 하고자 하는 메인 메모리(300) 내의 메모리 뱅크를 나타낸다.
중앙처리장치(110)의 L bit의 출력 데이터와 메모리 관리 유닛(130)의 M bit의 주소값은 버스(170)를 통하여, 메인 메모리 컨트롤러(140)에 전달될 수 있다. 예를 들어, 중앙처리장치(110)는 32 bit의 데이터를 출력하고, 메모리 관리 유닛(130)은 4 bit의 주소값을 출력할 수 있다. 메인 메모리 컨트롤러(140)은 매 클럭마다 상기 데이터와 상기 주소값을 합친 36 bit 크기의 데이터를 수신할 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니다.
메인 메모리 컨트롤러(140)는 입력받은 데이터에서 중앙처리장치(110)가 선택한 메모리 뱅크의 주소값을 추출할 수 있다. 메인 메모리 컨트롤러(140)는 제2 확장 어드레스(EA2)에 저장된 주소값을 입력된 데이터에서 추출하여, 메인 메모리(300)에 포함된 복수의 메모리 뱅크(310~340) 중에서, 상기 주소값에 대응되는 메모리 뱅크를 액세스할 수 있다. 이에 대한 자세한 설명은 후술하도록 한다.
버스(170)는, 중앙처리장치(110), 메모리 관리 유닛(130), 메인 메모리 컨트롤러(140)가 서로 데이터 통신을 하는데 이용될 수 있다. 버스(170)는, 중앙처리장치(110)와 메모리(120)의 사이, 또는 중앙처리장치(110)와 메모리 관리 유닛(130)의 사이에 이용되는 저지연 인터페이스(Low-latency Interface)보다 상대적으로 높은 지연속도(High-latency)를 가질 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니다.
도 4는 본 발명의 몇몇 실시예에 따른 메모리 컨트롤러의 메모리 관리 유닛(MMU)의 구성요소를 설명하기 위한 블럭도이다.
도 4를 참조하면, 본 발명의 몇몇 실시예에 따른 메모리 컨트롤러(100)에서 중앙처리장치(110)는 메모리(120)에 칩 선택 신호(CS), 쓰기 신호(WEN), 어드레스(ADDRESS), 및 데이터(DATA)를 메모리(120) 및 메모리 관리 유닛(130)에 전달한다.
도면에 명확하게 도시하지는 않았으나, 메모리(120)는 복수의 영역을 포함할 수 있다. 상기 영역은 메모리(120) 내에서 물리적 또는 논리적으로 분할되어 제어될 수 있다. 예를 들어, 메모리(120)는 중앙처리장치(110)에서 처리 가능한 명령어를 저장하는 펌웨어(Firmware; F/W)를 포함하는 코드 메모리(code memory)와, 데이터를 저장하는 데이터 메모리(data memory)를 포함할 수 있다.
칩 선택 신호(CS)는 메모리(120)의 복수의 영역 중 어느 하나를 선택할 수 있다. 도면에 명확하게 도시하지는 않았으나, 상기 칩 선택 신호(CS)는 복수 개의 신호로 구성될 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니다.
본 발명의 일 실시예에서 칩 선택 신호(CS)는 제1 확장 어드레스(EA1)가 저장된 메모리(120)의 영역을 선택할 수 있다. 예를 들어, 칩 선택 신호(CS)가 활성화되는 경우, 메모리(120)는 제1 확장 어드레스(EA1)의 주소값을 업데이트 할 수 있다.
쓰기 신호(WEN)는 메모리(120)에 입력받은 데이터(DATA)를 저장할지 여부를 지시한다. 예를 들어, 쓰기 신호(WEN)가 활성화된 경우, 메모리(120)는 중앙처리장치(110)에서 입력받은 데이터(DATA)와 어드레스(ADDRESS)를 이용하여, 상기 데이터(DATA)를 상기 어드레스(ADDRESS)에 기록할 수 있다.
본 발명의 일 실시예에서, 칩 선택 신호(CS)와 쓰기 신호(WEN)가 활성화되고, 중앙처리장치(110)에서 수신한 어드레스(ADDRESS)가 제1 확장 어드레스(EA1)가 저장된 메모리 어드레스(MA)와 동일한 경우, 제1 확장 어드레스(EA1)는 중앙처리장치(110)에서 수신한 어드레스(ADDRESS)로 업데이트 될 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니다.
메모리 관리 유닛(130)은, 메모리(120)와 마찬가지로, 중앙처리장치(110)로부터 메모리(120)에 칩 선택 신호(CS), 쓰기 신호(WEN), 어드레스(ADDRESS), 및 데이터(DATA)를 수신할 수 있다.
메모리 관리 유닛(130)에 포함된 스눕 로직(210)은 레지스터(212)(register), 비교기(214)(comparator), 게이트 소자(216)를 포함한다.
레지스터(212)는 제1 확장 어드레스(EA1)가 저장된 메모리(120)의 메모리(120)의 메모리 어드레스(MA)를 저장한다. 레지스터(212)는 저장된 메모리 어드레스(MA)를 비교기(214)에 전달한다.
비교기(214)는 레지스터(212)로부터 메모리 어드레스(MA)를 입력받고, 중앙처리장치(110)로부터 어드레스(ADDRESS)를 입력받아, 상기 메모리 어드레스(MA)와 상기 어드레스(ADDRESS)가 동일한지 여부를 결정한다. 만약, 메모리 어드레스(MA)와 어드레스(ADDRESS)가 동일한 경우, 비교기(214)는 활성화된 신호를 출력한다. 만약, 메모리 어드레스(MA)와 어드레스(ADDRESS)가 상이한 경우, 비교기(214)는 비활성화된 신호를 출력한다.
게이트 소자(216)는 비교기(214)의 출력과, 칩 선택 신호(CS), 쓰기 신호(WEN)를 입력받는다.
게이트 소자(216)는 중앙처리장치(110)로부터 입력받은 칩 선택 신호(CS) 및 쓰기 신호(WEN)와 비교기(214)의 출력이 모두 활성화되어 입력되는 경우, 활성화된 업데이트 신호(SOUT)를 출력한다.
게이트 소자(216)는 AND 연산을 수행하는 AND 게이트 소자를 포함할 수 있으나, 본 발명이 이에 한정되는 것은 아니다.
도면에 명확히 도시하지는 않았으나, 본 발명의 다른 실시예에서, 칩 선택 신호(CS) 또는 쓰기 신호(WEN) 중 어느 하나는 생략될 수 있다. 또한, 본 발명의 또 다른 실시예에서, 칩 선택 신호(CS) 및 쓰기 신호(WEN)가 모두 생략될 수 있다. 이 경우, 게이트 소자(216)는 생략될 수 있으며, 비교기(214)의 출력이 업데이트 신호(SOUT)로써 클로닝 레지스터(220)에 그대로 전달될 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니다.
클로닝 레지스터(220)는 게이트 소자(216)로부터 업데이트 신호(SOUT)를 입력받고, 중앙처리장치(110)로부터 데이터(DATA)를 입력받는다. 만약, 입력받은 업데이트 신호(SOUT)가 활성화되는 경우, 클로닝 레지스터(220)에 포함된 제2 확장 어드레스(EA2)는 중앙처리장치(110)로부터 입력받은 데이터(DATA)로 업데이트될 수 있다. 이에 따라, 제2 확장 어드레스(EA2)에 저장된 데이터와 제1 확장 어드레스(EA1)에 저장된 데이터는 동일해진다. 이를 통해, 메모리 관리 유닛(130)은 메모리(120)에 저장된 제1 확장 어드레스(EA1)의 데이터를 스눕핑(snooping)하여, 상기 데이터가 업데이트 되는 경우 상기 데이터를 복제(cloning)하는 효과를 낼 수 있다.
클로닝 레지스터(220)는 제2 확장 어드레스(EA2)에 저장된 데이터를 홀딩하여, 매 클럭마다 버스(170)를 통해 메인 메모리 컨트롤러(140)로 전달 할 수 있다. 클로닝 레지스터(220)는 제2 확장 어드레스(EA2)에 저장된 상기 데이터를 홀딩하기 위한 래치(latch) 또는 플립플롭(flip-flop)을 포함할 수 있으나, 본 발명이 이에 한정되는 것은 아니다.
메모리 관리 유닛(130)은 중앙처리장치(110)에 직접 접근이 가능한 전용의 인터페이스(interface)를 가지며, 메모리 관리 유닛(130)은 메모리(120)와 마찬가지로 로우 레벨 메모리(low-level memory)에 해당한다. 이에 따라, 메모리 관리 유닛(130)은 빠른 속도로 메모리(120)의 제1 확장 어드레스(EA1)에 데이터가 업데이트 되는지 여부를 스눕핑(snooping)할 수 있다. 또한, 제1 확장 어드레스(EA1)의 데이터가 업데이트 되는 경우, 이를 복제(cloning)하여 제2 확장 어드레스(EA2)에 저장하고, 버스(170)를 통해 메인 메모리 컨트롤러(140)로 전달하는 동작 또한 빠른 속도로 이루어 질 수 있다.
이를 통해, 중앙처리장치(110)가 선택하는 메모리 뱅크가 빈번하게 변경되더라도, 확장된 메모리 뱅크를 사용하는 저장 장치(1000)의 성능이 저하되는 것을 방지할 수 있으며, 종래의 기술에 비하여 빠른 속도를 제공할 수 있다.
도 5는 본 발명의 몇몇 실시예에 따른 메모리 컨트롤러의 메모리 관리 유닛(MMU)의 클로닝 레지스터(220)를 설명하기 위한 블럭도이다.
도 5를 참조하면, 본 본 발명의 몇몇 실시예에 따른 메모리 컨트롤러의 메모리 관리 유닛(MMU)의 클로닝 레지스터(220)는 플립플롭(flip-flop)을 포함할 수 있다. 상기 플립플롭은 입력받은 데이터를 홀딩할 수 있다.
본 발명의 플립플롭은 멀티플렉서(226)(multiplexer)와 래치(227)(latch)를 포함할 수 있다.
구체적으로, 멀티플렉서(226)는, 제1 입력값으로 래치(227)의 출력값(OUT2)을 피드백 신호로 입력받고, 제2 입력값으로 중앙처리장치(110)로부터 데이터(DATA)를 입력받는다. 멀티플렉서(226)는 입력받은 업데이트 신호(SIN)을 기초로, 상기 제1 입력값 또는 제2 입력값을 선택하여 출력한다. 예를 들어, 멀티플렉서(226)는 입력받은 업데이트 신호(SIN)가 '0'인 경우, 래치(227)의 출력값(OUT2)을 출력하고, 입력받은 업데이트 신호(SIN)가 '1'인 경우, 중앙처리장치(110)로부터 입력받은 데이터(DATA)를 출력한다.
이어서, 래치(227)는 클럭 신호(CLK)를 기초로 동작하며, 매 클럭마다 멀티플렉서(226)로부터 입력받은 데이터(DATA)로 값을 업데이트 한다.
예를 들어, 입력받은 업데이트 신호(SIN)가 비활성화(disenable)되어있는 경우, 멀티플렉서(226)는 래치(227)의 출력값을 출력하고, 래치(227)는 상기 출력값을 그대로 입력받으므로, 래치(227)에 저장된 데이터는 그 값이 유지된다. 이와 반대로, 입력받은 업데이트 신호(SIN)가 활성화(enable)되어있는 경우, 멀티플렉서(226)는 중앙처리장치(110)로부터 입력받은 데이터(DATA)를 출력하고, 래치(227)는 입력받은 데이터(DATA)로 값을 업데이트 하게 된다.
도 6은 본 발명의 몇몇 실시예에 따른 메모리 컨트롤러에 포함된 메모리 관리 유닛(MMU)의 뱅크 선택 동작을 설명하기 위한 도면이다.
도 6을 참조하면, 도 5는 중앙처리장치(110)가 출력하는 데이터(OUT1)와 메모리 관리 유닛(130)가 출력하는 주소값(OUT2)을 합한 데이터 셋(Data Set)을 나타낸다. 상기 데이터 셋(Data Set)은 메인 메모리 컨트롤러(140)에 전달된다. 메인 메모리 컨트롤러(140)는 수신된 데이터 셋(Data Set)에서 복수의 메모리 뱅크 중 어느 하나를 나타내는 주소값(OUT2)을 추출하여, 액세스 해야 할 메모리 뱅크를 결정할 수 있다.
예를 들어, 중앙처리장치(110)는 32 bit의 데이터를 출력하고, 메모리 관리 유닛(130)은 4 bit의 주소값을 각각 매 클럭마다 출력할 수 있다. 메인 메모리 컨트롤러(140)은 매 클럭마다 상기 데이터와 상기 주소값을 합친 36 bit 크기의 데이터를 수신할 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니다.
메인 메모리(300)의 각각의 메모리 뱅크에는 고유의 주소값일 할당될 수 있다. 예를 들어, '0000' 주소값은 제1 메모리 뱅크(Bank0)을 나타내고, '0001' 주소값은 제1 메모리 뱅크(Bank1)을 나타낼 수 있다.
메인 메모리 컨트롤러(140)가 N bit의 주소값을 수신하는 경우, 메인 메모리 컨트롤러(140)는 이론적으로 2^N개의 메모리 뱅크를 제어할 수 있다. 예를 들어, 4 bit의 주소값을 메모리 관리 유닛(130)로부터 수신하는 메인 메모리 컨트롤러(140)는 2^4개(32개)의 메모리 뱅크를 제어할 수 있다.
메모리 관리 유닛(130)에서 전달하는 주소값의 크기는 가변적일 수 있다. 메모리 관리 유닛(130)에서 전달하는 주소값의 크기가 늘어날수록, 메인 메모리 컨트롤러(140)에서 제어할 수 있는 메모리 뱅크의 숫자도 증가하며, 제어할 수 있는 메인 메모리(300)의 저장 용량도 증가될 수 있다.
도 7은 본 발명의 몇몇 실시예에 따른 메모리 컨트롤러의 동작을 설명하기 위한 타이밍도이다. 도 8은 도 6의 <t = to>에서의 메모리 컨트롤러의 동작을 설명하기 위한 블럭도이다.
도 7과 도 8을 참조하면, <t = to>에서 중앙처리장치(110)에서 출력되는 칩 선택 신호(CS)와 쓰기 신호(WEN)는 비활성화 상태(L)이다. 따라서, 중앙처리장치(110)에서 출력되는 데이터(DATA)는 메모리(120)에 기록되지 않는다.
중앙처리장치(110)에서 출력되는 어드레스(ADDRESS)는 스눕 로직(210)의 비교기(214)에 입력된다.
비교기(214)는 레지스터(212)에 저장된 메모리(120)의 메모리 어드레스(예를 들어, A1)와 중앙처리장치(110)로부터 입력받은 어드레스(예를 들어, A2)를 비교한다.
<t = to>에서 중앙처리장치(110)로부터 입력받은 어드레스(예를 들어, A2)와 레지스터(212)에 저장된 메모리 어드레스(예를 들어, A1)는 상이하므로, 비교기(214)는 비활성화된 신호(L)를 출력한다.
게이트 소자(216)는 비교기(214)의 비활성화된 신호(L)를 입력받으므로, 칩 선택 신호(CS)와 쓰기 신호(WEN)의 활성화 여부와는 관계없이, 비활성화 상태(L)의 업데이트 신호(SOUT)를 출력한다.
클로닝 레지스터(220)는 중앙처리장치(110)로부터 데이터(예를 들어, XX)와, 스눕 로직(210)으로부터 비활성화 상태(L)의 업데이트 신호(SOUT)를 입력받는다. 클로닝 레지스터(220)는 입력받은 데이터(예를 들어, XX)를 제2 확장 어드레스(EA2)에 업데이트 하지 않고, 클로닝 레지스터(220)는 제2 확장 어드레스(EA2)에 저장된 주소값(예를 들어, "00")을 그대로 출력한다.
메인 메모리 컨트롤러(140)는 중앙처리장치(110)로부터 출력값(OUT_DATA)과, 클로닝 레지스터(220)로부터 주소값(예를 들어, "00")을 수신한다. 상기 출력값(OUT_DATA)과 주소값(예를 들어, "00")은 메인 메모리 컨트롤러(140)에 동시에 전달될 수 있다.
메인 메모리 컨트롤러(140)는 수신된 주소값(예를 들어, "00")을 추출하여, 상기 주소값(예를 들어, "00")에 해당하는 메인 메모리(300)의 메모리 뱅크(310)(BANK 0)를 액세스 할 수 있다.
도 9는 도 7의 <t = t2>에서의 메모리 컨트롤러의 동작을 설명하기 위한 블럭도이다.
도 7과 도 9를 참조하면, <t = t2>에서 중앙처리장치(110)에서 출력되는 칩 선택 신호(CS)와 쓰기 신호(WEN)는 활성화 상태(H)이다. 또한, 중앙처리장치(110)에서 출력되는 어드레스(예를 들어, A1)는 메모리(120)의 메모리 어드레스(예를 들어, A1)과 동일하다. 따라서, 중앙처리장치(110)에서 출력되는 데이터(예를 들어, "01")는 메모리(120)의 제1 확장 어드레스(EA1)에 업데이트 된다. 즉, 중앙처리장치(110)가 선택한 메모리 뱅크의 주소값이 변경된다.
비교기(214)는 레지스터(212)에 저장된 메모리(120)의 메모리 어드레스(예를 들어, A1)와 중앙처리장치(110)로부터 입력받은 어드레스(예를 들어, A1)를 비교한다. <t = t2>에서 중앙처리장치(110)로부터 입력받은 어드레스(예를 들어, A1)와 레지스터(212)에 저장된 메모리 어드레스(예를 들어, A1)는 동일하므로, 비교기(214)는 활성화된 신호(H)를 출력한다.
게이트 소자(216)는 비교기(214)의 활성화된 신호(H)를 입력받고, 칩 선택 신호(CS)와 쓰기 신호(WEN) 활성화 상태(H)이므로, 활성화 상태(H)의 업데이트 신호(SOUT)를 출력한다.
클로닝 레지스터(220)는 중앙처리장치(110)로부터 데이터(예를 들어, "01")와, 스눕 로직(210)으로부터 활성화 상태(H)의 업데이트 신호(SOUT)를 입력받는다. 클로닝 레지스터(220)는 입력받은 데이터(예를 들어, "01")를 제2 확장 어드레스(EA2)에 업데이트 한다. 이후, 클로닝 레지스터(220)는 제2 확장 어드레스(EA2)에 저장된 변경된 주소값(예를 들어, "00"->"01")을 출력한다.
메인 메모리 컨트롤러(140)는 중앙처리장치(110)로부터 출력값(OUT_DATA)과, 클로닝 레지스터(220)로부터 변경된 주소값(예를 들어, "00"->"01")을 수신한다. 상기 출력값(OUT_DATA)과 변경된 주소값(예를 들어, "00"->"01")은 메인 메모리 컨트롤러(140)에 동시에 전달될 수 있다.
메인 메모리 컨트롤러(140)는 수신된 주소값(예를 들어, "01")을 추출하여, 상기 주소값(예를 들어, "01")에 해당하는 메인 메모리(300)의 메모리 뱅크(310)를 액세스하기 시작한다.
도 7을 참조하면, 메모리(120)의 제1 확장 어드레스(EA1)가 업데이트되는 시점은 <t = t1>일 때이고, 메모리 관리 유닛(130)의 제2 확장 어드레스(EA2)가 업데이트되는 시점은 <t = t2>이다. 즉, 본 발명의 메모리 관리 유닛(130)은 메모리(120)의 제1 확장 어드레스(EA1)의 업데이트 여부를 스누핑(snooping)하여, L1(즉, t2-t1) 지연시간 이후에, 제2 확장 어드레스(EA2)를 업데이트 할 수 있다. 도면에서는 L1의 지연시간을 1 클럭으로 표현하였으나, 발명이 이에 한정되는 것은 아니며, 본 발명은 L1의 낮은 지연만을 발생시키며 메모리 뱅크의 주소값을 변경할 수 있고, 이러한 본 발명의 특징은 종래의 기술에 비하여 빠른 속도를 제공할 수 있다.
도 10은 도 7의 <t = t3>에서의 메모리 컨트롤러의 동작을 설명하기 위한 블럭도이다.
도 7과 도 10을 참조하면, <t = t3>에서 중앙처리장치(110)에서 출력되는 칩 선택 신호(CS)와 쓰기 신호(WEN)는 비활성화 상태(L)이다. 따라서, 중앙처리장치(110)에서 출력되는 데이터(DATA)는 메모리(120)에 기록되지 않는다.
중앙처리장치(110)에서 출력되는 어드레스(ADDRESS)는 스눕 로직(210)의 비교기(214)에 입력된다.
비교기(214)는 레지스터(212)에 저장된 메모리(120)의 메모리 어드레스(예를 들어, A1)와 중앙처리장치(110)로부터 입력받은 어드레스(예를 들어, A3)를 비교한다.
<t = t3>에서 중앙처리장치(110)로부터 입력받은 어드레스(예를 들어, A3)와 레지스터(212)에 저장된 메모리 어드레스(예를 들어, A1)는 상이하므로, 비교기(214)는 비활성화된 신호(L)를 출력한다.
게이트 소자(216)는 비교기(214)의 비활성화된 신호(L)를 입력받으므로, 칩 선택 신호(CS)와 쓰기 신호(WEN)의 활성화 여부와는 관계없이, 비활성화 상태(L)의 업데이트 신호(SOUT)를 출력한다.
클로닝 레지스터(220)는 중앙처리장치(110)로부터 데이터(예를 들어, YY)와, 스눕 로직(210)으로부터 비활성화 상태(L)의 업데이트 신호(SOUT)를 입력받는다. 클로닝 레지스터(220)는 입력받은 데이터(예를 들어, YY)를 제2 확장 어드레스(EA2)에 업데이트 하지 않고, 클로닝 레지스터(220)는 제2 확장 어드레스(EA2)에 저장된 주소값(예를 들어, "01")을 계속해서 출력한다.
메인 메모리 컨트롤러(140)는 중앙처리장치(110)로부터 출력값(OUT_DATA)과, 클로닝 레지스터(220)로부터 주소값(예를 들어, "01")을 수신한다. 상기 출력값(OUT_DATA)과 주소값(예를 들어, "01")은 메인 메모리 컨트롤러(140)에 동시에 전달될 수 있다.
메인 메모리 컨트롤러(140)는 수신된 주소값(예를 들어, "01")을 추출하여, 상기 주소값(예를 들어, "01")에 해당하는 메인 메모리(300)의 제2 메모리 뱅크(320)(BANK 1)를 액세스 할 수 있다.
이어서, 도면에 명확히 도시하지는 않았으나, <t = t4~t5>에서의 본 발명의 메모리 컨트롤러(100)의 동작은 도 6, 8, 및 9를 참조하여 설명한 <t = t2~t3>의 동작과 실질적으로 동일하다.
이를 통해, 중앙처리장치(110)에 의해 선택된 메모리 뱅크가 제1 메모리 뱅크(예를 들어, 320)에서 제2 메모리 뱅크(예를 들어, 330)로 변경되는 경우, 메모리(120)는, 제2 메모리 뱅크(예를 들어, 330)에 대한 주소값("10")으로 상기 제1 확장 어드레스(EA1)를 업데이트 하고, 메모리 관리 유닛(130)은, 제1 확장 어드레스(EA1)에 저장된 주소값("10")과 동일한 값으로 제2 확장 어드레스(EA2)를 업데이트 할 수 있다. 제2 확장 어드레스(EA2)에 업데이트된 주소값("10")은 중앙처리장치(110)의 출력값과 함께 메인 메모리 컨트롤러(140)에 전달될 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 메모리 컨트롤러 110: 중앙처리장치
120: 메모리 130: 메모리 관리 유닛
140: 메인 메모리 컨트롤러 210: 스눕 로직
220: 클로닝 레지스터

Claims (10)

  1. 메인 메모리에 포함된 복수의 메모리 뱅크 중 어느 하나를 선택하는 중앙처리장치;
    상기 중앙처리장치가 선택한 제1 메모리 뱅크 대한 주소값을 저장하는 제1 확장 어드레스(Extended Address)를 포함하는 메모리; 및
    상기 제1 확장 어드레스에 저장된 주소값를 복제(cloning)하여 저장하는 제2 확장 어드레스를 포함하는 메모리 관리 유닛(MMU)을 포함하되,
    상기 메모리 관리 유닛은,
    상기 제1 확장 어드레스가 저장된 상기 메모리의 메모리 어드레스를 저장하고, 상기 중앙처리장치에서 상기 메모리로 입력되는 어드레스를 입력받아 상기 메모리 어드레스와 상기 어드레스를 비교한 뒤, 업데이트 신호를 출력하는 스눕 로직(Snoop Logic)과,
    상기 업데이트 신호를 입력받아, 상기 중앙처리장치로부터 수신한 데이터를 상기 제2 확장 어드레스에 저장하는 클로닝 레지스터(Cloning register)를 포함하는 메모리 컨트롤러.
  2. 제1 항에 있어서,
    상기 클로닝 레지스터는, 상기 입력받은 상기 업데이트 신호가 활성화되는 경우, 상기 중앙처리장치에서 상기 메모리로 입력되는 데이터로 상기 제2 확장 어드레스를 업데이트하는 메모리 컨트롤러.
  3. 제1 항에 있어서,
    상기 스눕 로직은,
    상기 제1 확장 어드레스가 저장된 상기 메모리의 상기 메모리 어드레스를 저장하는 레지스터(register)와,
    상기 레지스터에 저장된 상기 메모리 어드레스와, 상기 중앙처리장치에서 상기 메모리로 입력되는 상기 어드레스가 동일한지 여부를 비교하는 비교기(comparator)와,
    상기 중앙처리장치에서 상기 메모리로 입력되는 쓰기 신호(write signal)와, 상기 비교기의 출력을 입력받고, 상기 클로닝 레지스터의 업데이트 신호를 출력하는 게이트를 포함하는 메모리 컨트롤러.
  4. 제3 항에 있어서,
    상기 비교기는,
    상기 중앙처리장치에서 상기 메모리로 입력되는 상기 어드레스와, 상기 메모리의 상기 메모리 어드레스가 상이한 경우, 비활성화된 신호를 출력하고,
    상기 중앙처리장치에서 상기 메모리로 입력되는 상기 어드레스와, 상기 메모리의 상기 메모리 어드레스가 동일한 경우, 활성화된 신호를 출력하는 메모리 컨트롤러.
  5. 제3 항에 있어서,
    상기 게이트는, 상기 비교기의 상기 출력과 상기 쓰기 신호가 모두 활성화된 경우, 활성화된 상기 업데이트 신호를 출력하는 메모리 컨트롤러.
  6. 데이터를 저장하기 위한 복수의 메모리 뱅크(Bank)를 포함하는 메인 메모리; 및
    상기 메인 메모리를 제어하는 메모리 컨트롤러를 포함하되,
    상기 메모리 컨트롤러는,
    상기 복수의 메모리 뱅크 중 어느 하나를 선택하는 중앙처리장치와,
    상기 중앙처리장치가 선택한 제1 메모리 뱅크 대한 주소값을 저장한 제1 확장 어드레스(Extended Address)를 포함하는 메모리와,
    상기 제1 확장 어드레스에 저장된 주소값를 복제(cloning)하여 저장하는 제2 확장 어드레스를 포함하는 메모리 관리 유닛(MMU)와,
    상기 제2 확장 어드레스에 저장된 주소값를 이용하여 상기 제1 메모리 뱅크에 접근하는 메인 메모리 컨트롤러를 포함하되,
    상기 중앙처리장치가 선택된 메모리 뱅크를 상기 제1 메모리 뱅크에서 상기 제1 메모리 뱅크와 다른 제2 메모리 뱅크로 변경하는 경우, 상기 메모리는 상기 제2 메모리 뱅크에 대한 주소값으로 상기 제1 확장 어드레스를 업데이트하고, 상기 메모리 관리 유닛은 상기 제1 확장 어드레스에 업데이트된 주소값으로 상기 제2 확장 어드레스를 업데이트하는 메모리 시스템.
  7. 제6 항에 있어서,
    상기 메모리 관리 유닛은,
    상기 메모리에 포함된 상기 제1 확장 어드레스가 업데이트 되었는지 여부를 체크하고, 상기 제2 확장 어드레스의 업데이트 여부를 결정하는 스눕 로직(Snoop Logic)과,
    상기 제2 확장 어드레스를 포함하고, 상기 제2 확장 어드레스에 저장된 주소값을 출력하는 클로닝 레지스터(Cloning register)를 포함하는 메모리 시스템.
  8. 제7 항에 있어서,
    상기 스눕 로직은,
    상기 제1 확장 어드레스가 저장된 상기 메모리의 메모리 어드레스를 저장하는 레지스터(register)와,
    상기 레지스터에 저장된 상기 메모리 어드레스와, 상기 중앙처리장치에서 상기 메모리로 입력되는 어드레스가 동일한지 여부를 비교하는 비교기(comparator)와,
    상기 중앙처리장치에서 상기 메모리로 입력되는 쓰기 신호(write signal)와, 상기 비교기의 출력을 입력받고, 상기 클로닝 레지스터의 업데이트 신호를 출력하는 게이트를 포함하는 메모리 시스템.
  9. 제6 항에 있어서,
    상기 중앙처리장치, 상기 메모리 관리 유닛, 및 상기 메인 메모리 컨트롤러의 데이터를 상호 교환하는 버스(Bus)를 더 포함하고,
    상기 중앙처리장치의 출력값과 상기 메모리 관리 유닛의 상기 제2 확장 어드레스에 저장된 상기 주소값은, 상기 버스를 통하여 상기 메인 메모리 컨트롤러에 동시에 전달되는 메모리 시스템.
  10. 제9 항에 있어서,
    상기 메인 메모리 컨트롤러는, 입력받은 데이터에서 상기 제2 확장 어드레스에 저장된 상기 주소값을 추출하여, 상기 주소값에 대응되는 상기 메인 메모리의 메모리 뱅크를 액세스하는 메모리 시스템.
KR1020160138239A 2016-10-24 2016-10-24 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 KR102514717B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020160138239A KR102514717B1 (ko) 2016-10-24 2016-10-24 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
CN201710790161.9A CN107977325B (zh) 2016-10-24 2017-09-05 存储器控制器、存储器系统和操作存储器控制器的方法
US15/696,940 US10261714B2 (en) 2016-10-24 2017-09-06 Memory controller and memory system including same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160138239A KR102514717B1 (ko) 2016-10-24 2016-10-24 메모리 컨트롤러 및 이를 포함하는 메모리 시스템

Publications (2)

Publication Number Publication Date
KR20180044567A KR20180044567A (ko) 2018-05-03
KR102514717B1 true KR102514717B1 (ko) 2023-03-27

Family

ID=61970360

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160138239A KR102514717B1 (ko) 2016-10-24 2016-10-24 메모리 컨트롤러 및 이를 포함하는 메모리 시스템

Country Status (3)

Country Link
US (1) US10261714B2 (ko)
KR (1) KR102514717B1 (ko)
CN (1) CN107977325B (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190115811A (ko) * 2018-04-04 2019-10-14 에스케이하이닉스 주식회사 확장 메모리 카드를 포함하는 데이터 처리 시스템

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002259208A (ja) 2000-12-28 2002-09-13 Canon Inc メモリ制御装置及び方法
JP2015225608A (ja) 2014-05-29 2015-12-14 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation アドレス変換テーブルを書き込む装置及び方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5226134A (en) * 1990-10-01 1993-07-06 International Business Machines Corp. Data processing system including a memory controller for direct or interleave memory accessing
US5671391A (en) 1994-01-10 1997-09-23 Ncr Corporation Coherent copyback protocol for multi-level cache memory systems
ATE254778T1 (de) * 1997-09-05 2003-12-15 Sun Microsystems Inc Nachschlagtabelle und verfahren zur datenspeicherung darin
US6237064B1 (en) 1998-02-23 2001-05-22 Intel Corporation Cache memory with reduced latency
US6842831B2 (en) 2002-04-25 2005-01-11 Intel Corporation Low latency buffer control system and method
US7356713B2 (en) * 2003-07-31 2008-04-08 International Business Machines Corporation Method and apparatus for managing the power consumption of a data processing system
KR100960095B1 (ko) * 2003-10-23 2010-05-31 마이크로칩 테크놀로지 인코포레이티드 마이크로컨트롤러 명령어 셋트
US7500062B2 (en) 2005-11-17 2009-03-03 International Business Machines Corporation Fast path memory read request processing in a multi-level memory architecture
KR101476515B1 (ko) * 2006-08-22 2014-12-24 컨버전트 인텔렉츄얼 프로퍼티 매니지먼트 인코포레이티드 스케일러블 메모리 시스템
US7890699B2 (en) 2008-01-10 2011-02-15 International Business Machines Corporation Processing unit incorporating L1 cache bypass
US20100332718A1 (en) * 2009-06-26 2010-12-30 Micron Technology, Inc. System and method for providing configurable latency and/or density in memory devices
WO2012064638A2 (en) 2010-11-09 2012-05-18 Rambus Inc. Memory access during memory calibration
CN102122271B (zh) * 2011-03-01 2012-12-26 株洲南车时代电气股份有限公司 一种nand闪存控制器及其控制方法
US9129071B2 (en) 2012-10-24 2015-09-08 Texas Instruments Incorporated Coherence controller slot architecture allowing zero latency write commit
US9600413B2 (en) 2013-12-24 2017-03-21 Intel Corporation Common platform for one-level memory architecture and two-level memory architecture
US9928119B2 (en) * 2015-12-22 2018-03-27 International Business Machines Corporation Translation entry invalidation in a multithreaded data processing system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002259208A (ja) 2000-12-28 2002-09-13 Canon Inc メモリ制御装置及び方法
JP2015225608A (ja) 2014-05-29 2015-12-14 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation アドレス変換テーブルを書き込む装置及び方法

Also Published As

Publication number Publication date
KR20180044567A (ko) 2018-05-03
CN107977325B (zh) 2022-12-13
US10261714B2 (en) 2019-04-16
CN107977325A (zh) 2018-05-01
US20180113641A1 (en) 2018-04-26

Similar Documents

Publication Publication Date Title
US9971697B2 (en) Nonvolatile memory module having DRAM used as cache, computing system having the same, and operating method thereof
US9805802B2 (en) Memory device, memory module, and memory system
TWI434286B (zh) 具擴充模式之固態儲存元件控制器及其運作方法
US20170358327A1 (en) Memory device for performing internal process and operating method thereof
US10163508B2 (en) Supporting multiple memory types in a memory slot
US20160203091A1 (en) Memory controller and memory system including the same
US20190102287A1 (en) Remote persistent memory access device
KR102258126B1 (ko) 메모리 컨트롤러의 작동 방법, 이를 포함하는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템
US10268416B2 (en) Method and systems of controlling memory-to-memory copy operations
US10976933B2 (en) Storage device, storage system and method of operating the same
US20200218653A1 (en) Controller, data storage device, and operating method thereof
US20190057049A1 (en) Memory system and operating method thereof
US11263148B2 (en) Mapping host logical address to target address that is selected from combination of first memory&#39;s physical addresses and second memory&#39;s virtual addresses
US10831405B2 (en) Storage device temporarily suspending internal operation to provide short read response time for read request from host
KR101081948B1 (ko) 불휘발성 메모리 장치 및 그것의 데이터 저장 방법
KR102514717B1 (ko) 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
US20170109067A1 (en) Memory system
KR102577268B1 (ko) 메모리 장치 및 이의 동작 방법
US20140149646A1 (en) Memory systems including flash memories, first buffer memories, second buffer memories and memory controllers and methods for operating the same
KR20210028405A (ko) 서치 회로 및 컨트롤러
KR20200034312A (ko) 데이터 저장 장치 및 그것의 동작 방법
US10628322B2 (en) Memory system and operating method thereof
US11675531B2 (en) Storage device for high speed link startup and storage system including the same
US20240184480A1 (en) Storage device for high speed link startup and storage system including the same
KR102345539B1 (ko) 내부 프로세스를 수행하는 메모리 장치 및 그 동작방법

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant