KR20210066631A - 메모리에 데이터를 기입하기 위한 장치 및 방법 - Google Patents

메모리에 데이터를 기입하기 위한 장치 및 방법 Download PDF

Info

Publication number
KR20210066631A
KR20210066631A KR1020190156121A KR20190156121A KR20210066631A KR 20210066631 A KR20210066631 A KR 20210066631A KR 1020190156121 A KR1020190156121 A KR 1020190156121A KR 20190156121 A KR20190156121 A KR 20190156121A KR 20210066631 A KR20210066631 A KR 20210066631A
Authority
KR
South Korea
Prior art keywords
data
write
memory
buffer
write buffer
Prior art date
Application number
KR1020190156121A
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 KR1020190156121A priority Critical patent/KR20210066631A/ko
Priority to US16/913,707 priority patent/US11698852B2/en
Publication of KR20210066631A publication Critical patent/KR20210066631A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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
    • 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
    • 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
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1015Read-write modes for single port memories, i.e. having either a random port or a serial port
    • G11C7/1039Read-write modes for single port memories, i.e. having either a random port or a serial port using pipelining techniques, i.e. using latches between functional memory parts, e.g. row/column decoders, I/O buffers, sense amplifiers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/306In system interconnect, e.g. between two buses
    • 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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • 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/7206Reconfiguration of flash memory system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0064Latency reduction in handling transfers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

메모리에 대한 데이터 기입을 위한 장치는, 본 개시의 예시적 실시예에 따라, 기입 요청에 포함된 기입 데이터의 폭과 일치하는 제1 데이터 폭을 가지고, 기입 데이터를 저장하는 제1 기입 버퍼, 메모리의 데이터 폭과 일치하고 제1 데이터 폭보다 큰 제2 데이터 폭을 가지는 제2 기입 버퍼, 및 기입 요청에 포함된 기입 어드레스 및 제2 기입 버퍼에 저장된 제2 데이터의 어드레스에 기초하여, 제1 기입 버퍼에 저장된 제1 데이터를 제2 기입 버퍼에 기입하고 제2 기입 버퍼에 저장된 제2 데이터를 메모리에 기입하는 컨트롤러를 포함할 수 있다.

Description

메모리에 데이터를 기입하기 위한 장치 및 방법{APPARATUS AND METHOD FOR WRITING DATA IN MEMORY}
본 개시의 기술적 사상은 데이터 기입에 관한 것으로서 메모리에 데이터를 기입하기 위한 장치 및 방법에 관한 것이다.
메모리 또는 메모리 장치는 반도체 공정에 의해서 제조될 수 있고, 데이터 기입에 응답하여 데이터를 저장하거나 데이터 독출에 응답하여 저장된 데이터를 출력할 수 있다. 메모리는 데이터를 저장하기 위한 다양한 구조를 채용할 수 있고, 구조에 따라 상이한 특성을 가질 수 있다. 메모리를 사용하여 데이터를 저장하고 저장된 데이터를 사용하는 다양한 장치들은 메모리의 구조에도 불구하고 양호한 성능을 제공하는 메모리를 요구할 수 있다. 이를 위하여, 빠른 동작 속도, 큰 저장 용량, 높은 내구성, 비휘발성 등과 같은 양호한 특성들 중 적어도 일부를 개선하는 구조를 가지는 메모리가 제안되고 있으나, 해당 구조에 기인한 상대적으로 취약한 특성을 보완하는 것이 요구될 수 있다.
본 개시의 기술적 사상은, 메모리에 대한 기입 요청을 효율적으로 처리하는 장치 및 방법을 제공한다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일측면에 따라, 메모리에 대한 데이터 기입을 위한 장치는, 기입 요청에 포함된 기입 데이터의 폭과 일치하는 제1 데이터 폭을 가지고, 기입 데이터를 저장하는 제1 기입 버퍼, 메모리의 데이터 폭과 일치하고 제1 데이터 폭보다 큰 제2 데이터 폭을 가지는 제2 기입 버퍼, 및 기입 요청에 포함된 기입 어드레스 및 제2 기입 버퍼에 저장된 제2 데이터의 어드레스에 기초하여, 제1 기입 버퍼에 저장된 제1 데이터를 제2 기입 버퍼에 기입하고 제2 기입 버퍼에 저장된 제2 데이터를 메모리에 기입하는 컨트롤러를 포함할 수 있다.
본 개시의 기술적 사상의 일측면에 따라, 메모리에 대한 데이터 기입을 위한 장치는, 기입 요청에 포함된 기입 데이터의 폭과 일치하는 제1 데이터 폭을 가지고, 기입 데이터를 저장하는 제1 기입 버퍼, 메모리의 데이터 폭과 일치하고 제1 데이터 폭보다 큰 제2 데이터 폭을 가지는 제2 기입 버퍼, 및 기입 요청에 포함된 기입 어드레스에 대응하는 메모리의 영역이 제2 기입 버퍼에 저장된 제2 데이터의 어드레스에 대응하는 메모리의 영역에 포함되는 제2 기입 버퍼의 히트(hit) 발생시 제1 기입 버퍼에 저장된 제1 데이터로 제2 데이터의 적어도 일부를 갱신하고, 기입 어드레스에 대응하는 메모리의 영역이 제2 기입 버퍼에 저장된 제2 데이터의 어드레스에 대응하는 메모리의 영역에 포함되지 아니하는 제2 기입 버퍼의 미스(miss) 발생시 제2 데이터의 갱신 상태에 기초하여 제2 데이터를 메모리에 기입하는 컨트롤러를 포함할 수 있다.
본 개시의 기술적 사상의 일측면에 따라, 메모리에 대한 데이터 기입을 위한 방법은, 기입 커맨드, 기입 데이터 및 기입 어드레스를 포함하는 기입 요청을 수신하는 단계, 기입 커맨드에 응답하여, 기입 데이터의 폭과 일치하는 제1 데이터 폭을 가지는 제1 기입 버퍼에 기입 데이터를 기입하는 단계, 메모리의 데이터 폭과 일치하고 제1 데이터 폭보다 큰 제2 데이터 폭을 가지는 제2 기입 버퍼에 제1 기입 버퍼에 저장된 제1 데이터를, 기입 어드레스 및 제2 기입 버퍼에 저장된 제2 데이터의 어드레스에 기초하여, 기입하는 단계, 및 기입 어드레스 및 제2 기입 버퍼에 저장된 제2 데이터의 어드레스에 기초하여, 메모리에 제2 데이터를 기입하는 단계를 포함할 수 있다.
본 개시의 예시적 실시예에 따른 장치 및 방법에 의하면, 메모리에 대한 기입 요청이 신속하게 처리될 수 있다.
또한, 본 개시의 예시적 실시예에 따른 장치 및 방법에 의하면, 메모리의 내구성 저하를 최소화할 수 있고, 이에 따라 메모리의 수명이 연장될 수 있다.
본 개시의 예시적 실시예들에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 아니하며, 언급되지 아니한 다른 효과들은 이하의 기재로부터 본 개시의 예시적 실시예들이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 도출되고 이해될 수 있다. 즉, 본 개시의 예시적 실시예들을 실시함에 따른 의도하지 아니한 효과들 역시 본 개시의 예시적 실시예들로부터 당해 기술분야의 통상의 지식을 가진 자에 의해 도출될 수 있다.
도 1은 본 개시의 예시적 실시예에 따른 데이터 기입을 위한 장치를 나타내는 블록도이다.
도 2는 본 개시의 예시적 실시예에 따라 도 1의 제2 데이터의 상태의 예시들을 나타내는 도면이다.
도 3은 본 개시의 예시적 실시예에 따라 제2 데이터의 상태들을 나타내는 도면이다.
도 4는 본 개시의 예시적 실시예에 따라 데이터 기입을 위한 방법을 나타내는 순서도이다.
도 5a 내지 도 5c는 본 개시의 예시적 실시예들에 따라 데이터 기입을 위한 장치의 동작의 예시들을 시간의 흐름에 따라 나타내는 블록도들이다.
도 6은 본 개시의 예시적 실시예에 따른 데이터 기입을 위한 장치를 나타내는 블록도이다.
도 7a는 본 개시의 예시적 실시예에 따라 데이터 기입을 위한 방법을 나타내는 순서도이고, 도 7b는 본 개시의 예시적 실시예에 따라 제2 데이터의 상태들을 나타내는 도면이다.
도 8은 본 개시의 예시적 실시예에 따라 데이터 기입을 위한 장치의 동작의 예시를 시간의 흐름에 따라 나타내는 블록도이다.
도 9는 본 개시의 예시적 실시예에 따른 데이터 기입을 위한 장치를 나타내는 블록도이다.
도 10a 및 도 10b는 본 개시의 예시적 실시예들에 따른 데이터 기입을 위한 장치의 예시들을 나타내는 블록도들이다.
도 11은 본 개시의 예시적 실시예에 따라 제2 데이터의 상태들을 나타내는 도면이다.
도 12는 본 개시의 예시적 실시예에 따라 데이터 기입을 위한 방법을 나타내는 순서도이다.
도 13a 및 도 13b는 본 개시의 예시적 실시예들에 따라 데이터 기입을 위한 장치의 동작의 예시들을 시간의 흐름에 따라 나타내는 블록도들이다.
도 14는 본 개시의 예시적 실시예에 따른 데이터 기입을 위한 방법을 나타내는 순서도이다.
도 15는 본 개시의 예시적 실시예에 따른 데이터 기입을 위한 장치를 포함하는 시스템을 나타내는 블록도이다.
도 16은 본 개시의 예시적 실시예에 따른 데이터 기입을 위한 장치2)를 포함하는 호스트 및 메모리를 나타내는 블록도이다.
도 17은 본 개시의 예시적 실시예에 따른 데이터 기입을 위한 장치를 포함하는 디스플레이 시스템을 나타내는 블록도이다.
도 1은 본 개시의 예시적 실시예에 따른 데이터 기입을 위한 장치를 나타내는 블록도이다. 구체적으로, 도 1의 블록도는 데이터 기입을 위한 장치(10) 및 메모리(5)를 함께 나타낸다. 본 명세서에서, 데이터 기입을 위한 장치(10)는, 메모리(5)에 대한 기입 요청(W_REQ)을 처리하기 위한 장치, 기입 요청(W_REQ)을 처리하기 위한 장치로 지칭될 수 있다. 일부 실시예들에서, 데이터 기입을 위한 장치(10) 및/또는 메모리(5)는 반도체 공정에 의해서 제조될 수 있다. 예를 들면, 데이터 기입을 위한 장치(10) 및 메모리(5)는, 도 15를 참조하여 후술되는 바와 같이 하나의 칩에 함께 포함될 수도 있고, 도 16을 참조하여 후술되는 바와 같이 별개의 칩들에 각각 포함될 수도 있다.
메모리(5)는 메모리 장치로서 지칭될 수도 있고, 외부부터 수신된 데이터를 저장하고 저장된 데이터를 외부로 출력할 수 있는, 임의의 구조를 가질 수 있다. 일부 실시예들에서, 메모리(5)는, DRAM(Dynamic Random Access Memory), SRAM(Static Random Access Memory) 등과 같은 휘발성 메모리일 수도 있고, 플래시(flash) 메모리, EEPROM(Electrically Erasable Programmable Read Only Memory), 상변화(phase change) 메모리, PCMS(Phase Change Memory and Switch), RRAM(Resistive Random Access Memory), 강유전체(ferroelectric) 메모리, STT-RAM(Spin-Transfer Torque Random Access Memory), STRAM(Spin Tunneling Random Access Memory), 자기저항성(magnetoresistive) 메모리, 자기(magnetic) 메모리, MRAM(Magnetic Random Access Memory) 및 SONOS(Semiconductor-Oxide-Nitride-Oxide-Semiconductor) 메모리 등과 같은 비휘발성 메모리일 수도 있다.
메모리(5)는 제2 데이터 폭(DW2)을 가질 수 있다. 메모리(5)의 데이터 폭, 즉 제2 데이터 폭(DW2)은 메모리(5)에 동시에 기입 가능한 데이터의 크기에 대응할 수 있다. 일부 실시예들에서, 메모리(5)는 구조에 기인하여 블록(또는 페이지) 단위로 데이터를 기입할 수 있고, 제2 데이터 폭(DW2)은 블록의 크기에 대응할 수 있다. 블록의 크기, 즉 제2 데이터 폭(DW2)은 후술되는 제1 데이터 폭(DW1)보다 클 수 있고, 비제한적인 예시로서 64-비트 또는 128-비트일 수 있다. 도 1에 도시된 바와 같이, 메모리(5)는 데이터 기입을 위한 장치(10)로부터 제2 데이터 폭(DW2)의 제2 데이터(D2) 및 제3 제어 신호(C3)를 수신할 수 있고, 제3 제어 신호(C3)에 기초하여 제2 데이터(D2)를 저장할 수 있다.
데이터 기입을 위한 장치(10)는 메모리(5)에 대한 기입 요청(W_REQ)을 수신할 수 있고, 기입 요청(W_REQ)을 처리할 수 있다. 기입 요청(W_REQ)은 기입 메시지로서 지칭될 수도 있고, 도 1에 도시된 바와 같이, 기입 어드레스(A_WR), 기입 커맨드(C_WR) 및 기입 데이터(D_WR)를 포함할 수 있다. 기입 어드레스(A_WR)는 메모리(5)에서 기입 데이터(D_WR)가 저장될 위치를 나타낼 수 있고, 기입 커맨드(C_WR)는 데이터 기입을 위한 장치(10)에 제공된 요청이 기입 요청(W_REQ)임을 나타낼 수 있다. 비록 도 1에서 기입 어드레스(A_WR), 기입 커맨드(C_WR) 및 기입 데이터(D_WR)가 분리되어 수신되는 것으로 도시되었으나, 일부 실시예들에서 데이터 기입을 위한 장치(10)는 기입 요청(W_REQ)을 수신하고 기입 요청(W_REQ)을 디코딩함으로써 기입 어드레스(A_WR), 기입 커맨드(C_WR) 및 기입 데이터(D_WR)를 추출할 수도 있다. 또한, 일부 실시예들에서, 기입 어드레스(A_WR), 기입 커맨드(C_WR) 및 기입 데이터(D_WR) 중 적어도 2개 이상은 상이한 타이밍에 수신될 수도 있다.
기입 요청(W_REQ) 및 도 6a의 독출 요청(R_REQ)을 포함하는, 메모리(5)에 대한 요청은 메모리(5)를 사용하고자 하는 임의의 장치로부터 제공될 수 있다. 예를 들면, 기입 요청(W_REQ)은 적어도 하나의 코어(core)를 포함하는 프로세서 및/또는 특정 기능을 수행하도록 설계된 기능 블록에 의해서 제공될 수도 있고, 메모리 인터페이스를 통해서 호스트 시스템으로부터 제공될 수도 있다. 또한, 기입 요청(W_REQ)은 데이터 기입을 위한 장치(10)에 단독으로 접속된 장치로부터 제공될 수도 있고, 데이터 기입을 위한 장치(10)가 버스에 접속된 경우 기입 요청(W_REQ)은 버스를 통해서 다수의 장치들로부터 제공될 수도 있다.
기입 데이터(D_WR)는 제1 데이터 폭(DW1)을 가질 수 있다. 예를 들면, 데이터 기입을 위한 장치(10)에 접속되어 기입 요청(W_REQ)을 제공하는 장치 또는 버스는 제1 데이터 폭(DW1)으로 정의되는 크기의 데이터에 기초하여 동작할 수 있다. 제1 데이터 폭(DW1)은 제2 데이터 폭(DW2)보다 작을 수 있고, 비제한적인 예시로서, 8-비트 또는 16-비트일 수 있다. 일부 실시예들에서, 제1 데이터 폭(DW1)은 기입 요청(W_REQ)을 제공하는 장치 또는 버스에 의해서 가변될 수 있다. 후술되는 바와 같이, 데이터 기입을 위한 장치(10)는 제1 데이터 폭(DW1) 및 제2 데이터 폭(DW2)의 상이함에 기인하는 문제들을 해소할 수 있고, 이에 따라 기입 요청(W_REQ)을 효율적으로 처리할 수 있다. 데이터 기입을 위한 장치(10)는, 도 1에 도시된 바와 같이, 제1 기입 버퍼(11), 제2 기입 버퍼(12) 및 컨트롤러(15)를 포함할 수 있다.
제1 기입 버퍼(11)는 제1 데이터 폭(DW1)을 가질 수 있고, 제1 데이터 폭(DW1)의 데이터, 즉 기입 데이터(D_WR)는 제1 기입 버퍼(11)에 한번에 기입될 수 있다. 제1 기입 버퍼(11)는 빠른 동작 속도를 가질 수 있고, 비제한적인 예시로서 복수의 레지스터들(registers)을 포함할 수 있다. 도 1에 도시된 바와 같이, 제1 기입 버퍼(11)는 컨트롤러(15)로부터 제1 제어 신호(C1)를 수신할 수 있고, 제1 제어 신호(C1)에 기초하여, 기입 데이터(D_WR)를 저장하거나 제1 기입 버퍼(11)에 저장된 제1 데이터(D1)를 제2 기입 버퍼(12)에 제공할 수 있다. 본 명세서에서, 제1 데이터(D1)는 제1 기입 버퍼(11)에 저장된, 제1 데이터 폭(DW1)의 데이터를 지칭할 수 있다.
제2 기입 버퍼(12)는 제2 데이터 폭(DW2)을 가질 수 있고, 제2 데이터 폭(DW2)이 데이터, 즉 제2 기입 버퍼(12)에 저장된 제2 데이터(D2)는 제2 기입 버퍼(12)로부터 동시에 독출될 수 있다. 제1 기입 버퍼(11)와 유사하게, 제2 기입 버퍼(12)는 빠른 동작 속도를 가질 수 있고, 비제한적인 예시로서 복수의 레지스터들을 포함할 수 있다. 도 1에 도시된 바와 같이, 제2 기입 버퍼(12)는 컨트롤러(15)로부터 제2 제어 신호(C2)를 수신할 수 있고, 제2 제어 신호(C2)에 기초하여, 제1 데이터(D1)를 저장하거나 제2 데이터(D2)를 메모리(5)에 제공할 수 있다. 본 명세서에서, 제2 데이터(D2)는 제2 기입 버퍼(12)에 저장된, 제2 데이터 폭(DW2)의 데이터를 지칭할 수 있다. 일부 실시예들에서, 제2 기입 버퍼(12)는 덮어쓰기(overwrite)를 지원할 수 있고, 이에 따라 제2 데이터(D2)의 일부를 제1 데이터(D1)로 갱신할 수도 있고, 제2 데이터(D2)의 일부를 메모리(5)로부터 독출된 데이터의 일부로 갱신할 수도 있다.
컨트롤러(15)는 기입 요청(W_REQ)에 포함된 기입 어드레스(A_WR) 및 기입 커맨드(C_WR)를 수신할 수 있고, 제1 내지 제3 제어 신호(C1 내지 C3)를 생성할 수 있다. 예를 들면, 컨트롤러(15)는 기입 커맨드(C_WR)에 응답하여 기입 데이터(D_WR)가 제1 기입 버퍼(11)에 기입되도록 제1 제어 신호(C1)를 생성할 수 있다. 또한, 컨트롤러(15)는 기입 어드레스(A_WR) 및 제2 데이터(D2)의 어드레스에 기초하여, 제1 데이터(D1)가 제2 기입 버퍼(12)에 기입되도록 제1 제어 신호(C1) 및 제2 제어 신호(C2)를 생성할 수 있다. 또한, 컨트롤러(15)는 기입 어드레스(A_WR) 및 제2 데이터(D2)의 어드레스에 기초하여, 제2 데이터(D2)가 메모리(5)에 기입되도록 제2 제어 신호(C2) 및 제3 제어 신호(C3)를 생성할 수 있다.
컨트롤러(15)는 기입 데이터(D_WR)를 즉각적으로 제1 기입 버퍼(11)에 기입할 수 있는 한편, 메모리(5)의 제2 데이터 폭(DW2)을 가지는 제2 데이터(D2)를 제2 기입 버퍼(12)로부터 메모리(5)에 기입할 수 있다. 이에 따라, 기입 요청(W_REQ)에 대한 빠른 처리가 가능할 수 있을 뿐만 아니라, 메모리(5)에 대한 기입 횟수가 감소함으로써 메모리(5)의 내구성 저하를 최소화시킬 수 있고, 결과적으로 메모리(5)의 수명이 연장될 수 있다. 컨트롤러(15)는 적어도 하나의 코어 및 적어도 하나의 코어에 의해서 실행된 소프트웨어 모듈을 포함하는 프로세싱 유닛일 수도 있고, 논리 합성에 의해서 설계된 하드웨어 모듈을 포함할 수도 있으며, 프로세싱 유닛 및 하드웨어 모듈의 조합을 포함할 수도 있다.
도 2는 본 개시의 예시적 실시예에 따라 도 1의 제2 데이터(D2)의 상태의 예시들을 나타내는 도면이다. 도 1을 참조하여 전술된 바와 같이, 제2 데이터(D2)는 제2 데이터 폭(DW2)을 가지고 제2 기입 버퍼(12)에 저장된 데이터를 지칭할 수 있다. 도 2에 도시된 바와 같이, 제2 데이터(D2)의 상태(S_D2)는 변동할 수 있고, 도 1의 컨트롤러(15)는 제2 데이터(D2)의 상태(D_S2)에 기초하여 기입 요청(W_REQ)을 처리할 수 있다. 이하에서, 도 2는 도 1을 참조하여 설명될 것이다.
제2 데이터(D2)는 제1 데이터(D1)에 의해서 부분적으로 갱신될 수 있다. 도 2에 도시된 바와 같이, 제2 데이터(D2)는 제1 데이터 폭(DW1)의 데이터로 분할될 수 있고, 컨트롤러(15)는 분할된 데이터의 유효(validity)(V) 또는 무효(invalidity)(I)를 나타내는 정보를 포함하는 플래그(F)를 참조할 수 있다. 본 명세서에서, 신규 데이터에 의해서 갱신된 데이터는 유효한(valid) 데이터로서 지칭될 수 있고, 갱신되지 아니한 데이터 혹은 갱신된 데이터에 대응하는 구(old) 데이터는 무효한(invalid) 데이터로서 지칭될 수 있다. 일부 실시예들에서, 플래그(F)는 컨트롤러(15) 내부에 저장될 수도 있고, 제2 기입 버퍼(12)에 저장될 수도 있다.
일부 실시예들에서, 제2 데이터(D2)는 전부 무효한(entirely invalid) 상태(EI), 일부 유효한(partially valid) 상태(PV) 및 전부 유효한(entirely valid) 상태(EV) 중 하나의 상태를 가질 수 있다. 예를 들면, 도 2에 도시된 바와 같이, 시간 t21에서, 제2 데이터(D2)는 무효한 데이터만을 포함할 수 있고, 이에 따라 제2 데이터(D2)는 전부 무효한 상태(EI)일 수 있다(S_D2 = EI). 시간 t21 이후, 제1 데이터(D1)가 제2 기입 버퍼(12)에 기입됨으로써 제2 데이터(D2)의 일부가 갱신될 수 있고, 이에 따라 시간 t22에서 제2 데이터(D2)는 일부 유효한 상태(PV)일 수 있다(S_D2 = PV). 시간 t22 이후, 제1 데이터(D1)가 제2 기입 버퍼(12)에 기입됨으로써 제2 데이터(D2)의 일부가 추가적으로 갱신될 수 있으나, 제2 데이터(D2)는 여전히 갱신되지 아니한 데이터를 포함할 수 있고, 이에 따라 시간 t23에서 제2 데이터(D2)는 일부 유효한 상태(PV)를 유지할 수 있다(S_D2 = PV). 시간 t24 이후, 제1 데이터(D1)가 제2 기입 버퍼(12)에 기입됨으로써 제2 데이터(D2)는 유효한 데이터만을 포함할 수 있고, 이에 따라 시간 t24에서 제2 데이터(D2)는 전부 유효한 상태(EV)일 수 있다(S_D2 = EV). 일부 실시예들에서, 제1 데이터(D1)가 제2 기입 버퍼(12)에 기입되면, 기입된 데이터에 대응하는 플래그(F)는 유효(V)로 변경될 수 있다. 또한, 일부 실시예들에서, 컨트롤러(15)는 플래그(F) 전체를 무효(I)로 변경함으로써 제2 데이터(D2)를 전부 무효한 상태(EI)로 설정할 수도 있다.
도 3은 본 개시의 예시적 실시예에 따라 제2 데이터의 상태들을 나타내는 도면이다. 도 2 등을 참조하여 전술된 바와 같이, 제2 데이터(D2)는 전부 무효한 상태(EI), 일부 유효한 상태(PV) 및 전부 유효한 상태(EV) 중 하나의 상태에 있을 수 있다. 이하에서, 도 5는 도 1을 참조하여 설명될 것이다.
어떠한 기입 요청(W_REQ)eh 수신되지 아니한 초기 상태에서 제2 데이터(D2)는 전부 무효한 상태(EI)에 있을 수 있다. 또한, 컨트롤러(15)에 의해서 제2 데이터(D2)는 전부 무효한 상태(EI)로 설정될 수 있다. 제2 데이터(D2)는 전부 무효한 상태(EI)에서 제1 조건(CON1) 충족시 일부 유효한 상태(PV)로 천이될 수 있다. 예를 들면, 제1 조건(CON1)은 제1 기입 버퍼(11)에 저장된 제1 데이터(D1)가 제2 기입 버퍼(12)에 기입되는 조건을 포함할 수 있다.
제2 데이터(D2)는 일부 유효한 상태(PV)에서 제2 조건(CON2) 충족시 일부 유효한 상태(PV)를 유지할 수 있다. 예를 들면, 제2 조건(CON2)은 제1 데이터(D1)가 제2 기입 버퍼(12)에 저장되었으나 제2 데이터(D2)가 여전히 무효한 데이터를 포함하고 있는 조건을 포함할 수 있다. 또한, 제2 데이터(D2)는 일부 유효한 상태(PV)에서 제3 조건(CON3) 충족시 전부 유효한 상태(EV)로 천이될 수 있다. 예를 들면, 제3 조건(CON3)은 제1 데이터(D1)가 제2 기입 버퍼(12)에 기입됨으로써 제2 데이터(D2)에 포함된 무효한 데이터가 모두 유효한 데이터로 전환되는 조건을 포함할 수 있다.
제2 데이터(D2)는 전부 유효한 상태(EV)에서 제4 조건(CON4) 충족시 전부 유효한 상태(EV)를 유지할 수 있다. 예를 들면, 제4 조건(CON4)은 제1 데이터(D1)가 제2 기입 버퍼(12)에 기입되는 조건을 포함할 수 있다. 또한, 제2 데이터(D2)는 전부 유효한 상태(EV)에서 제5 조건(CON5) 충족시 전부 무효한 상태(EI)로 천이될 수 있다. 예를 들면, 제5 조건(CON5)은 제2 기입 버퍼(12)에 저장된 제2 데이터(D2)가 메모리(5)에 기입되는 조건을 포함할 수 있다.
도 4는 본 개시의 예시적 실시예에 따라 데이터 기입을 위한 방법을 나타내는 순서도이다. 일부 실시예들에서, 도 4의 데이터 기입을 위한 방법은 도 1의 데이터 기입을 위한 장치(10)에 의해서 수행될 수 있다. 본 명세서에서, 데이터 기입을 위한 방법은, 도 1의 메모리(5)에 대한 기입 요청(W_REQ)을 처리하기 위한 방법, 기입 요청(W_REQ)을 처리하기 위한 방법으로 지칭될 수 있다. 도 4에 도시된 바와 같이, 데이터 기입을 위한 방법은 복수의 단계들(S41 내지 S49)을 포함할 수 있다. 이하에서 도 4는 도 1을 참조하여 설명될 것이다.
단계 S41에서, 기입 요청(W_REQ)을 수신하는 동작이 수행될 수 있다. 예를 들면, 데이터 기입을 위한 장치(10)는 기입 어드레스(A_WR), 기입 커맨드(C_WR) 및 기입 데이터(D_WR)를 포함하는 기입 요청(W_REQ)을 수신할 수 있다. 그 다음에 단계 S42에서, 기입 데이터(D_WR)를 제1 기입 버퍼(11)에 기입하는 동작이 수행될 수 있다. 예를 들면, 컨트롤러(15)는 기입 커맨드(C_WR)에 응답하여, 기입 데이터(D_WR)가 제1 기입 버퍼(11)에 기입되도록 제1 제어 신호(C1)를 제1 기입 버퍼(11)에 제공할 수 있다. 이에 따라, 제1 기입 버퍼(11)는 기입 요청(W_REQ) 수신시 기입 요청(W_REQ)에 포함된 기입 데이터(D_WR)를 저장할 수 있다.
단계 S43에서, 제2 기입 버퍼(12)의 미스(miss) 여부가 판정될 수 있다. 컨트롤러(15)는 기입 어드레스(A_WR) 및 제2 데이터(D2)의 어드레스에 기초하여 제2 기입 버퍼(12)의 미스 여부(또는 히트 여부)를 판정할 수 있다. 예를 들면, 컨트롤러(15)는 기입 어드레스(A_WR)에 대응하는 메모리(5)의 영역이 제2 데이터(D2)의 어드레스에 대응하는 메모리(5)의 영역에 포함되는 경우, 제2 기입 버퍼(12)의 히트(hit)를 판정할 수 있다. 다른 한편으로, 컨트롤러(15)는 기입 어드레스(A_WR)에 대응하는 메모리(5)의 영역이 제2 데이터(D2)의 어드레스에 대응하는 메모리(5)의 영역에 포함되지 아니하는 경우, 제2 기입 버퍼(12)의 미스를 판정할 수 있다. 도 4에 도시된 바와 같이, 제2 기입 버퍼(12)의 미스가 판정된 경우 단계 S44가 후속하여 수행될 수 있는 한편, 제2 기입 버퍼(12)의 히트가 판정된 경우 단계 S49가 후속하여 수행될 수 있다.
제2 기입 버퍼(12)의 미스가 판정된 경우, 단계 S44에서 제2 데이터(D2)의 상태(S_D2)가 일부 유효한 상태(PV)인지 여부가 판정될 수 있다. 도 4에 도시된 바와 같이, 제2 데이터(D2)의 상태(S_D2)가 일부 유효한 상태(PV)인 경우 단계 S45가 후속하여 수행될 수 있는 한편, 제2 데이터(D2)의 상태(S_D2)가 전부 무효한 상태(EI) 또는 전부 유효한 상태(EV)인 경우 단계 S47이 후속하여 수행될 수 있다. 단계 S47에서, 제2 데이터(D2)의 상태(S_D2)가 전부 유효한 상태(EV)인지 여부가 판정될 수 있다. 도 4에 도시된 바와 같이, 제2 데이터(D2)의 상태(S_D2)가 전부 유효한 상태(EV)인 경우 단계 S48이 후속하여 수행될 수 있는 한편, 제2 데이터(D2)의 상태(S_D2)가 전부 무효한 상태(EI)인 경우 단계 S49가 후속하여 수행될 수 있다. 이에 따라, 단계 S43이 수행된 후, 제2 데이터(D2)의 상태(S_D2)가 일부 유효한 상태(PV)인 경우 단계 S45, 단계 S46, 단계 S48 및 단계 S49가 순차적으로 수행될 수 있고, 제2 데이터(D2)의 상태(S_D2)가 전부 유효한 상태(EV)인 경우 단계 S48 및 단계 S49가 순차적으로 수행될 수 있으며, 제2 데이터(D2)의 상태(S_D2)가 전부 무효한 상태(EI)인 경우 단계 S49가 수행될 수 있다.
제2 기입 버퍼(12)가 히트된 경우, 단계 S49에서 제1 데이터(D1)를 제2 기입 버퍼(12)에 기입하는 동작이 수행될 수 있다. 예를 들면, 컨트롤러(15)는 제2 데이터(D2)의 상태(S_D2)와 무관하게, 제1 기입 버퍼(11)에 포함된 제1 데이터(D1)를 제2 기입 버퍼(12)에 기입할 수 있고, 이에 따라 제2 기입 버퍼(12)에 저장된 제2 데이터(D2)는 일부 유효한 상태(PV) 또는 전부 유효한 상태(EV)일 수 있다.
제2 기입 버퍼(12)가 미스되고 제2 데이터(D2)의 상태(S_D2)가 일부 유효한 상태(PV)인 경우, 단계 S45에서 메모리(5)로부터 데이터를 독출하는 동작이 수행될 수 있다. 예를 들면, 컨트롤러(15)는 제2 데이터(D2)의 어드레스에 대응하는 데이터를 메모리(5)로부터 독출할 수 있다. 그 다음에 단계 S45에서 제2 데이터(D2)를 갱신하는 동작이 수행될 수 있다. 예를 들면, 컨트롤러(15)는 제2 데이터(D2)에서 무효한 부분을 메모리(5)로부터 독출된 데이터로 갱신함으로써, 제2 데이터(D2)를 갱신할 수 있다. 이에 따라, 제2 데이터(D2)는 유효한 데이터만을 포함할 수 있고, 전부 유효한 상태(EV)를 가질 수 있다. 그 다음에 단계 S48에서 제2 데이터(D2)를 메모리(5)에 기입하는 동작이 수행될 수 있다. 예를 들면, 컨트롤러(15)는 전부 유효한 상태(EV)의 제2 데이터(D2)를 메모리(5)에 기입할 수 있고, 제2 데이터(D2)를 전부 무효한 상태(IV)로 설정할 수 있다. 마지막으로, 단계 S49에서 제1 데이터(D1)를 제2 기입 버퍼(12)에 기입하는 동작이 수행될 수 있고, 제2 기입 버퍼(12)에 저장된 제2 데이터(D2)는 일부 유효한 상태(PV)를 가질 수 있다.
제2 기입 버퍼(12)가 미스되고 제2 데이터(D2)의 상태가 전부 유효한 상태(EV)인 경우, 단계 S48에서 제2 데이터(D2)를 메모리에 기입하는 동작이 수행될 수 있다. 예를 들면, 제2 데이터(D2)가 전부 유효한 상태(EV)므로, 컨트롤러(15)는 메모리(5)에 저장된 데이터에 의한 제2 데이터(D2)의 갱신을 생략할 수 있고, 제2 데이터(D2)를 메모리(5)에 기입할 수 있으며, 제2 데이터(D2)를 전부 무효한 상태(IV)로 설정할 수 있다. 그 다음에, 단계 S49에서 제1 데이터(D1)를 제2 기입 버퍼(12)에 기입하는 동작이 수행될 수 있고, 제2 기입 버퍼(12)에 저장된 제2 데이터(D2)는 일부 유효한 상태(PV)를 가질 수 있다.
제2 기입 버퍼(12)가 미스되고 제2 데이터(D2)의 상태가 전부 무효한 상태(EI)인 경우, 단계 S49에서 제1 데이터(D1)를 제2 기입 버퍼(12)에 기입하는 동작이 수행될 수 있다. 예를 들면, 제2 데이터(D2)가 전부 무효한 상태(EI)므로, 컨트롤러(15)는 제2 데이터(D2)의 갱신이나 제2 데이터(D2)의 기입을 생략할 수 있고, 제1 데이터(D1)를 제2 기입 버퍼(12)에 기입할 수 있다.
도 5a 내지 도 5c는 본 개시의 예시적 실시예들에 따라 데이터 기입을 위한 장치의 동작의 예시들을 시간의 흐름에 따라 나타내는 블록도들이다. 구체적으로, 도 5a의 블록도는 제2 기입 버퍼(WB2)가 미스되고 제2 데이터(D2)의 상태(S_D2)가 일부 유효한 상태(PV)인 경우 데이터 기입을 위한 장치(50a)의 동작의 예시를 나타내고, 도 5b의 블록도는 제2 기입 버퍼(WB2)가 미스되고 제2 데이터(D2)의 상태(S_D2)가 전부 유효한 상태(EV)인 경우 데이터 기입을 위한 장치(50b)의 동작의 예시를 나타내며, 도 5c의 블록도는 제2 데이터(D2)의 상태(S_D2)가 전부 무효한 상태(IV)인 경우 데이터 기입을 위한 장치(50c)의 동작의 예시를 나타낸다.
도 5a를 참조하면, 시간 t51에서 제1 기입 버퍼(WB1)는 기입 데이터(D_WR)와 일치하는 제1 데이터(D1)를 저장할 수 있고, 제2 기입 버퍼(WB2)에 저장된 제2 데이터(D2)는 일부 유효한 상태(PV)일 수 있다. 이에 따라, 메모리(5) 역시 일부 유효한 데이터를 저장할 수 있다. 시간 t52에서, 제2 기입 버퍼(WB2)는 제2 데이터(D2)에 대응하는 메모리(5)의 영역으로부터 독출된 데이터를 수신할 수 있고, 제2 데이터(D2)의 무효한 부분은 독출된 데이터에 의해서 갱신될 수 있다. 이에 따라, 시간 t52에서 제2 데이터(D2)는 전부 유효한 상태(EV)일 수 있다. 시간 t53에서, 제2 기입 버퍼(WB2)에 저장된 제2 데이터(D2)가 메모리(5)에 기입될 수 있고, 이에 따라 제2 데이터(D2)는 전부 무효한 상태(EI)가 될 수 있고, 메모리(5)는 전부 유효한 데이터를 저장할 수 있다. 시간 t54에서, 제1 기입 버퍼(WB1)에 저장된, 기입 데이터(D_WR)와 일치하는 제1 데이터(D1)가 제2 기입 버퍼(WB2)에 기입될 수 있다. 이에 따라, 제2 데이터(D2)는 일부 유효한 상태(PV)가 될 수 있고, 메모리(5)는 일부 무효한 데이터를 저장할 수 있다.
도 5b를 참조하면, 시간 t55에서 제1 기입 버퍼(WB1)는 기입 데이터(D_WR)와 일치하는 제1 데이터(D1)를 저장할 수 있고, 제2 기입 버퍼(WB2)에 저장된 제2 데이터(D2)는 전부 유효한 상태(PV)일 수 있다. 이에 따라, 메모리(5)는 전부 무효한 데이터를 저장할 수 있다. 시간 t56에서, 제2 기입 버퍼(WB2)는 제2 데이터(D2)가 메모리(5)에 기입될 수 있고, 이에 따라 제2 데이터(D2)는 전부 무효한 상태(EI)가 될 수 있고, 메모리(5)는 전부 유효한 데이터를 저장할 수 있다. 시간 t57에서, 제1 기입 버퍼(WB1)에 저장된, 기입 데이터(D_WR)와 일치하는 제1 데이터(D1)가 제2 기입 버퍼(WB2)에 기입될 수 있다. 이에 따라, 제2 데이터(D2)는 일부 유효한 상태(PV)가 될 수 있고, 메모리(5)는 일부 무효한 데이터를 저장할 수 있다.
도 5c를 참조하면, 시간 t58에서 제1 기입 버퍼(WB1)는 기입 데이터(D_WR)와 일치하는 제1 데이터(D1)를 저장할 수 있고, 제2 기입 버퍼(WB2)에 저장된 제2 데이터(D2)는 전부 무효한 상태(EI)일 수 있다. 이에 따라, 메모리(5)는 전부 유효한 데이터를 저장할 수 있다. 시간 t59에서, 제1 기입 버퍼(WB1)에 저장된, 기입 데이터(D_WR)와 일치하는 제1 데이터(D1)가 제2 기입 버퍼(WB2)에 기입될 수 있다. 이에 따라, 제2 데이터(D2)는 일부 유효한 상태(PV)가 될 수 있고, 메모리(5)는 일부 무효한 데이터를 저장할 수 있다.
도 6은 본 개시의 예시적 실시예에 따른 데이터 기입을 위한 장치를 나타내는 블록도이다. 구체적으로, 도 6의 블록도는 메모리(5)에 대한 데이터 기입뿐만 아니라 메모리(5)로부터 데이터 독출을 수행하는, 즉 독출 요청(R_REQ)을 처리하는 데이터 기입을 위한 장치(60)를 나타낸다. 데이터 기입을 위한 장치(60)는, 도 1의 데이터 기입을 위한 장치(10)와 유사하게, 제1 기입 버퍼(61), 제2 기입 버퍼(62) 및 컨트롤러(65)를 포함할 수 있고, 독출 버퍼(63)를 더 포함할 수 있다. 이하에서 도 6에 대한 설명 중 도 1에 대한 설명과 중복되는 내용은 생략될 것이다.
데이터 기입을 위한 장치(60)는 메모리(5)에 대한 독출 요청(R_REQ)을 수신할 수 있고, 독출 요청(R_REQ)을 처리할 수 있다. 독출 요청(R_REQ)은 독출 메시지로서 지칭될 수도 있고, 도 6에 도시된 바와 같이, 독출 어드레스(A_RD) 및 독출 커맨드(C_RD)를 포함할 수 있다. 독출 어드레스(A_RD)는 메모리(5)에서 독출 데이터(D_RD)가 저장된 위치를 나타낼 수 있고, 독출 커맨드(C_RD)는 데이터 기입을 위한 장치(60)에 제공된 요청이 독출 요청(R_REQ)임을 나타낼 수 있다. 비록 도 6에서 독출 어드레스(A_RD) 및 독출 커맨드(C_RD)가 분리되어 수신되는 것으로 도시되었으나, 일부 실시예들에서 데이터 기입을 위한 장치(60)는 독출 요청(R_REQ)을 수신하고 독출 요청(R_REQ)을 디코딩함으로써 독출 어드레스(A_RD) 및 독출 커맨드(C_RD)를 추출할 수도 있다. 독출 데이터(D_RD)는 도 1의 기입 데이터(D_WR)와 같이 제1 데이터 폭(DW1)을 가질 수 있고, 독출 버퍼(63)로부터 출력될 수 있다.
독출 버퍼(63)는 제2 데이터 폭(DW2)을 가질 수 있다. 독출 버퍼(63)는 빠른 동작 속도를 가질 수 있고, 비제한적인 예시로서 복수의 레지스터들을 포함할 수 있다. 도 6에 도시된 바와 같이, 독출 버퍼(63)는 제4 제어 신호(C4)를 수신할 수 있고, 제4 제어 신호(C4)에 기초하여, 제2 데이터 폭(DW2)을 가지는 메모리(5)로부터 독출된 데이터를 저장할 수 있고, 저장된 제3 데이터(D3) 중 제1 데이터 폭(DW1)의 독출 데이터(D_RD)를 출력할 수 있다.
컨트롤러(65)는 독출 요청(R_REQ)에 포함된 독출 어드레스(A_RD) 및 독출 커맨드(C_RD)를 수신할 수 있고, 도 1에 도시된 바와 같이, 기입 요청(W_REQ)에 포함된 기입 어드레스(A_WR) 및 기입 커맨드(C_WR)를 더 수신할 수 있다. 컨트롤러(65)는 제1 내지 제4 제어 신호(C1 내지 C4)를 생성할 수 있다. 예를 들면, 컨트롤러(65)는 독출 어드레스(A_RD) 및 독출 커맨드(C_RD)에 기초하여, 메모리(5)로부터 데이터를 독출하도록 제3 제어 신호(C3)를 생성할 수 있고, 독출된 데이터가 독출 버퍼(63)에 기입되도록 제4 제어 신호(C4)를 생성할 수 있다. 또한, 컨트롤러(65)는 독출 어드레스(A_RD)에 기초하여 독출 버퍼(63)에 저장된 제3 데이터(D3) 중 제1 데이터 폭(DW1)을 가지는 데이터가 독출 데이터(D_RD)로서 출력되도록 제4 제어 신호(C4)를 생성할 수 있다.
독출 요청(R_REQ)에 기인하여 독출 버퍼(63)에 제3 데이터(D3)가 저장된 후 기입 요청(W_REQ)이 수신되는 경우, 컨트롤러(65)는 제3 데이터(D3)의 어드레스 및 기입 요청(W_REQ)에 포함된 기입 어드레스(A_WR)에 기초하여 기입 요청(W_REQ)을 처리할 수 있다. 예를 들면, 컨트롤러(65)는 기입 요청(W_REQ)을 처리하기 전에 제3 데이터(D3)를 메모리(5)에 기입하는 동작을 생략할 수 있다. 이에 따라, 제3 데이터(D3)의 기입에 소요되는 시간이 제거될 수 있고, 메모리(5)에 대한 기입이 감소함으로써 메모리(5)의 수명이 더 연장될 수 있다.
도 7a는 본 개시의 예시적 실시예에 따라 데이터 기입을 위한 방법을 나타내는 순서도이고, 도 7b는 본 개시의 예시적 실시예에 따라 제2 데이터(D2)의 상태들을 나타내는 도면이다. 일부 실시예들에서, 도 7a의 데이터 기입을 위한 방법은 도 6의 데이터 기입을 위한 장치(60)에 의해서 수행될 수 있고, 도 7b는 도 6의 데이터 기입을 위한 장치(60)에서 제2 데이터(D2)의 상태들을 나타낸다. 도 7a에 도시된 바와 같이, 데이터 기입을 위한 방법은 복수의 단계들(S71 내지 S78)을 포함할 수 있다. 이하에서 도 7a 및 도 7b는 도 6을 참조하여 설명될 것이며, 도 7a에 대한 설명 중 도 4에 대한 설명과 중복되는 내용 및 도 7b에 대한 설명 중 도 3에 대한 설명과 중복되는 내용은 생략될 것이다.
단계 S71에서, 독출 요청(R_REQ)을 수신하는 동작이 수행될 수 있다. 예를 들면, 데이터 기입을 위한 장치(60)는 독출 어드레스(A_RD) 및 독출 커맨드(C_RD)를 포함하는 독출 요청(R_REQ)을 수신할 수 있다. 그 다음에 단계 S72에서, 데이터를 메모리(5)로부터 독출하고 독출 버퍼(63)에 기입하는 동작이 수행될 수 있다. 예를 들면, 컨트롤러(15)는 독출 어드레스(A_RD)에 대응하는 데이터를 메모리(5)로부터 독출하고, 독출된 데이터를 독출 버퍼(63)에 기입할 수 있다. 그 다음에 단계 S73에서, 독출 데이터(D_RD)를 선택하고 출력하는 동작이 수행될 수 있다. 예를 들면, 컨트롤러(15)는 독출 버퍼(63)에 저장된 제2 데이터 폭(DW2)의 제3 데이터(D3)에서 독출 어드레스(A_RD)에 기초하여 제1 데이터 폭(DW1)의 데이터를 선택할 수 있고, 선택된 데이터가 독출 데이터(D_RD)로서 출력되도록 제4 제어 신호(C4)를 통해 독출 버퍼(63)를 제어할 수 있다.
단계 S74에서 기입 요청(W_REQ)이 수신될 수 있고, 단계 S75에서 기입 데이터(D_WR)를 제1 기입 버퍼(61)에 기입하는 동작이 수행될 수 있다. 그 다음에 단계 S76에서, 독출 버퍼(63)의 히트 여부가 판정될 수 있다. 예를 들면, 컨트롤러(65)는 기입 어드레스(A_WR) 및 독출 버퍼(63)에 저장된 제3 데이터(D3)의 어드레스에 기초하여 독출 버퍼(63)의 히트 여부(또는 미스 여부)를 판정할 수 있다. 예를 들면, 제2 기입 버퍼(62)의 히트와 유사하게, 컨트롤러(65)는 기입 어드레스(A_WR)에 대응하는 메모리(5)의 영역이 제3 데이터(D3)의 어드레스에 대응하는 메모리(5)의 영역에 포함되는 경우, 독출 버퍼(63)의 히트를 판정할 수 있다. 다른 한편으로, 컨트롤러(65)는 기입 어드레스(A_WR)에 대응하는 메모리(5)의 영역이 제3 데이터(D3)의 어드레스에 대응하는 메모리(5)의 영역에 포함되지 아니하는 경우, 독출 버퍼(63)의 미스를 판정할 수 있다. 도 7a에 도시된 바와 같이, 독출 버퍼(63)의 히트가 판정된 경우 단계 S77이 후속하여 수행될 수 있는 한편, 독출 버퍼(63)의 미스가 판정된 경우 도 4의 단계 S43이 후속하여 수행될 수 있다.
독출 버퍼(63)의 히트가 판정된 경우, 단계 S77에서 제1 데이터(D1)를 독출 버퍼(63)에 기입하는 동작이 수행될 수 있다. 예를 들면, 컨트롤러(65)는 제1 기입 버퍼(61)에 저장된, 기입 데이터(D_WR)와 일치하는 제1 데이터(D1)를 독출 버퍼(63)에 기입할 수 있다. 이에 따라, 제3 데이터(D3)의 일부는 제1 데이터(D1)에 의해서 갱신될 수 있다.
단계 S78에서, 제3 데이터(D3)를 제2 기입 버퍼(62)에 기입하는 동작이 수행될 수 있다. 예를 들면, 컨트롤러(65)는 독출 버퍼(63)에 저장된 제3 데이터(D3)를 제2 기입 버퍼(62)에 기입할 수 있고, 제2 기입 버퍼(62)에 저장된, 제3 데이터(D3)와 일치하는 제2 데이터(D2)를 전부 유효한 상태(EV)로 설정할 수 있다. 이에 따라, 독출 버퍼(63)에 저장된 제3 데이터(D3)를 메모리(5)에 기입하는 동작이 생략될 수 있다.
도 7b를 참조하면, 제2 데이터(D)는 도 3과 유사하게 전부 무효한 상태(EI), 일부 유효한 상태(PV) 및 전부 유효한 상태(EV) 중 하나의 상태에 있을 수 있다. 도 3의 제1 내지 제5 조건(CON1 내지 CON5)과 유사하게, 도 7b의 제1 내지 제5 조건(CON1' 내지 CON5')에 의해서 제2 데이터(D2)는 전부 무효한 상태(EO), 일부 유효한 상태(PV) 및 전부 유효한 상태(EV) 사이에서 천이될 수 있다. 또한, 도 6b에 도시된 바와 같이, 제2 데이터(D2)는 전부 무효한 상태(EI)에서 제6 조건(CON6) 충족시 전부 유효한 상태(EV)로 천이될 수 있다. 예를 들면, 도 7a의 단계 S76에서 독출 버퍼(63)의 히트가 판정되고, 단계 S77에서 제1 데이터(D1)를 독출 버퍼(63)에 기입된 후, 단계 S78에서 제3 데이터(D3)가 제2 기입 버퍼(62)에 기입될 수 있다. 이에 따라, 단계 S78에서 제2 데이터(D2)는 전부 무효한 상태(EI)에서 전부 유효한 상태(EV)로 천이될 수 있고, 제6 조건(CON6)은 독출 버퍼(63)로부터 제2 기입 버퍼(62)에 제3 데이터(D3)가 기입되는 조건을 포함할 수 있다.
도 8은 본 개시의 예시적 실시예에 따라 데이터 기입을 위한 장치의 동작의 예시를 시간의 흐름에 따라 나타내는 블록도이다. 구체적으로, 도 8의 블록도는 기입 요청(W_REQ)에 포함된 기입 어드레스(A_WR)에 의해서 독출 버퍼(RB)가 히트되는 경우 데이터 기입을 위한 장치(80)의 동작의 예시를 나타낸다.
도 8을 참조하면, 시간 t81에서 독출 요청(R_REQ)에 응답하여 메모리(5)로부터 독출 어드레스(A_RD)에 대응하는 데이터가 독출될 수 있고, 독출 버퍼(RB)는 독출된 데이터를 저장할 수 있다. 독출 버퍼(RB)는 저장된 제3 데이터(D3)에서 제1 데이터 폭(DW1)의 독출 데이터(D_RD)를 출력할 수 있다. 시간 t82에서, 기입 요청(W_REQ)이 수신될 수 있고, 제1 기입 버퍼(WB1)는 기입 데이터(D_WR)와 일치하는 제1 데이터(D1)를 저장할 수 있으며, 기입 어드레스(A_WR)에 의해서 독출 버퍼(RB)가 히트될 수 있다. 시간 t83에서, 제1 기입 버퍼(WB1)에 저장된 제1 데이터(D1)가 독출 버퍼(RB)에 기입될 수 있다. 일부 실시예들에서, 도 8에 도시된 바와 상이하게, 제3 데이터(D3)에서 독출 데이터(D_RD)와 일치하는 데이터가 제1 데이터(D1)에 의해서 덮어쓰기될 수도 있다. 독출 버퍼(RB)는 갱신된 제3 데이터(D3)를 저장할 수 있고, 메모리(5)는 무효한 데이터를 포함할 수 있다. 시간 t84에서, 독출 버퍼(RB)에 저장된 제3 데이터(D3)가 제2 기입 버퍼(WB2)에 기입될 수 있다. 이에 따라, 제2 기입 버퍼(WB2)는 전부 유효한 상태(EV)의 제2 데이터(D2)를 저장할 수 있다.
도 9는 본 개시의 예시적 실시예에 따른 데이터 기입을 위한 장치를 나타내는 블록도이다. 구체적으로, 도 9의 블록도는 특수 기능 레지스터(Special Function Register)(SFR)를 포함하는 컨트롤러(95)를 포함하는 데이터 기입을 위한 장치(90)를 나타낸다. 데이터 기입을 위한 장치(90)는, 도 1의 데이터 기입을 위한 장치(10)와 유사하게, 제1 기입 버퍼(91), 제2 기입 버퍼(92) 및 컨트롤러(95)를 포함할 수 있고, 메모리(5)에 대한 기입 요청을 처리할 수 있다. 이하에서, 도 9에 대한 설명 중 도 1에 대한 설명과 중복되는 내용은 생략될 것이다.
컨트롤러(95)는 특수 기능 레지스터(SFR)를 포함할 수 있다. 특수 기능 레지스터(SFR)는, 데이터 기입을 위한 장치(90)의 외부로부터 액세스가능하고 컨트롤러(95)의 동작을 설정하는 설정 정보(SET)를 수신하여 저장할 수 있다. 컨트롤러(95)는 특수 기능 레지스터(SFR)에 저장된 정보에 기초하여 기입 요청(W_REQ)을 처리할 수 있다.
일부 실시예들에서, 제1 기입 버퍼(91) 및/또는 제2 기입 버퍼(92)는 재구성가능(reconfigurable)할 수 있고, 컨트롤러(95)는 특수 기능 레지스터(SFR)에 저장된 설정 정보(SET)에 기초하여 제1 기입 버퍼(91)의 제1 깊이(DD1) 및 제2 기입 버퍼(92)의 제2 깊이(DD2)를 설정할 수 있다. 도 1을 참조하여 전술된 바와 같이, 제1 기입 버퍼(91)는 제1 데이터 폭(DW1)을 가질 수 있는 한편, 컨트롤러(95)에 의해서 조절가능한 제1 깊이(DD1)를 가질 수 있다. 제1 기입 버퍼(91)의 용량은 제1 데이터 폭(DW1) 및 제1 깊이(DD1)에 의해서 결정될 수 있고, 이에 따라 재구성가능한 제1 기입 버퍼(91)의 용량이 컨트롤러(95)에 의해서 결정될 수 있다. 유사하게, 제2 기입 버퍼(92)는 제2 데이터 폭(DW2)을 가질 수 있고, 컨트롤러(95)에 의해서 조절가능한 제2 깊이(DD2)를 가질 수 있다. 제2 기입 버퍼(92)의 용량은 제2 데이터 폭(DW2) 및 제2 깊이(DD2)에 의해서 결정될 수 있고, 이에 따라 재구성가능한 제2 기입 버퍼(92)의 용량이 컨트롤러(95)에 의해서 결정될 수 있다. 또한, 일부 실시예들에서, 컨트롤러(95)는, 제1 깊이(DD1) 및 제2 깊이(DD2)뿐만 아니라, 제1 데이터 폭(DW1) 및/또는 제2 데이터 폭(DW2)을 설정 정보(SET)에 기초하여 설정할 수도 있다.
일부 실시예들에서, 컨트롤러(95)는 특수 기능 레지스터(SFR)에 저장된 설정 정보(SET)에 기초하여 메모리(5)에 제2 데이터(D2)의 기입을 반복할 수 있다. 예를 들면, 메모리(5)는 제2 데이터(D2)를 저장하기 위하여, 자신의 구조에 기인하여 제2 데이터(D2)의 반복된 기입을 요구할 수 있다. 설정 정보(SET)는 기입을 반복하는 횟수에 대한 정보를 포함할 수 있고, 컨트롤러(95)는 설정 정보(SET)에 포함된 횟수만큼 메모리(5)에 대한 제2 데이터(D2)의 기입을 반복할 수 있다.
도 10a 및 도 10b는 본 개시의 예시적 실시예들에 따른 데이터 기입을 위한 장치의 예시들을 나타내는 블록도들이다. 구체적으로, 도 10a 및 도 10b의 블록도들은 재구성가능한 제1 기입 버퍼 및 제2 기입 버퍼를 포함하는, 데이터 기입을 위한 장치의 예시들을 나타낸다. 이하에서 도 10a 및 도 10b에 대한 설명 중 상호 중복되는 내용 및 도 9에 대한 설명과 중복되는 내용은 생략될 것이다.
도 10a를 참조하면, 데이터 기입을 위한 장치(100a)는 제1 기입 버퍼(101a), 제2 기입 버퍼(102a) 및 컨트롤러(105a)를 포함할 수 있고, 컨트롤러(105a)는 특수 기능 레지스터(SFR)를 포함할 수 있다. 일부 실시예들에서, 컨트롤러(105a)는, 도 10a에 도시된 바와 같이 설정 정보(SET)에 기초하여 제1 기입 버퍼(101a)의 제1 깊이(DD1')를 제2 기입 버퍼(102a)보다 상대적으로 크게 설정할 수 있다. 예를 들면, 메모리(5)의 동작 속도가 데이터 기입을 위한 장치(100a)가 접속한 장치나 버스의 속도보다 느린 경우, 즉 메모리(5)의 액세스 시간이 데이터 기입을 위한 장치(100a)가 접속한 장치나 버스의 클락 주기보다 긴 경우, 제1 기입 버퍼(101a)의 제1 깊이(DD1')를 크게 함으로써 기입 처리량(write throughput)의 감소를 방지할 수 있다. 또한, 데이터 기입을 위한 장치(100a)를 포함하는 집적 회로에서 기입 처리량에 마진이 있는 한편 면적이 제한되는 경우, 제1 기입 버퍼(101a)의 제1 깊이(DD1')가 크게 설정될 수 있다. 일부 실시예들에서, 제1 기입 버퍼(101a) 및 제2 기입 버퍼(102a)는 재구성가능하지 아니할 수 있고, 제1 깊이(DD1')는 제조시 결정될 수도 있다.
도 10b를 참조하면, 데이터 기입을 위한 장치(100b)는 제1 기입 버퍼(101b), 제2 기입 버퍼(102b) 및 컨트롤러(105b)를 포함할 수 있고, 컨트롤러(105b)는 특수 기능 레지스터(SFR)를 포함할 수 있다. 일부 실시예들에서, 컨트롤러(105b)는, 도 10b에 도시된 바와 같이 설정 정보(SET)에 기초하여 제2 기입 버퍼(102b)의 제2 깊이(DD2')를 제1 기입 버퍼(101b)보다 상대적으로 크게 설정할 수 있다. 예를 들면, 메모리(5)가 기입 횟수에 민감한 수명을 가지는 경우, 제2 기입 버퍼(102b)의 제2 깊이(DD2')를 크게 함으로써 기입 횟수에 기인하는 메모리(5)의 내구성 저하를 줄일 수 있고, 메모리(5)의 수명을 연장시킬 수 있다. 일부 실시예들에서, 제1 기입 버퍼(101b) 및 제2 기입 버퍼(102b)는 재구성가능하지 아니할 수 있고, 제2 깊이(DD2')는 제조시 결정될 수도 있다.
도 11은 본 개시의 예시적 실시예에 따라 제2 데이터의 상태들을 나타내는 도면이다. 제2 데이터(D2)는 도 3과 유사하게 전부 무효한 상태(EI), 일부 유효한 상태(PV) 및 전부 유효한 상태(EV)뿐만 아니라 백업(backup) 상태(BK) 중 하나의 상태에 있을 수 있다. 이하에서, 도 11은 도 1을 참조하여 설명될 것이며, 도 11에 대한 설명 중 도 3에 대한 설명과 중복되는 내용은 생략될 것이다.
도 11을 참조하면, 도 3의 제1 내지 제5 조건(CON1 내지 CON5)과 유사하게, 도 11의 제1 내지 제5 조건(CON1" 내지 CON5")에 의해서 제2 데이터(D2)는 전부 무효한 상태(EI), 일부 유효한 상태(PV) 및 전부 유효한 상태(EV) 사이에서 천이될 수 있다. 제2 데이터(D2)는 전부 유효한 상태(EV)에서 제7 조건(CON7) 충족시 백업 상태(BK)로 천이될 수 있다. 일부 실시예들에서, 데이터 기입을 위한 장치(10)는 유휴(idle) 모드로 진입할 수 있다. 컨트롤러(15)는 유휴 모드 진입시 제2 기입 버퍼(12)에 저장된 제2 데이터(D2)를 메모리(5)에 저장할 수 있고, 제2 데이터(D2)를 백업 상태(BK)로 설정할 수 있다. 이에 따라, 제7 조건(CON7)은 유휴 모드에서 제2 데이터(D2)가 메모리(5)에 기입되는 조건을 포함할 수 있다.
제2 데이터(D2)는 백업 상태(BK)에서 제8 조건(CON8) 충족시 전부 무효한 상태(EI)로 천이될 수 있다. 예를 들면, 제8 조건(CON8)은, 유휴 모드가 해제되고 수신된 기입 요청(W_REQ)에 포함된 기입 어드레스(A_WR)에 의해서 제2 기입 버퍼(12)가 미스되는 조건을 포함할 수 있다. 또한, 제2 데이터(D2)는 백업 상태(BK)에서 제9 조건(CON9) 충족시 전부 유효한 상태(EV)로 천이될 수 있다. 예를 들면, 제9 조건(CON9)은 유휴 모드가 해제되고 수신된 기입 요청(W_REQ)에 포함된 기입 어드레스(A_WR)에 의해서 제2 기입 버퍼(12)가 히트되는 조건을 포함할 수 있다.
도 12는 본 개시의 예시적 실시예에 따라 데이터 기입을 위한 방법을 나타내는 순서도이다. 구체적으로, 도 12의 방법은 제2 데이터(D2)가 백업 상태(BK)를 가질 수 있는 경우, 데이터 기입을 위한 방법을 나타낸다. 일부 실시예들에서, 도 12의 데이터 기입을 위한 방법은 도 1의 데이터 기입을 위한 장치(10)에 의해서 수행될 수 있다. 도 12에 도시된 바와 같이, 데이터 기입을 위한 방법은 복수의 단계들(S121 내지 S132)을 포함할 수 있다. 이하에서 도 12는 도 1을 참조하여 설명될 것이며, 도 12에 대한 설명 중 도 4 및 도 7a에 대한 설명과 중복되는 내용은 생략될 것이다.
단계 S121에서, 유휴 모드로의 진입 여부가 판정될 수 있다. 예를 들면, 컨트롤러(15)는 미리 정의된 시간 동안 기입 요청(W_REQ) 및/또는 독출 요청(R_REQ)이 수신되지 아니하거나, 전력 소비 감소 등을 목적으로 외부로부터 유휴 모드의 진입을 지시하는 신호를 수신하는 경우, 유휴 모드로 진입할 수 있다. 도 12에 도시된 바와 같이, 유휴 모드로 진입된 경우 단계 S122가 수행될 수 있고, 유휴 모드로 진입되지 아니한 경우, 도 12의 방법은 종료할 수 있고, 예컨대 도 4 또는 도 7a의 방법이 수행될 수 있다.
유휴 모드에 진입한 경우, 단계 S122에서 제2 데이터(D2)의 상태(S_D2)가 일부 유효한 상태(PV)인지 여부가 판정될 수 있다. 도 12에 도시된 바와 같이, 제2 데이터(D2)의 상태(S_D2)가 일부 유효한 상태(PV)인 경우, 단계 S123이 후속하여 수행될 수 있는 한편, 제2 데이터(D2)의 상태(S_D2)가 전부 무효한 상태(EI) 또는 전부 유효한 상태(EV)인 경우 단계 S124가 후속하여 수행될 수 있다. 단계 S124에서 제2 데이터(D2)의 상태(S_D2)가 전부 유효한 상태(EV)인지 여부가 판정될 수 있다. 도 12에 도시된 바와 같이, 제2 데이터(D2)의 상태(S_D2)가 전부 유효한 상태(EV)인 경우 단계 S125가 후속하여 수행될 수 있는 한편, 제2 데이터(D2)의 상태(S_D2)가 전부 무효한 상태(EI)인 경우 도 12의 방법은 종료할 수 있다.
제2 데이터(D2)가 일부 유효한 상태(PV)인 경우, 단계 S123에서 제2 데이터(D2)를 갱신하는 동작이 수행될 수 있다. 예를 들면, 컨트롤러(15)는 메모리(5)로부터 제2 데이터(D2)의 어드레스에 대응하는 데이터를 독출할 수 있고, 제2 기입 버퍼(12)에 독출된 데이터의 일부를 기입함으로써 제2 데이터(D2)에 포함된 무효한 데이터를 유효한 데이터로 갱신할 수 있다. 그 다음에 단계 S125에서, 제2 데이터(D2)를 메모리(5)에 기입하는 동작이 수행될 수 있다. 예를 들면, 컨트롤러(15)는 갱신된 제2 데이터(D2)를 메모리(5)에 기입할 수 있고, 이에 따라 제2 기입 버퍼(12)에 저장된 제2 데이터(D2)는 메모리(5)에 백업될 수 있다. 이에 따라, 후속하는 단계 S126에서, 제2 데이터(D2)의 상태를 백업 상태(BK)로 설정하는 동작이 수행될 수 있다. 다른 한편으로, 단계 S124에서 제2 데이터(D2)가 전부 유효한 상태(EV)인 경우, 도 12에 도시된 바와 같이, 제2 데이터(D2)를 갱신하는 단계 S123이 생략되고 단계 S125 및 단계 S126이 수행될 수 있다.
단계 S127에서 기입 요청(W_REQ)을 수신하는 동작이 수행될 수 있고, 단계 S128에서 기입 데이터(D_WR)를 제1 기입 버퍼(11)에 기입하는 동작이 수행될 수 있다. 그 다음에 단계 S129에서, 제2 기입 버퍼(12)의 히트 여부가 판정될 수 있다. 예를 들면, 컨트롤러(15)는 제2 기입 버퍼(12)에 저장된 제2 데이터(D2), 즉 단계 S125에서 백업된 제2 데이터(D2)의 어드레스에 대응하는 메모리(5)의 영역이 기입 요청(W_REQ)에 포함된 기입 어드레스(A_WR)에 대응하는 메모리(5)의 영역을 포함하는 경우, 제2 기입 버퍼(12)의 히트를 판정할 수 있고, 그렇지 아니한 경우 제2 기입 버퍼(12)의 미스를 판정할 수 있다. 도 12에 도시된 바와 같이, 제2 기입 버퍼(12)의 히트가 판정된 경우 단계 S130이 후속하여 수행될 수 있는 한편, 제2 기입 버퍼(12)의 미스가 판정된 경우 단계 S131이 후속하여 수행될 수 있다.
제2 기입 버퍼(12)의 히트가 판정된 경우, 단계 S130에서 제2 데이터(D2)의 상태(S_D2)를 전부 유효한 상태(EV)로 설정하는 동작이 수행될 수 있다. 예를 들면, 백업 상태(BK)의 제2 데이터(D2)는 메모리(5)에 저장된 데이터와 일치하므로, 컨트롤러(15)는 제2 기입 버퍼(12)가 히트된 경우 제2 데이터(D2)의 상태(S_D2)를 전부 유효한 상태(EV)로 설정할 수 있다. 다른 한편으로, 제2 기입 버퍼(12)의 미스가 판정된 경우, 단계 S131에서 제2 데이터(D2)의 상태(S_D2)를 전부 무효한 상태(EI)로 설정하는 동작이 수행될 수 있다. 예를 들면, 컨트롤러(15)는 제2 기입 버퍼(12)가 미스된 경우 제2 데이터(D2)에 포함된 데이터를 무효화하기 위하여 제2 데이터(D2)의 상태(S_D2)를 전부 무효한 상태(EI)로 설정할 수 있다.
단계 S132에서, 제1 데이터(D1)를 제2 기입 버퍼(12)에 기입하는 동작이 수행될 수 있다. 이에 따라, 도 3 및 도 11을 참조하여 전술된 바와 같이, 단계 S130에 후속하여 단계 S132가 수행되는 경우 제2 데이터(D2)는 전부 유효한 상태(EV)를 유지할 수 있는 한편, 단계 S131에 후속하여 단계 S132가 수행되는 경우 제2 데이터(D2)는 일부 유효한 상태(PV)로 천이될 수 있다.
도 13a 및 도 13b는 본 개시의 예시적 실시예들에 따라 데이터 기입을 위한 장치의 동작의 예시들을 시간의 흐름에 따라 나타내는 블록도들이다. 구체적으로, 도 13a의 블록도는 유휴 모드의 해제 이후 제2 기입 버퍼(12)가 히트되는 경우 데이터 기입을 위한 장치(130a)의 동작의 예시를 나타내고, 도 13b의 블록도는 유휴 모드의 해제 이후 제2 기입 버퍼(12)가 미스되는 경우 데이터 기입을 위한 장치(130b)의 동작의 예시를 나타낸다.
도 13a를 참조하면, 시간 t131에서 유휴 모드로의 진입에 기인하여 제2 기입 버퍼(WB2)에 저장된 제2 데이터(D2)가 메모리(5)에 기입될 수 있다. 이에 따라, 제2 데이터(D2)와 동일한 데이터가 제2 기입 버퍼(WB2) 및 메모리(5)에 모두 저장될 수 있고, 제2 데이터(D2)는 백업 상태(BK)로 설정될 수 있다. 시간 t132에서, 유휴 모두가 해제된 이후 기입 데이터(D_WR)가 수신될 수 있고, 이에 따라 제1 기입 버퍼(WB1)는 기입 데이터(D_WR)와 일치하는 제1 데이터(D1)를 저장할 수 있다. 또한, 기입 데이터(D_WR)와 함께 수신된 기입 어드레스(A_WR)에 의해서 제2 기입 버퍼(WB2)는 히트될 수 있다. 시간 t133에서, 제1 기입 버퍼(WB1)에 저장된 제1 데이터(D1)는 제2 기입 버퍼(WB2)에 기입될 수 있다. 이에 따라, 제2 데이터(D2)는 전부 유효한 상태(EV)로 설정될 수 있고, 메모리(5)는 무효한 데이터를 저장할 수 있다.
도 13b를 참조하면, 시간 t134에서 유휴 모드로의 진입에 기인하여 제2 기입 버퍼(WB2)에 저장된 제2 데이터(D2)가 메모리(5)에 기입될 수 있다. 이에 따라, 제2 데이터(D2)는 백업 상태(BK)로 설정될 수 있다. 시간 t135에서, 유휴 모두가 해제된 이후 기입 데이터(D_WR)가 수신될 수 있고, 이에 따라 제1 기입 버퍼(WB1)는 기입 데이터(D_WR)와 일치하는 제1 데이터(D1)를 저장할 수 있다. 또한, 기입 데이터(D_WR)와 함께 수신된 기입 어드레스(A_WR)에 의해서 제2 기입 버퍼(WB2)는 미스될 수 있고, 이에 따라 제2 데이터(D2)는 전부 무효한 상태(EI)로 설정될 수 있다. 시간 t136에서, 제1 기입 버퍼(WB1)에 저장된 제1 데이터(D1)는 제2 기입 버퍼(WB2)에 기입될 수 있다. 이에 따라, 제2 데이터(D2)는 일부 유효한 상태(PV)일 수 있고, 메모리(5)는 일부 유효한 데이터를 저장할 수 있다.
도 14는 본 개시의 예시적 실시예에 따른 데이터 기입을 위한 방법을 나타내는 순서도이다. 일부 실시예들에서, 도 14의 방법은 도 1의 데이터 기입을 위한 장치(10)에 의해서 수행될 수 있다. 도 14에 도시된 바와 같이, 도 14의 방법은 복수의 단계들(S141 내지 S144)을 포함할 수 있고, 이하에서 도 14는 도 1을 참조하여 설명될 것이다.
단계 S141에서, 기입 요청(W_REQ)을 수신하는 동작이 수행될 수 있다. 도 1을 참조하여 전술된 바와 같이, 기입 요청(W_REQ)은 기입 어드레스(A_WR), 기입 커맨드(C_WR) 및 기입 데이터(D_WR)를 포함할 수 있다.
단계 S142에서, 기입 데이터(D_WR)를 제1 기입 버퍼(11)에 기입하는 동작이 수행될 수 있다. 예를 들면, 컨트롤러(15)는 기입 어드레스(A_WR)에 무관하게 기입 데이터(D_WR)를 제1 기입 버퍼(11)에 기입할 수 있다.
단계 S143에서, 제2 데이터(D2)의 어드레스 및 기입 어드레스(A_WR)에 기초하여 제1 데이터(D1)를 제2 기입 버퍼(12)에 기입하는 동작이 수행될 수 있다. 예를 들면, 컨트롤러(15)는 제2 기입 버퍼(12)에 저장된 제2 데이터(D2)의 어드레스 및 기입 어드레스(A_WR)에 기초하여 제2 기입 버퍼(12)의 히트 여부를 판정할 수 있고, 제2 기입 버퍼(12)의 히트가 판정된 경우 제1 데이터(D1)를 제2 기입 버퍼(12)에 기입할 수 있다.
단계 S144에서, 제2 데이터(D2)의 어드레스 및 기입 어드레스(A_WR)에 기초하여, 제2 데이터(D2)를 메모리(5)에 기입하는 동작이 수행될 수 있다. 예를 들면, 컨트롤러(15)는 제2 기입 버퍼(12)에 저장된 제2 데이터(D2)의 어드레스 및 기입 어드레스(A_WR)에 기초하여 제2 기입 버퍼(12)의 미스 여부를 판정할 수 있고, 제2 기입 버퍼(12)의 미스가 판정된 경우 제2 데이터(D2)를 메모리(5)에 저장된 데이터로 갱신할 수 있고, 갱신된 제2 데이터(D2)를 메모리(5)에 기입한 후 제1 데이터(D1)를 제2 기입 버퍼(12)에 기입할 수 있다.
도 15는 본 개시의 예시적 실시예에 따른 데이터 기입을 위한 장치를 포함하는 시스템(150)을 나타내는 블록도이다. 일부 실시예들에서, 시스템(150)은 반도체 공정에 의해서 제조되는 하나의 칩일 수 있고, SoC(System-on-Chip)로서 지칭될 수도 있다. 일부 실시예들에서, 메모리 서브시스템(154)에 포함된 메모리(154_2)는 내장된(embedded) 메모리로서 지칭될 수 있고, 메모리(154_2)가 MRAM을 포함하는 경우 eMRAM(embedded Magnetic Random Access Memory)으로 지칭될 수도 있다. 도 15에 도시된 바와 같이, 시스템(150)은 프로세서(151), 하드웨어 가속기(152) 및 입출력 서브시스템(153), 메모리 서브시스템(154) 및 버스(155)를 포함할 수 있다. 프로세서(151), 하드웨어 가속기(152) 및 입출력 서브시스템(153) 및 메모리 서브시스템(154)은 버스(155)를 통해서 상호 통신할 수 있다.
프로세서(151)는 명령어(instruction)를 실행할 수 있는 적어도 하나의 코어를 포함할 수 있고, 적어도 하나의 캐시(cache)를 포함할 수 있다. 일부 실시예들에서, 적어도 하나의 코어는 메모리 서브시스템(154)으로부터 획득된 명령어들을 실행할 수도 있고, 메모리 서브시스템(154)에 저장된 데이터를 처리할 수도 있으며, 데이터를 생성하여 메모리 서브시스템(154)에 저장할 수도 있다. 이를 위하여, 프로세서(151)는 버스(155)를 통해서 독출 요청, 기입 요청 등을 메모리 서브시스템(154)에 제공할 수 있다.
하드웨어 가속기(152)는 미리 정의된 기능을 빠른 속도로 수행하도록 설계될 수 있다. 예를 들면, 하드웨어 가속기(152)는 메모리 서브시스템(154)에 저장된 데이터를 인코딩/디코딩할 수 있다. 메모리 서브시스템(154)에 저장된 데이터를 처리하고, 처리된 데이터를 메모리 서브시스템(154)에 저장하기 위하여, 하드웨어 가속기(152)는 버스(155)를 통해서 독출 요청, 기입 요청 등을 메모리 서브시스템(154)에 제공할 수 있다.
입출력 서브시스템(153)은 시스템(150) 외부의 장치와 통신 채널을 형성할 수 있다. 예를 들면, 입출력 서브시스템(153)은 USB(Universal Serial Bus)와 같은 직렬 통신 채널을 형성할 수도 있고, 네트워크에 접속하기 위한 통신 채널을 형성할 수도 있다. 입출력 서브시스템(153)은 메모리 서브시스템(154)에 저장된 데이터를 통신 채널을 통해서 외부로 전송할 수도 있고, 통신 채널을 통해서 수신된 데이터를 메모리 서브시스템(154)에 저장할 수도 있다. 이를 위하여, 입출력 서브시스템(153)은 버스(155)를 통해서 독출 요청, 기입 요청 등을 메모리 서브시스템(154)에 제공할 수 있다.
메모리 서브시스템(154)은, 컨트롤러(CTR), 제1 기입 버퍼(WB1) 및 제2 기입 버퍼(WB2)를 포함하는 데이터 기입을 위한 장치(154_1)를 포함할 수 있고, 메모리(154_2)를 포함할 수 있다. 데이터 기입을 위한 장치(154_1)는 버스(155)의 규격에 따라 기입 요청 및 독출 요청을 수신할 수 있다. 예를 들면, 버스(155)는 AMBA(Advanced Microcontroller Bus Architecture)에 기초할 수 있고, 메모리 서브시스템(154)은 AHB(Advanced High performance Bus)에 따라 버스(155)로부터 기입 요청 및 독출 요청을 수신할 수 있고, 독출 요청에 응답하여 AHB에 따라 독출 데이터를 버스(155)에 전달할 수 있다. 도면들을 참조하여 전술된 바와 같이, 데이터 기입을 위한 장치(154_1)는 메모리 서브시스템(154)에 제공되는 기입 요청을 효율적으로 처리할 수 있고, 결과적으로 시스템(150)의 성능을 향상시킬 수 있다. 또한, 데이터 기입을 위한 장치(154_1)는 메모리(154_2)에 대한 기입 횟수를 감소시킴으로써 시스템(150)의 수명을 연장시킬 수도 있다.
도 16은 본 개시의 예시적 실시예에 따른 데이터 기입을 위한 장치(161_2)를 포함하는 호스트(161) 및 메모리(162)를 나타내는 블록도이다. 도 16에 도시된 바와 같이, 호스트(161)는 프로세서(161_1) 및 데이터 기입을 위한 장치(161_2)를 포함할 수 있다.
데이터 기입을 위한 장치(161_2)는 독립형의(stand-alone) 메모리(162)를 위하여 사용될 수 있다. 예를 들면, 도 16에 도시된 바와 같이, 데이터 기입을 위한 장치(161_2)는 컨트롤러(CTR), 제1 기입 버퍼(WB1) 및 제2 기입 버퍼(WB2)를 포함할 수 있고, 프로세서(161_1)와 함께 호스트(161)에 포함될 수 있다. 데이터 기입을 위한 장치(161_2)는 프로세서(161_1)의 기입 요청에 응답하여, 도면들을 참조하여 전술된 바와 같이 효율적으로 메모리(162)에 기입 데이터를 기입할 수 있다.
도 17은 본 개시의 예시적 실시예에 따른 데이터 기입을 위한 장치를 포함하는 디스플레이 시스템(170)을 나타내는 블록도이다. 도 17에 도시된 바와 같이, 디스플레이 시스템(170)은 호스트(171), 디스플레이 드라이버(172) 및 디스플레이 패널(173)을 포함할 수 있다. 도면들을 참조하여 전술된 데이터 기입을 위한 장치는 디스플레이 드라이버(172)에 포함될 수 있다. 디스플레이 시스템(170)은, 비제한적인 예시로서, 휴대용 전화(mobile phone), 스마트폰(smartphone), 태블릿 PC(tablet personal computer) 등과 같은 휴대용 기기일 수도 있고, TV, 모니터 등과 같은 고정형 기기일 수도 있다.
호스트(171)는 디스플레이 패널(173)을 통해서 출력되는 이미지에 대한 정보를 포함하는 이미지 데이터(IMG)를 디스플레이 드라이버(172)에 제공할 수 있다. 디스플레이 드라이버(172)는 이미지 데이터(IMG)에 기초하여 디스플레이 패널(173)을 구동하기 위한 구동 신호(DRV)를 디스플레이 패널(173)에 제공할 수 있고, DDI(Display Driver IC)로서 지칭될 수 있다. 디스플레이 패널(173)은 구동 신호(DRV)에 따라 이미지를 출력할 수 있다.
디스플레이 드라이버(172)는, 도 17에 도시된 바와 같이, 프레임 메모리(172_1) 및 심볼 메모리(172_2)를 포함할 수 있다. 프레임 메모리(172_1)는 이미지 데이터(IMG)를 저장할 수 있고, GRAM(Graphic Random Access Memory)로서 지칭될 수도 있다. 정지된 이미지가 디스플레이 패널(173)을 통해서 출력되는 동안, 프레임 메모리(172_1)에 저장된 데이터는 호스트(171)로부터 수신되는 이미지 데이터(IMG)에 의해서 갱신되지 아니할 수 있고, 디스플레이 패널(173)은 프레임 메모리(172_1)에 저장된 데이터에 대응하는 이미지를 출력할 수 있다. 심볼 메모리(172_2)는 미리 정의된 이미지, 즉 심볼 이미지에 대응하는 데이터를 저장할 수 있다. 예를 들면, 심볼 메모리(172_2)는 특정 이미지, 글자, 숫자, 부호 등에 대응하는 데이터를 저장할 수 있다. 호스트(171)는 디스플레이 패널(173)이 심볼 이미지를 출력하도록 디스플레이 드라이버(172)를 제어할 수 있고, 디스플레이 패널(173)은 심볼 메모리(172_2)에 저장된 데이터에 대응하는 심볼 이미지를 출력할 수 있다. 일부 실시예들에서, 호스트(171)는 심볼 메모리(172_2)에 저장된 데이터를 변경함으로써 심볼 이미지를 변경할 수도 있다.
도면들을 참조하여 전술된 데이터 기입을 위한 장치는 프레임 메모리(172_1) 및/또는 심볼 메모리(172_2)에 포함될 수 있다. 예를 들면, 심볼 메모리(172_2)는 심볼 이미지의 출력을 위하여 저장된 데이터의 독출이 빈번하게 발생할 수 있는 반면, 호스트(171)에 의한 데이터의 기입은 빈번하게 발생하지 아니할 수 있다. 이에 따라 심볼 메모리(172_2)는 기입 횟수에 민감한 수명을 가지는 비휘발성 메모리를 포함할 수 있고, 데이터 기입을 위한 장치는 비휘발성 메모리와 함께 심볼 메모리(172_2)에 포함될 수 있다. 이에 따라 심볼 이미지에 대응하는 데이터는 심볼 메모리(172_2)에 효율적으로 기입될 수 있고, 디스플레이 시스템(170)에 공급되는 전원이 차단되어도 소실되지 아니할 수 있으며, 심볼 메모리(172_2)의 수명 및 디스플레이 드라이버(172)의 수명이 연장될 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (20)

  1. 메모리에 대한 데이터 기입을 위한 장치로서,
    기입 요청에 포함된 기입 데이터의 폭과 일치하는 제1 데이터 폭을 가지고, 상기 기입 데이터를 저장하도록 구성된 제1 기입 버퍼;
    상기 메모리의 데이터 폭과 일치하고 상기 제1 데이터 폭보다 큰 제2 데이터 폭을 가지는 제2 기입 버퍼; 및
    상기 기입 요청에 포함된 기입 어드레스 및 상기 제2 기입 버퍼에 저장된 제2 데이터의 어드레스에 기초하여, 상기 제1 기입 버퍼에 저장된 제1 데이터를 상기 제2 기입 버퍼에 기입하고 상기 제2 기입 버퍼에 저장된 제2 데이터를 상기 메모리에 기입하도록 구성된 컨트롤러를 포함하는 장치.
  2. 청구항 1에 있어서,
    상기 컨트롤러는, 상기 기입 어드레스에 대응하는 상기 메모리의 영역이 상기 제2 데이터의 어드레스에 대응하는 상기 메모리의 영역에 포함되는 경우, 상기 제1 데이터를 상기 제2 기입 버퍼에 기입하도록 구성된 것을 특징으로 하는 장치.
  3. 청구항 1에 있어서,
    상기 컨트롤러는, 상기 기입 어드레스에 대응하는 상기 메모리의 영역이 상기 제2 데이터의 어드레스에 대응하는 상기 메모리의 영역에 포함되지 아니하고 상기 제2 데이터가 상기 제1 데이터에 의해서 모두 갱신된 경우, 상기 제2 데이터를 상기 메모리에 기입하도록 구성된 것을 특징으로 하는 장치.
  4. 청구항 1에 있어서,
    상기 컨트롤러는, 상기 기입 어드레스에 대응하는 상기 메모리의 영역이 사익 제2 데이터의 어드레스에 대응하는 상기 메모리의 영역에 포함되지 아니하고 상기 제2 데이터가 상기 제1 데이터에 의해서 갱신되지 아니한 부분을 포함하는 경우, 갱신되지 아니한 상기 부분을 상기 메모리로부터 독출함으로써 상기 제2 데이터를 갱신하고 갱신된 상기 제2 데이터를 상기 메모리에 기입하도록 구성된 것을 특징으로 하는 장치.
  5. 청구항 1에 있어서,
    상기 컨트롤러는, 상기 컨트롤러의 외부로부터 액세스 가능하고 상기 컨트롤러의 동작을 설정하는 설정 정보를 저장하도록 구성된 특수 기능 레지스터(Special Function Register; SFR)를 포함하는 것을 특징으로 하는 장치.
  6. 청구항 5에 있어서,
    상기 컨트롤러는, 상기 설정 정보에 기초하여 상기 제2 데이터의 기입을 반복하도록 구성된 것을 특징으로 하는 장치.
  7. 청구항 5에 있어서,
    상기 제1 기입 버퍼 및 상기 제2 기입 버퍼 각각은 재구성가능하고,
    상기 컨트롤러는, 상기 설정 정보에 기초하여 상기 제1 기입 버퍼의 제1 데이터 제1 깊이 및 상기 제2 기입 버퍼의 제2 데이터 제2 깊이를 설정하도록 구성된 것을 특징으로 하는 장치.
  8. 청구항 1에 있어서,
    상기 제1 데이터 폭의 독출 데이터를 출력하도록 구성되고, 상기 제2 데이터 폭을 가지는 독출 버퍼를 더 포함하고,
    상기 컨트롤러는, 독출 요청에 포함된 독출 커맨드에 응답하여 상기 메모리로부터 제3 데이터를 독출하여 상기 독출 버퍼에 기입하도록 구성되고, 상기 독출 요청에 포함된 독출 어드레스에 기초하여 상기 제3 데이터에서 상기 독출 데이터를 선택하도록 구성된 것을 특징으로 하는 장치.
  9. 청구항 8에 있어서,
    상기 컨트롤러는, 상기 기입 어드레스에 대응하는 상기 메모리의 영역이 상기 제3 데이터의 어드레스에 대응하는 메모리의 영역에 포함되는 경우, 상기 제1 데이터를 상기 제2 기입 버퍼 대신 상기 독출 버퍼에 기입하도록 구성된 것을 특징으로 하는 장치.
  10. 청구항 9에 있어서,
    상기 컨트롤러는, 상기 제1 데이터에 의해서 갱신된 상기 제3 데이터를 상기 제2 기입 버퍼에 기입하도록 구성된 것을 특징으로 하는 장치.
  11. 청구항 1에 있어서,
    상기 컨트롤러는, 유휴 모드에서 상기 제2 데이터를 상기 메모리에 기입하도록 구성된 것을 특징으로 하는 장치.
  12. 청구항 11에 있어서,
    상기 컨트롤러는, 상기 유휴 모드의 해제 이후 수신되는 기입 어드레스에 대응하는 상기 메모리의 영역이 상기 제2 데이터의 어드레스에 대응하는 상기 메모리의 영역에 포함되는 경우, 상기 제1 데이터를 상기 제2 기입 버퍼에 기입하고 상기 제2 기입 버퍼에 저장된 제2 데이터가 모두 갱신된 상태로 판정하도록 구성된 것을 특징으로 하는 장치.
  13. 청구항 11에 있어서,
    상기 컨트롤러는, 상기 유휴 모드의 해제 이후 수신되는 기입 어드레스에 대응하는 상기 메모리의 영역이 상기 제2 데이터의 어드레스에 대응하는 상기 메모리의 영역에 포함되지 아니하는 경우, 상기 제1 데이터를 상기 제2 기입 버퍼에 기입하고 상기 제2 기입 버퍼에 저장된 제2 데이터 중 상기 제1 데이터에 대응하는 부분만을 갱신된 상태로 판정하도록 구성된 것을 특징으로 하는 장치.
  14. 청구항 1에 있어서,
    상기 장치는, 시스템 버스 및 상기 시스템 버스에 접속된 프로세서와 집적 회로에 내장되고, 상기 버스로부터 상기 기입 요청을 수신하도록 구성되고,
    상기 제1 데이터 폭은, 상기 시스템 버스가 지원하는 데이터 폭과 일치하는 것을 특징으로 하는 장치.
  15. 청구항 1에 있어서,
    상기 메모리는, 상변화(phase change) 메모리, PCMS(Phase Change Memory and Switch), RRAM(Resistive Random Access Memory), 강유전체(ferroelectric) 메모리, STT-RAM(Spin-Transfer Torque Random Access Memory), STRAM(Spin Tunneling Random Access Memory), 자기저항성(magnetoresistive) 메모리, 자기(magnetic) 메모리, MRAM(Magnetic Random Access Memory) 및 SONOS(Semiconductor-Oxide-Nitride-Oxide-Semiconductor) 메모리 중 적어도 하나를 포함하는 것을 특징으로 하는 장치.
  16. 메모리에 대한 데이터 기입을 위한 장치로서,
    기입 요청에 포함된 기입 데이터의 폭과 일치하는 제1 데이터 폭을 가지고, 상기 기입 데이터를 저장하도록 구성된 제1 기입 버퍼;
    상기 메모리의 데이터 폭과 일치하고 상기 제1 데이터 폭보다 큰 제2 데이터 폭을 가지는 제2 기입 버퍼; 및
    상기 기입 요청에 포함된 기입 어드레스에 대응하는 상기 메모리의 영역이 상기 제2 기입 버퍼에 저장된 제2 데이터의 어드레스에 대응하는 상기 메모리의 영역에 포함되는 제2 기입 버퍼의 히트(hit) 발생시 상기 제1 기입 버퍼에 저장된 제1 데이터로 상기 제2 데이터의 적어도 일부를 갱신하고, 상기 기입 어드레스에 대응하는 상기 메모리의 영역이 상기 제2 기입 버퍼에 저장된 제2 데이터의 어드레스에 대응하는 상기 메모리의 영역에 포함되지 아니하는 상기 제2 기입 버퍼의 미스(miss) 발생시 상기 제2 데이터의 갱신 상태에 기초하여 상기 제2 데이터를 상기 메모리에 기입하도록 구성된 컨트롤러를 포함하는 장치.
  17. 청구항 16에 있어서,
    상기 컨트롤러는,
    상기 제2 데이터가 전부 갱신되지 아니한 전부 무효한(entirely invalid) 상태;
    상기 제2 데이터의 일부가 갱신되지 아니한 일부 유효한(partially valid) 상태; 및
    상기 제2 데이터의 전부가 갱신된 전부 유효한(entirely valid) 상태 중 하나로서 상기 제2 데이터의 갱신 상태를 설정하도록 구성된 것을 특징으로 하는 장치.
  18. 청구항 17에 있어서,
    상기 컨트롤러는, 유휴 모드 진입시, 상기 제2 데이터를 상기 전부 유효한 상태로 전환한 후 상기 제2 데이터를 상기 메모리에 기입함으로써, 상기 제2 데이터를 백업 상태로 설정하도록 구성된 것을 특징으로 하는 장치.
  19. 청구항 17에 있어서,
    상기 제1 데이터 폭의 독출 데이터를 출력하도록 구성되고, 상기 제2 데이터 폭을 가지는 독출 버퍼를 더 포함하고,
    상기 컨트롤러는, 독출 요청에 포함된 독출 커맨드에 응답하여 상기 메모리로부터 제3 데이터를 독출하여 상기 독출 버퍼에 기입하도록 구성되고, 상기 기입 어드레스에 대응하는 상기 메모리의 영역이 상기 제3 데이터의 어드레스에 대응하는 상기 메모리의 영역에 포함되는 경우 상기 제1 데이터를 상기 제2 기입 버퍼 대신 상기 독출 버퍼에 기입하도록 구성된 것을 특징으로 하는 장치.
  20. 메모리에 대한 데이터 기입을 위한 방법으로서,
    기입 커맨드, 기입 데이터 및 기입 어드레스를 포함하는 기입 요청을 수신하는 단계;
    상기 기입 커맨드에 응답하여, 상기 기입 데이터의 폭과 일치하는 제1 데이터 폭을 가지는 제1 기입 버퍼에 상기 기입 데이터를 기입하는 단계;
    상기 메모리의 데이터 폭과 일치하고 상기 제1 데이터 폭보다 큰 제2 데이터 폭을 가지는 제2 기입 버퍼에 상기 제1 기입 버퍼에 저장된 제1 데이터를, 상기 기입 어드레스 및 상기 제2 기입 버퍼에 저장된 제2 데이터의 어드레스에 기초하여, 기입하는 단계; 및
    상기 기입 어드레스 및 상기 제2 기입 버퍼에 저장된 제2 데이터의 어드레스에 기초하여, 상기 메모리에 상기 제2 데이터를 기입하는 단계를 포함하는 방법.
KR1020190156121A 2019-11-28 2019-11-28 메모리에 데이터를 기입하기 위한 장치 및 방법 KR20210066631A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020190156121A KR20210066631A (ko) 2019-11-28 2019-11-28 메모리에 데이터를 기입하기 위한 장치 및 방법
US16/913,707 US11698852B2 (en) 2019-11-28 2020-06-26 Apparatus and method for writing data in a memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190156121A KR20210066631A (ko) 2019-11-28 2019-11-28 메모리에 데이터를 기입하기 위한 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20210066631A true KR20210066631A (ko) 2021-06-07

Family

ID=76091473

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190156121A KR20210066631A (ko) 2019-11-28 2019-11-28 메모리에 데이터를 기입하기 위한 장치 및 방법

Country Status (2)

Country Link
US (1) US11698852B2 (ko)
KR (1) KR20210066631A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230006143A (ko) * 2021-07-02 2023-01-10 고려대학교 산학협력단 다차원 데이터베이스를 위한 스토리지내 데이터 재구성 가속기

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5359723A (en) 1991-12-16 1994-10-25 Intel Corporation Cache memory hierarchy having a large write through first level that allocates for CPU read misses only and a small write back second level that allocates for CPU write misses only
US5469555A (en) 1991-12-19 1995-11-21 Opti, Inc. Adaptive write-back method and apparatus wherein the cache system operates in a combination of write-back and write-through modes for a cache-based microprocessor system
JPH0635787A (ja) 1992-07-15 1994-02-10 Hitachi Ltd ライトバッファ制御方式
JPH06348592A (ja) 1993-06-10 1994-12-22 Hitachi Ltd ライトバッファ制御方式
US7233880B2 (en) 2003-09-11 2007-06-19 Intel Corporation Adaptive cache algorithm for temperature sensitive memory
US7173863B2 (en) 2004-03-08 2007-02-06 Sandisk Corporation Flash controller cache architecture
US7231497B2 (en) 2004-06-15 2007-06-12 Intel Corporation Merging write-back and write-through cache policies
WO2006134550A2 (en) 2005-06-13 2006-12-21 Nxp B.V. Memory controller
JP2008129771A (ja) 2006-11-20 2008-06-05 Konica Minolta Business Technologies Inc メモリシステムおよび情報処理装置
US20120284459A1 (en) 2011-05-05 2012-11-08 International Business Machines Corporation Write-through-and-back cache
JP2013065150A (ja) 2011-09-16 2013-04-11 Toshiba Corp キャッシュメモリ装置、プロセッサ、および情報処理装置
KR20130040486A (ko) * 2011-10-14 2013-04-24 삼성전자주식회사 저장 장치 및 그것을 이용하는 사용자 장치
KR101818176B1 (ko) * 2011-12-12 2018-01-15 삼성전자주식회사 메모리 시스템 및 그것의 동작 방법
US10025711B2 (en) 2012-01-16 2018-07-17 Qualcomm Incorporated Hybrid write-through/write-back cache policy managers, and related systems and methods
US9128822B2 (en) * 2012-06-22 2015-09-08 Winbond Electronics Corporation On-chip bad block management for NAND flash memory
WO2014068694A1 (ja) * 2012-10-31 2014-05-08 ルネサスエレクトロニクス株式会社 半導体装置及びキャッシュメモリへのデータ先読み方法
JP5853973B2 (ja) * 2013-03-07 2016-02-09 ソニー株式会社 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法
JP6275427B2 (ja) 2013-09-06 2018-02-07 株式会社東芝 メモリ制御回路およびキャッシュメモリ
US10031869B1 (en) 2014-03-28 2018-07-24 Adesto Technologies Corporation Cached memory structure and operation
KR101555194B1 (ko) 2014-05-26 2015-09-25 성재용 병합 의도 로그를 이용한 디스크 어레이의 패리티 재동기화 장치 및 이의 패리티 재동기화 방법
GB2526849B (en) 2014-06-05 2021-04-14 Advanced Risc Mach Ltd Dynamic cache allocation policy adaptation in a data processing apparatus
US9971647B2 (en) * 2014-07-31 2018-05-15 Winbond Electronics Corporation Apparatus and method for programming ECC-enabled NAND flash memory
US9916105B1 (en) * 2015-11-05 2018-03-13 Crossbar, Inc. Page management for data operations utilizing a memory device
JP2018156463A (ja) 2017-03-17 2018-10-04 東芝メモリ株式会社 メモリシステム
US10541009B2 (en) * 2017-12-28 2020-01-21 Intel Corporation Write data mask for power reduction
KR101977866B1 (ko) 2018-04-16 2019-05-13 단국대학교 산학협력단 병렬 tlc stt mram 기반 대용량 llc 및 이의 동작 제어 방법
KR20200034312A (ko) * 2018-09-21 2020-03-31 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
KR20210057355A (ko) * 2019-11-12 2021-05-21 에스케이하이닉스 주식회사 메모리 장치, 메모리 컨트롤러, 메모리 시스템 및 그 동작 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230006143A (ko) * 2021-07-02 2023-01-10 고려대학교 산학협력단 다차원 데이터베이스를 위한 스토리지내 데이터 재구성 가속기

Also Published As

Publication number Publication date
US11698852B2 (en) 2023-07-11
US20210165733A1 (en) 2021-06-03

Similar Documents

Publication Publication Date Title
US10055353B2 (en) Apparatus, method and system that stores bios in non-volatile random access memory
US10991446B2 (en) Electronic device performing training on memory device by rank unit and training method thereof
US9582216B2 (en) Method and device to distribute code and data stores between volatile memory and non-volatile memory
US7302517B2 (en) Apparatus and method for controlling execute-in-place (XIP) in serial flash memory, and flash memory chip using the same
KR101673280B1 (ko) 영구 저장소로의 라이트백을 요구하는 비 트랜잭션 코드 영역의 시작과 끝을 마킹하는 명령어들
JP5282187B2 (ja) 大容量記憶装置を接続するための階層型メモリアーキテクチャ
JP4628750B2 (ja) バッファメモリを内蔵したフラッシュメモリ装置及びフラッシュメモリシステム
US20060245274A1 (en) Apparatus and method for controlling NAND flash memory
US20120151127A1 (en) Method of storing data in a storing device including a volatile memory device
US20160085680A1 (en) Mobile Memory Cache Read Optimization
JP2008152464A (ja) 記憶装置
US9202548B2 (en) Efficient PCMS refresh mechanism
US20170109043A1 (en) Memory system
KR20210066631A (ko) 메모리에 데이터를 기입하기 위한 장치 및 방법
US20100250798A1 (en) Hierarchical memory architecture with an interface to differing memory formats
US8521952B2 (en) Hierarchical memory architecture with a phase-change memory (PCM) content addressable memory (CAM)
KR102353859B1 (ko) 컴퓨팅 장치 및 비휘발성 듀얼 인라인 메모리 모듈
US8578095B2 (en) Hierarchical memory architecture using a concentrator device

Legal Events

Date Code Title Description
A201 Request for examination