KR20200109973A - 메모리 공유를 위한 메모리 시스템 및 그것을 포함하는 데이터 처리 시스템 - Google Patents

메모리 공유를 위한 메모리 시스템 및 그것을 포함하는 데이터 처리 시스템 Download PDF

Info

Publication number
KR20200109973A
KR20200109973A KR1020190029885A KR20190029885A KR20200109973A KR 20200109973 A KR20200109973 A KR 20200109973A KR 1020190029885 A KR1020190029885 A KR 1020190029885A KR 20190029885 A KR20190029885 A KR 20190029885A KR 20200109973 A KR20200109973 A KR 20200109973A
Authority
KR
South Korea
Prior art keywords
memory
data
address
bit
processor
Prior art date
Application number
KR1020190029885A
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 KR1020190029885A priority Critical patent/KR20200109973A/ko
Priority to US16/718,558 priority patent/US11314650B2/en
Priority to CN202010079702.9A priority patent/CN111694512B/zh
Publication of KR20200109973A publication Critical patent/KR20200109973A/ko

Links

Images

Classifications

    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • 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/542Event management; Broadcasting; Multicasting; Notifications
    • 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
    • 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/546Message passing systems or structures, e.g. queues
    • 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/7209Validity control, e.g. using flags, time stamps or sequence numbers

Landscapes

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

Abstract

본 기술은 데이터 처리 시스템에 관한 것으로서, 호스트 프로세서, 호스트 프로세서에 의해 지시된 작업을 처리하는 프로세서, 호스트 프로세서 및 프로세서에 의해 공유되어 각각에 의해 처리된 데이터를 저장하는 메모리, 및 메모리에 저장된 데이터의 재사용 여부를 확인하고, 확인된 결과를 바탕으로 저장된 데이터를 제1 및 제2 데이터로 구분해서 관리하는 메모리 컨트롤러를 제공한다.

Description

메모리 공유를 위한 메모리 시스템 및 그것을 포함하는 데이터 처리 시스템{memory system for memory sharing and data processing system including the same}
본 발명은 메모리 시스템에 관한 것으로, 더욱 상세하게는 메모리를 공유해서 사용하는 메모리 시스템 및 그것을 포함하는 데이터 처리 시스템에 관한 것이다.
메모리 시스템은 데이터를 처리할 수 있는 데이터 처리 시스템에 적용되어 주 기억 장치 또는 보조 기억 장치로 사용된다, 이러한 데이터 처리 시스템은, 예를 들면, 휴대폰, MP3 플레이어, 디지털 카메라, 랩탑 컴퓨터 등과 같은 휴대용 전자 장치들, 또는 데스크탑 컴퓨터, 게임 콘솔, TV, 프로젝터 등과 같은 전자 장치들을 포함한다.
메모리 시스템은 데이터 처리 시스템에서 처리되는 데이터를 저장하도록 구성된다. 메모리 시스템은 데이터 처리 시스템에 내장되어 동작하거나, 분리 가능한 형태로 제작되어 데이터 처리 시스템에 연결됨으로써 동작할 수 있다. 즉, 메모리 시스템은 데이터 처리 시스템과 연결되는 인터페이스 프로토콜에 따라, 다양한 종류의 저장 장치들 중 하나를 포함할 수 있다. 예를 들면, 메모리 시스템은 MMC(Multi Media Card), eMMC(embedded MMC), RS_MMC(Reduced Size MMC), micro-MMC 형태의 멀티 미디어 카드, SD(Secure Digital), mini-SD, micro-SD 형태의 시큐어 디지털 카드, CF(Compact Flash) 카드, 스마트 미디어(smart media) 카드, 메모리 스틱(memory stick), USB(Universal Strobe Bus) 저장 장치, UFS(Universal Flash Storage), 또는 SSD(Solid State Drive) 등으로 구성될 수 있다.
본 발명은 메모리에 저장된 데이터의 접근 패턴에 따라 데이터를 구분해서, 메모리를 공유할 수 있는 메모리 시스템을 제공하고자 한다.
본 발명의 일 실시예에 따른 데이터 처리 시스템은, 호스트 프로세서; 상기 호스트 프로세서에 의해 지시된 작업을 처리하는 프로세서; 상기 호스트 프로세서 및 상기 프로세서에 의해 공유되어 각각에 의해 처리된 데이터를 저장하는 메모리; 및 상기 메모리에 저장된 데이터의 재사용 여부를 확인하고, 확인된 결과를 바탕으로 상기 저장된 데이터를 제1 및 제2 데이터로 구분해서 관리하는 메모리 컨트롤러를 포함할 수 있다.
본 발명의 일 실시예에 따른 메모리 시스템의 동작방법은, 입력 어드레스를 제1 어드레스로 저장하는 단계; 상기 입력 어드레스를 상기 제1 어드레스와 비교하고, 비교 결과에 따라 플래그 신호를 생성하는 단계; 및 상기 플래그 신호에 응답해, 상기 입력 어드레스를 제2 어드레스로 저장하고 유효 비트 및 더티 비트를 할당하는 단계를 포함할 수 있다.
본 기술은 메모리에 저장된 데이터의 접근 패턴에 따라 캐시 데이터로 구분하여 관리할 수 있다. 즉, 메모리에 저장된 데이터 중에 재사용되는 데이터를 캐시 데이터로 구분하고, 나머지 데이터와 다른 방식으로 관리할 수 있다. 따라서, 메모리를 캐시 메모리 또는 버퍼 메모리로 공유하여 사용할 수 있어, 멀티 프로세서를 포함하는 데이터 처리 시스템에서, 면적 증가나 성능 저하 없이 캐시 메모리의 용량을 증가시킬 수 있다.
도 1은 본 발명의 일실시예에 따른 데이터 처리 시스템을 나타내는 블록도.
도 2는 도 1에 도시된 메모리 컨트롤러의 일실시예 블록도.
도 3은 도 2에 도시된 제2 저장부의 일실시예 구성도.
도 4는 본 발명의 일실시예에 따른 메모리 시스템의 동작을 나타내는 도면.
이하, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 가장 바람직한 실시예를 첨부 도면을 참조하여 설명하기로 한다. 그러나, 본 발명은 이하에서 개시되는 실시예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구성될 수 있으며, 단지 본 실시예는 본 발명의 개시가 완전하도록 하며 통상의 지식을 가진자에게 본 발명의 범주를 완전하게 알려주기 위해 제공되는 것이다. 하기의 설명에서는 본 발명에 따른 동작을 이해하는데 필요한 부분만이 설명되며 그 이외 부분의 설명은 본 발명의 요지를 흩뜨리지 않도록 생략될 것이라는 것을 유의하여야 한다.
도 1은 본 발명의 일실시예에 따른 데이터 처리 시스템(100)을 나타내는 블록도이다.
도 1을 참조하면, 데이터 처리 시스템(100)은 호스트 프로세서(110), 프로세서(120), 캐시 메모리(130), 및 메모리 시스템(140)을 포함할 수 있다. 또한, 본 발명의 실시예에 따라, 메모리 시스템(140)은 메모리 컨트롤러(150), 공유 메모리(160), 및 메모리 장치(170)를 포함할 수 있다.
호스트 프로세서(110)는 데이터 처리 시스템(100)을 전반적으로 제어할 수 있다. 호스트 프로세서(110)는 메모리 컨트롤러(150)를 통해 메모리 장치(170)에 액세스함으로써 작업을 처리할 수 있다. 즉, 호스트 프로세서(110)는 메모리 컨트롤러(150)에 리퀘스트(request)를 보내 메모리 장치(170)의 리드(read) 및 라이트(write) 동작, 등을 요청할 수 있다. 예를 들어, 호스트 프로세서(110)는 컴퓨터 내에 명령어를 실행하고 처리하는 중앙 처리 장치(central processing unit, CPU)를 포함할 수 있다.
프로세서(120)는 호스트 프로세서(110)에 의해 지시된 작업을 처리할 수 있다. 프로세서(120)는 호스트 프로세서(110)에 의해 수행되는 작업의 일부를 처리하여 호스트 프로세서(110)의 효율성을 증가시킬 수 있다. 예를 들어, 프로세서(120)는 컴퓨터 내에 그래픽 연산을 수행하는 그래픽 처리 장치(graphic processing unit, GPU)를 포함할 수 있다. 하지만, 본 발명이 이에 한정되는 것은 아니며, 호스트 프로세서(110) 및 프로세서(120)는 마이크로 프로세서(microprocessor), 애플리케이션 프로세서(application processor), 가속 처리 장치(accelerated processing unit), 및 운영 체제, 등을 포함할 수 있다.
캐시 메모리(130)는 호스트 프로세서(110)에 의해 자주 사용되는 데이터를 저장할 수 있다. 이를 위해, 캐시 메모리(130)는 빠른 데이터 처리 속도를 갖는 메모리를 포함할 수 있다. 예를 들어, 캐시 메모리(130)는 SRAM(static random access memory)를 포함할 수 있다.
또한, 도 1에 도시되지는 않았지만, 데이터 처리 시스템(100)은 프로세서(120)를 위한 전용 메모리를 더 포함하여, 프로세서(120)에 의해 처리된 데이터를 저장할 수 있다. 예를 들어, 데이터 처리 시스템(100)은 그래픽 처리 장치(GPU)를 위한 프레임 버퍼(frame buffer) 메모리로써 SRAM을 포함할 수 있다.
이 같은 SRAM은 데이터 처리 속도가 빠른 장점이 있지만, 그 용량이 수 메가 바이트(MB)에 불가하다. 따라서, 데이터 처리 시스템(100)의 데이터 처리 용량이 증가함에 따라, 캐시 메모리 및 프레임 버퍼 메모리 역시 더 큰 용량이 요구되지만, SRAM의 용량을 증가시키기 위한 비용이나 용량에 따라 차지하는 면적에 있어 한계가 발생할 수 있다.
따라서, 호스트 프로세서(110) 및 프로세서(120)는 메모리 컨트롤러(150)를 통해 공유 메모리(160)를 공유할 수 있다. 공유 메모리(160)는 호스트 프로세서(110)의 캐시 메모리 및 프로세서(120)의 프레임 버퍼 메모리로 동작하여, 각각에 의해 처리된 데이터를 저장할 수 있다. 공유 메모리(160)는 SRAM 보다 상대적으로 큰 용량을 갖는 DRAM(dynamic random access memory)을 포함할 수 있다. 예를 들어, 공유 메모리(160)는 1~2 기가 바이트(GB)의 용량을 갖는 로우-파워 메모리를 포함할 수 있다. 메모리 컨트롤러(150) 및 공유 메모리(160)의 동작에 대해서는 도 2에서 보다 더 구체적으로 설명하고자 한다.
메모리 장치(170)는 메모리 컨트롤러(150)의 제어에 따라 리드 및 라이트 동작, 등을 수행할 수 있다. 메모리 장치(170)는 메모리 컨트롤러(150)로부터 커맨드와 어드레스를 수신하고, 메모리 컨트롤러(150)와 데이터를 송수신할 수 있다. 메모리 장치(170)는 DRAM, NAND Flash, RRAM(resistive random access memory). PCRAM(phase-change random access memory), MRAM(magnetic random access memory), FRAM9ferroelectric random access memory), 등 여러 종류의 메모리 중 하나일 수 있다.
도 2는 도 1에 도시된 메모리 컨트롤러(150)의 일실시예 블록도이다.
도 2를 참조하면, 메모리 컨트롤러(150)는 제1 저장부(210), 제2 저장부(220), 비교부(230), 카운팅부(240), 및 리셋부(250)를 포함할 수 있다.
앞서 설명한 바와 같이, 호스트 프로세서(110) 및 프로세서(120)는 메모리 컨트롤러(150)를 통해 공유 메모리(160)를 공유할 수 있다. 즉, 메모리 컨트롤러(150)는 호스트 프로세서(110) 및 프로세서(120)의 요청에 따라, 리드 및 라이트 동작을 수행하여 데이터를 공유 메모리(160)에 저장할 수 있다. 이때, 메모리 컨트롤러(150)는 공유 메모리(160)에 저장된 데이터의 재사용 여부에 따라, 저장된 데이터를 제1 데이터, 예를 들면, 캐시 데이터로 관리하거나, 또는 제2 데이터, 예를 들면, 버퍼 데이터로 관리할 수 있다.
호스트 프로세서(110)에 의해 요청된 데이터는 주로 캐시 데이터를 포함할 수 있다. 예를 들어, CPU에 의해 수행된 작업에 따라 생성되는 데이터는 재사용될 확률이 높을 수 있다. 메모리 컨트롤러(150)는 이러한 데이터를 캐시 데이터로 관리하고, 공유 메모리(160)는 호스트 프로세서(110)의 라스트-레벨 캐시 메모리로 동작할 수 있다. 반면, 프로세서(120)에 의해 요청된 데이터는 주로 버퍼 데이터를 포함할 수 있다. 예를 들어, GPU에 의해 수행된 그래픽 연산에 따라 생성되는 데이터는 재사용될 확률이 낮을 수 있다. 메모리 컨트롤러(150)는 이러한 데이터를 버퍼 데이터로 관리하고, 공유 메모리(160)는 프로세서(130)의 버퍼 메모리로 동작할 수 있다. 하지만, 본 발명이 이에 한정되는 것은 아니다.
제1 저장부(210)는 호스트 프로세서(110) 및 프로세서(120)에 의해 요청되는 입력 어드레스(ADDI)를 제1 어드레스(ADD1)로 저장할 수 있다. 제1 저장부(210)는 저장된 제1 어드레스(ADD1)를 비교부(230)로 제공할 수 있다. 리셋부(250)에 의해 생성된 리셋 신호(RS)에 응답해, 제1 저장부(210)는 리셋되어 저장된 제1 어드레스(ADD1)를 삭제할 수 있다.
비교부(230)는 입력 어드레스(ADDI)를 제1 어드레스(ADD1)와 비교할 수 있다. 비교 결과 입력 어드레스(ADDI)가 제1 어드레스(ADD1)와 일치하면, 비교부(230)는 플래그 신호(FLAG)를 생성할 수 있다. 본 발명의 또 다른 실시예에 따라, 비교 결과 입력 어드레스(ADDI)가 제1 어드레스(ADD1)와 일치하면, 비교부(230)는 플래그 비트를 증가시킬 수 있다. 플래그 비트가 임계 비트 이상 증가될 때, 비교부(230)가 플래그 신호(FLAG)를 생성할 수 있다.
즉, 일정 기간 동안에 입력 어드레스(ADDI)가 한번이라도 재입력되면, 비교부(230)는 플래그 신호(FLAG)를 생성할 수 있다. 또는, 일정 기간 동안에 입력 어드레스(ADDI)가 임계 횟수 이상 재입력될 때, 비교부(230)가 플래그 신호(FLAG)를 생성할 수 있다. 입력 어드레스(ADDI)는 공유 메모리(160)에 저장된 데이터에 대응할 수 있다. 결국, 본 발명의 실시예에 따라, 일정 기간 내에 공유 메모리(160)에 저장된 데이터가 한번이라도 재사용되거나, 또는, 임계 횟수 이상 재사용될 때, 메모리 컨트롤러(150)는 해당 데이터를 캐시 데이터로 구분해서 관리할 수 있다. 이는 회로 설계에 따라 달라질 수 있으며, 본 발명이 이에 한정되는 것은 아니다.
플래그 신호(FLAG)에 응답해, 제2 저장부(220)는 입력 어드레스(ADDI)를 제2 어드레스(ADD2)로 저장할 수 있다. 메모리 컨트롤러(150)는 제2 저장부(220)에 저장된 제2 어드레스(ADD2)에 해당하는 공유 메모리(150)의 데이터를 캐시 데이터로 관리할 수 있다. 따라서, 제2 저장부(220)에 제2 어드레스(ADD2) 각각에 대응하여 유효 비트 및 더티 비트가 할당될 수 있다. 제2 저장부(220)의 구성에 대해서는 도 3에서 보다 더 구체적으로 설명하고자 한다.
카운팅부(240)는 입력 어드레스(ADDI)에 응답해, 카운팅 동작을 수행할 수 있다. 입력 어드레스(ADDI)가 입력될 때마다, 카운팅부(240)는 카운트값(CNT)을 증가시켜 리셋부(250)로 출력할 수 있다. 리셋부(250)에 의해 생성되는 리셋 신호(RS)에 응답해, 카운팅부(240)의 카운트값(CNT)은 초기값으로 리셋될 수 있다.
리셋부(250)는 증가된 카운트값(CNT)을 입계값(TH)과 비교할 수 있다. 증가된 카운트값(CNT)이 입계값(TH)에 도달하면, 리셋부(250)는 리셋 신호(RS)를 생성할 수 있다. 이때, 입계값(TH)은 메모리 컨트롤러(150)가 호스트 프로세서(110) 및 프로세서(120)로부터 요청 받는 리드 또는 라이트 커맨드의 최대 대기열, 즉, 큐(queue)의 깊이에 대응할 수 있다.
도 3은 도 2에 도시된 제2 저장부(220)의 일시시예 구성도이다.
도 3은 제2 저장부(220)에 저장되는 제2 어드레스들(ADD2) 중 하나를 대표적으로 도시하고 있다. 도 3을 참조하면, 제2 어드레스(ADD2)에 대응하여 유효 비트(V) 및 더티 비트(D)가 각각 제2 저장부(220)에 할당될 수 있다.
유효 비트(V)는 메모리 장치(170)로부터 공유 메모리(160)로 제2 어드레스(ADD2)에 해당하는 데이터가 업데이트된 적이 있는지 없는지를 나타내는 비트일 수 있다. 즉, 메모리 장치(170)로부터 공유 메모리(160)로 데이터가 업데이트된 적이 있으면, 메모리 컨트롤러(150)는 유효 비트(V)를 로직 레벨 '1'로 활성화할 수 있다. 메모리 장치(170)로부터 공유 메모리(160)로 데이터가 업데이트된 적이 없으면, 메모리 컨트롤러(150)는 유효 비트(V)를 로직 레벨 '0'으로 비활성화할 수 있다.
더티 비트(D)는 제2 어드레스(ADD2)에 해당하는 데이터의 더티(dirty) 여부를 나타낼 수 있다. 더티 비트(D)가 로직 레벨 '1'로 활성화된 경우에는 공유 메모리(160)와 메모리 장치(170)에 저장된 데이터가 일치하지 않음을 나타낼 수 있다. 더티 비트(D)가 로직 레벨 '0'으로 비활성화된 경우에는 공유 메모리(160)와 메모리 장치(170)에 저장된 데이터가 일치함을 나타낼 수 있다.
즉, 제2 어드레스(ADD2)에 해당하는 데이터는 캐시 데이터로서 공유 메모리(160)에 저장되고, 공유 메모리(160)는 제2 어드레스(ADD2)에 해당하는 데이터에 대해 라스트-레벨 캐시 메모리로 동작할 수 있다. 따라서, 메모리 컨트롤러(150)는 제2 어드레스(ADD2)에 해당하는 데이터에 유효 비트(V) 및 더티 비트(D)를 할당하고, 캐시 일관성(cache coherency)이 유지되도록 관리할 수 있다.
도 4는 본 발명의 일실시예에 따른 메모리 시스템(140)의 동작을 나타내는 도면이다.
도 4를 참조하면, 메모리 컨트롤러(150)의 제1 저장부(210)는 입력 어드레스(ADDI)를 제1 어드레스(ADD1)로 저장할 수 있다(S410). 제1 저장부(210)는 저장된 제1 어드레스(ADD1)를 비교부(230)로 제공할 수 있다.
비교부(230)는 입력 어드레스(ADDI)를 제1 저장부(210)에 저장된 제1 어드레스(ADD1)와 비교할 수 있다(S420). 비교 결과 입력 어드레스(ADDI)가 제1 어드레스(ADD1)와 일치하면(Yes, S420), 비교부(230)는 플래그 신호(FLAG)를 생성할 수 있다(S430). 본 발명의 또 다른 실시예에 따라, 비교 결과 입력 어드레스(ADDI)가 제1 어드레스(ADD1)와 일치하면, 비교부(230)는 플래그 비트를 증가시킬 수 있다. 그리고, 플래그 비트가 임계 비트 이상 증가될 때, 비교부(230)가 플래그 신호(FLAG)를 생성할 수 있다.
플래그 신호(FLAG)에 응답해, 제2 저장부(220)는 입력 어드레스(ADDI)를 제2 어드레스(ADD2)로 저장할 수 있다(S440). 제2 저장부(220)에 저장된 제2 어드레스(ADD2)에 대응하여 유효 비트(V) 및 더티 비트(D)가 할당될 수 있다. 이후, 호스트 프로세서(110) 및 프로세서(120)의 요청에 따라, 메모리 컨트롤러(150)는 유효 비트(V) 및 더티 비트(D)를 관리할 수 있다. 즉, 캐시 일관성이 유지되도록, 메모리 컨트롤러(150)는 입력 어드레스(ADDI)를 바탕으로 대응하는 제2 어드레스(ADD2)의 유효 비트(V) 및 더티 비트(D)를 활성화 또는 비활성화할 수 있다.
본 발명의 실시예에 따라, 카운팅부(240)는 입력 어드레스(ADDI)에 응답해, 카운팅 동작을 수행할 수 있다(S450). 입력 어드레스(ADDI)가 입력될 때마다, 카운팅부(240)는 카운트값(CNT)을 증가시켜 리셋부(250)로 출력할 수 있다.
리셋부(250)는 증가된 카운트값(CNT)을 입계값(TH)과 비교할 수 있다(S460). 증가된 카운트값(CNT)이 입계값(TH)에 도달하면(Yes, S460), 리셋부(250)는 리셋 신호(RS)를 생성할 수 있다. 이때, 입계값(TH)은 메모리 시스템(140)이 호스트 프로세서(110) 및 프로세서(120)로부터 요청 받는 리드 또는 라이트 커맨드의 최대 대기열, 즉, 큐(queue)의 깊이에 대응할 수 있다.
리셋부(250)에 의해 생성되는 리셋 신호(RS)에 응답해, 제1 저장부(210)는 리셋되어 저장된 제1 어드레스(ADD1)를 삭제할 수 있다. 또한, 리셋부(250)에 의해 생성되는 리셋 신호(RS)에 응답해, 카운팅부(240)는 카운트값(CNT)을 초기값으로 리셋할 수 있다.
본 발명의 기술 사상은 상기 바람직한 실시예에 따라 구체적으로 기술되었으나, 이상에서 설명한 실시예는 그 설명을 위한 것이며 그 제한을 위한 것이 아님을 주의하여야 한다. 또한, 본 발명의 기술 분야의 통상의 전문가라면 본 발명의 기술 사상의 범위 내에서 여러 가지 치환, 변형 및 변경으로 다양한 실시예가 가능함을 이해할 수 있을 것이다. 그러므로, 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 안 되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.

Claims (17)

  1. 호스트 프로세서;
    상기 호스트 프로세서에 의해 지시된 작업을 처리하는 프로세서;
    상기 호스트 프로세서 및 상기 프로세서에 의해 공유되어 각각에 의해 처리된 데이터를 저장하는 메모리; 및
    상기 메모리에 저장된 데이터의 재사용 여부를 확인하고, 확인된 결과를 바탕으로 상기 저장된 데이터를 제1 및 제2 데이터로 구분해서 관리하는 메모리 컨트롤러를 포함하는
    데이터 처리 시스템.
  2. 제1항에 있어서,
    상기 메모리 컨트롤러는 상기 저장된 데이터 중 일정 기간 내에 재사용된 데이터를 상기 제1 데이터로 구분하고, 재사용되지 않은 데이터를 상기 제2 데이터로 구분하는 데이터 처리 시스템.
  3. 제1항에 있어서,
    상기 메모리 컨트롤러는 상기 제1 데이터에 해당하는 유효 비트 및 더티 비트를 할당하여 캐시 데이터로 관리하는 데이터 처리 시스템.
  4. 제1항에 있어서,
    상기 메모리 컨트롤러는
    상기 호스트 프로세서 및 상기 프로세서에 의해 요청되는 입력 어드레스를 제1 어드레스로 저장하는 제1 저장부;
    상기 입력 어드레스를 상기 제1 어드레스와 비교하고, 비교 결과에 따라 플래그 신호를 생성하는 비교부;
    상기 플래그 신호에 응답해, 상기 입력 어드레스를 제2 어드레스로 저장하는 제2 저장부를 포함하는 데이터 처리 시스템.
  5. 제4항에 있어서,
    상기 메모리 컨트롤러는
    상기 입력 어드레스에 응답해, 카운트값을 증가시키는 카운팅부; 및
    상기 증가된 카운트값이 임계값에 도달하면, 리셋 신호를 생성하는 리셋부를 더 포함하는 데이터 처리 시스템.
  6. 제5항에 있어서,
    상기 리셋 신호에 응답해, 상기 카운팅부 및 상기 제1 저장부가 리셋되는 데이터 처리 시스템.
  7. 제5항에 있어서,
    상기 임계값은 상기 메모리 컨트롤러의 큐(queue)의 깊이에 대응하는 데이터 처리 시스템.
  8. 제4항에 있어서,
    상기 비교 결과 상기 입력 어드레스가 상기 제1 어드레스와 일치하면, 상기 비교부는 상기 제1 어드레스에 해당하는 플래그 비트를 증가시키는 데이터 처리 시스템.
  9. 제8항에 있어서,
    상기 플래그 비트가 임계 비트 이상 증가되면, 상기 비교부는 상기 플래그 신호를 생성하는 데이터 처리 시스템.
  10. 제1항에 있어서,
    상기 메모리는 상기 호스트 프로세서의 라스트-레벨 캐시 메모리 또는 상기 프로세서의 버퍼 메모리로 공유되는 데이터 처리 시스템.
  11. 제1항에 있어서,
    상기 메모리는 1~2 기가 바이트의 용량을 갖는 DRAM(dynamic random access memory)를 포함하는 데이터 처리 시스템.
  12. 입력 어드레스를 제1 어드레스로 저장하는 단계;
    상기 입력 어드레스를 상기 제1 어드레스와 비교하고, 비교 결과에 따라 플래그 신호를 생성하는 단계; 및
    상기 플래그 신호에 응답해, 상기 입력 어드레스를 제2 어드레스로 저장하고 유효 비트 및 더티 비트를 할당하는 단계를 포함하는
    메모리 시스템의 동작방법.
  13. 제12항에 있어서,
    상기 입력 어드레스에 응답해, 카운트값을 증가시키는 단계; 및
    상기 증가된 카운트 값이 입계값에 도달하면, 리셋 신호를 생성하는 단계를 더 포함하는 메모리 시스템의 동작방법.
  14. 제13항에 있어서,
    상기 리셋 신호에 응답해, 상기 제1 어드레스를 삭제하는 단계; 및
    상기 리셋 신호에 응답해, 상기 카운트 값을 초기값으로 리셋 시키는 단계를 더 포함하는 메모리 시스템의 동작방법.
  15. 제13항에 있어서,
    상기 임계값은 상기 메모리 시스템의 큐(queue)의 깊이에 대응하는 메모리 시스템의 동작방법.
  16. 제12항에 있어서,
    상기 플래그 신호를 생성하는 단계는,
    상기 비교 결과 상기 입력 어드레스가 상기 제1 어드레스와 일치하면, 플래그 비트를 증가시키는 단계; 및
    상기 플래그 비트가 임계 비트 이상 증가될 때, 상기 플래그 신호를 생성하는 단계를 포함하는 메모리 시스템의 동작방법.
  17. 제12항에 있어서,
    상기 입력 어드레스를 바탕으로, 대응하는 제2 어드레스의 할당된 유효 비트 및 더티 비트를 활성화 또는 비활성화하는 단계를 더 포함하는 메모리 시스템의 동작방법.
KR1020190029885A 2019-03-15 2019-03-15 메모리 공유를 위한 메모리 시스템 및 그것을 포함하는 데이터 처리 시스템 KR20200109973A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020190029885A KR20200109973A (ko) 2019-03-15 2019-03-15 메모리 공유를 위한 메모리 시스템 및 그것을 포함하는 데이터 처리 시스템
US16/718,558 US11314650B2 (en) 2019-03-15 2019-12-18 Operating method of memory system that checks stored data that is reused and generating a flag/bit signal
CN202010079702.9A CN111694512B (zh) 2019-03-15 2020-02-04 共享存储器的存储系统以及包括其的数据处理系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190029885A KR20200109973A (ko) 2019-03-15 2019-03-15 메모리 공유를 위한 메모리 시스템 및 그것을 포함하는 데이터 처리 시스템

Publications (1)

Publication Number Publication Date
KR20200109973A true KR20200109973A (ko) 2020-09-23

Family

ID=72423668

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190029885A KR20200109973A (ko) 2019-03-15 2019-03-15 메모리 공유를 위한 메모리 시스템 및 그것을 포함하는 데이터 처리 시스템

Country Status (3)

Country Link
US (1) US11314650B2 (ko)
KR (1) KR20200109973A (ko)
CN (1) CN111694512B (ko)

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4425617A (en) * 1981-03-23 1984-01-10 Rca Corporation High-speed data sorter
GB2417102B (en) * 2004-07-23 2007-11-28 Hewlett Packard Development Co System and method for managing memory
KR100887417B1 (ko) * 2007-04-11 2009-03-06 삼성전자주식회사 멀티 프로세서 시스템에서 불휘발성 메모리의 공유적사용을 제공하기 위한 멀티패쓰 억세스블 반도체 메모리장치
US9648325B2 (en) * 2007-06-30 2017-05-09 Microsoft Technology Licensing, Llc Video decoding implementations for a graphics processing unit
KR100938903B1 (ko) 2007-12-04 2010-01-27 재단법인서울대학교산학협력재단 불규칙한 배열 접근 패턴을 갖는 애플리케이션을 대한소프트웨어에 의해 제어되는 캐시 메모리의 동적 데이터할당 방법
TW201015321A (en) * 2008-09-25 2010-04-16 Panasonic Corp Buffer memory device, memory system and data trnsfer method
US8397241B2 (en) * 2008-11-13 2013-03-12 Intel Corporation Language level support for shared virtual memory
US8924661B1 (en) * 2009-01-18 2014-12-30 Apple Inc. Memory system including a controller and processors associated with memory devices
JP5659054B2 (ja) * 2011-03-18 2015-01-28 株式会社富士通アドバンストエンジニアリング システム管理装置、システム管理方法及びシステム管理プログラム
US9373182B2 (en) 2012-08-17 2016-06-21 Intel Corporation Memory sharing via a unified memory architecture
JP2015011421A (ja) * 2013-06-27 2015-01-19 ソニー株式会社 記憶制御装置、記憶装置、および、その記憶制御方法
US9311011B2 (en) * 2013-08-07 2016-04-12 Qualcomm Incorporated Dynamic address negotiation for shared memory regions in heterogenous multiprocessor systems
KR20160148940A (ko) * 2015-06-17 2016-12-27 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작방법
US10970805B2 (en) * 2015-12-24 2021-04-06 Intel Corporation Graphics processing unit operation
KR102623702B1 (ko) * 2016-07-11 2024-01-11 에스케이하이닉스 주식회사 메모리 버퍼를 포함하는 메모리 시스템
US10599485B2 (en) * 2018-01-31 2020-03-24 Microsoft Technology Licensing, Llc Index structure using atomic multiword update operations

Also Published As

Publication number Publication date
US20200293451A1 (en) 2020-09-17
US11314650B2 (en) 2022-04-26
CN111694512B (zh) 2023-08-22
CN111694512A (zh) 2020-09-22

Similar Documents

Publication Publication Date Title
US10360156B2 (en) Data storage device using host memory and method of operating same
US20170242625A1 (en) Apparatus for ssd performance and endurance improvement
US11620066B2 (en) Storage device with expandible logical address space and operating method thereof
US20210240667A1 (en) User device including storage device and trim management method thereof
US11422930B2 (en) Controller, memory system and data processing system
US20190042415A1 (en) Storage model for a computer system having persistent system memory
CN108139983B (zh) 用于在多级系统存储器中固定存储器页面的方法和设备
CN116342365A (zh) 用于经由使用可用设备存储器扩展系统存储器的技术
CN115458013A (zh) 存储装置及其操作方法
KR20210144249A (ko) 저장 장치 및 이의 동작 방법
WO2018041258A1 (zh) 去分配命令处理的方法与存储设备
US11314650B2 (en) Operating method of memory system that checks stored data that is reused and generating a flag/bit signal
CN114610654A (zh) 一种固态存储设备以及向其写入数据的方法
US20170153994A1 (en) Mass storage region with ram-disk access and dma access
US12014080B2 (en) Memory system using host memory buffer and operation method thereof
KR20210001206A (ko) 컨트롤러, 메모리 시스템 및 그것의 동작 방법
KR102681181B1 (ko) 메모리 시스템 및 그것의 동작방법
US11698739B2 (en) Memory system and operating method thereof
US11656996B2 (en) Controller for managing order information of data, operation method thereof, and memory system including the same
US11941246B2 (en) Memory system, data processing system including the same, and operating method thereof
EP4287028A1 (en) Storage device providing high purge performance and memory block management method thereof
US20240160381A1 (en) Memory controllers and operating methods thereof, memory systems, and electronic devices
EP4220414A1 (en) Storage controller managing different types of blocks, operating method thereof, and operating method of storage device including the same
KR20210039163A (ko) 메모리 시스템 및 그것의 동작방법
KR20220096013A (ko) 컨트롤러 및 이를 포함하는 메모리 시스템

Legal Events

Date Code Title Description
A201 Request for examination