KR101861744B1 - 데이터 블록 오프셋에 기초하여 버퍼 디스크립터의 타겟 엔트리 어드레스를 계산할 수 있는 집적 회로와 상기 집적 회로를 포함하는 시스템 - Google Patents

데이터 블록 오프셋에 기초하여 버퍼 디스크립터의 타겟 엔트리 어드레스를 계산할 수 있는 집적 회로와 상기 집적 회로를 포함하는 시스템 Download PDF

Info

Publication number
KR101861744B1
KR101861744B1 KR1020130022168A KR20130022168A KR101861744B1 KR 101861744 B1 KR101861744 B1 KR 101861744B1 KR 1020130022168 A KR1020130022168 A KR 1020130022168A KR 20130022168 A KR20130022168 A KR 20130022168A KR 101861744 B1 KR101861744 B1 KR 101861744B1
Authority
KR
South Korea
Prior art keywords
data
read
memory device
address
entry address
Prior art date
Application number
KR1020130022168A
Other languages
English (en)
Other versions
KR20140107935A (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 KR1020130022168A priority Critical patent/KR101861744B1/ko
Priority to US14/144,682 priority patent/US9298613B2/en
Priority to DE102014102246.7A priority patent/DE102014102246A1/de
Priority to CN201410073091.1A priority patent/CN104021090B/zh
Publication of KR20140107935A publication Critical patent/KR20140107935A/ko
Application granted granted Critical
Publication of KR101861744B1 publication Critical patent/KR101861744B1/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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • 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

Abstract

집적 회로는 제2메모리 장치로부터 출력된 데이터 블록 오프셋을 이용하여 타겟 엔트리 어드레스를 계산하는 컨트롤 로직 회로와, 상기 타겟 엔트리 어드레스에 기초하여, 제1메모리 장치에 저장된 버퍼 디스크립터에 포함된 복수의 엔트리들 중에서 어느 하나를 리드하는 제1DMA(direct memory access) 컨트롤러를 포함한다.

Description

데이터 블록 오프셋에 기초하여 버퍼 디스크립터의 타겟 엔트리 어드레스를 계산할 수 있는 집적 회로와 상기 집적 회로를 포함하는 시스템{INTEGRATED CIRCUIT FOR COMPUTING TARGET ENTRY ADDRESS OF BUFFER DESCRIPTOR BASED ON DATA BLOCK OFFSET AND SYSTEM HAVING THE SAME}
본 발명의 개념에 따른 실시 예는 집적 회로에 관한 것으로, 특히 데이터 블록 오프셋에 기초하여 버퍼 디스크립터의 복수의 엔트리들 중에서 어느 하나의 엔트리에 대한 타겟 엔트리 어드레스를 계산할 수 있는 집적 회로, 이의 동작 방법, 및 상기 집적 회로를 포함하는 시스템에 관한 것이다.
플래시 메모리 장치는 일정한 크기, 예컨대 블록 단위로 프로그램 동작과 리드 동작을 수행한다.
버퍼 디스크립터(buffer descriptor)는 복수의 메모리 장치들 사이에서 데이터 입출력에 필요한 어드레스들을 매핑하기 위해 사용된다.
상기 복수의 메모리 장치들 사이에서 입출력되는 데이터를 제어하는 컨트롤러는 버퍼 디스크립터를 사용하여 데이터의 입출력에 필요한 어드레스들을 매핑하고 매핑 결과에 따라 획득된 어드레스를 이용하여 해당되는 메모리 장치의 메모리 영역을 액세스한다.
본 발명이 이루고자 하는 기술적인 과제는 데이터 블록 오프셋에 기초하여 버퍼 디스크립터의 복수의 엔트리들 중에서 어느 하나의 엔트리에 대한 타겟 엔트리 어드레스를 계산할 수 있는 집적 회로, 이의 동작 방법, 및 상기 집적 회로를 포함하는 시스템을 제공하는 것이다.
본 발명의 실시 예에 따른 집적 회로의 동작 방법은 제2메모리 장치로부터 데이터 블록 오프셋을 수신하는 단계와, 상기 데이터 블록 오프셋을 이용하여 타겟 엔트리 어드레스를 계산하는 단계와, 상기 타겟 엔트리 어드레스에 기초하여, 제1메모리 장치에 저장된 버퍼 디스크립터에 포함된 복수의 엔트리들 중에서 어느 하나를 리드하는 단계를 포함한다.
실시 예에 따라, 상기 방법은 리드된 엔트리에 포함된 물리 어드레스를 이용하여, 상기 제1메모리 장치에 포함된 복수의 데이터 버퍼들 중에서 어느 하나에 저장된 데이터를 리드하고, 리드된 데이터를 상기 제2메모리 장치로 전송하는 단계를 더 포함한다.
상기 방법은 레지스터를 이용하여 상기 복수의 엔트리들 각각에 포함되고 대응되는 데이터 버퍼의 크기를 나타내는 값을 동일하게 설정하는 단계를 더 포함한다.
다른 실시 예에 따라, 상기 방법은 상기 데이터 블록 오프셋과 함께 리드 데이터를 수신하는 단계와, 리드된 엔트리에 포함된 물리 어드레스를 이용하여, 상기 제1메모리 장치에 포함된 복수의 데이터 버퍼들 중에서 어느 하나에 상기 리드 데이터를 라이트하는 단계를 더 포함한다.
상기 타겟 엔트리 어드레스를 계산하는 단계는 데이터 버퍼의 크기에 대한 상기 데이터 블록 오프셋의 정수 몫(Q)을 계산하는 단계와, ESA=BD+Q*ES에 따라 상기 타겟 엔트리 어드레스(ESA)를 계산하는 단계를 포함하며, 상기 BD는 상기 버퍼 디스크립터의 시작 어드레스이고, 상기 ES는 상기 복수의 엔트리들 각각의 크기이다.
상기 방법은 상기 데이터 블록 오프셋과 함께 데이터 크기를 수신하는 단계와, 상기 타겟 엔트리 어드레스, 및 데이터 버퍼의 크기와 상기 데이터 크기의 비율에 기초하여, 상기 타겟 엔트리 어드레스에 인접하는 인접 엔트리 어드레스를 계산하는 단계와, 리드된 엔트리에 인접하는 인접 엔트리를 상기 인접 엔트리 어드레스에 기초하여 리드하는 동안 상기 리드된 엔트리에 포함된 물리 어드레스에 기초하여 상기 제1메모리 장치에 포함된 복수의 데이터 버퍼들 중에서 어느 하나로부터 데이터를 리드하고, 리드된 데이터를 상기 제2메모리 장치로 전송하는 단계를 더 포함한다.
상기 방법은 상기 데이터 블록 오프셋과 함께 데이터 크기와 리드 데이터를 수신하는 단계와, 상기 타겟 엔트리 어드레스, 및 데이터 버퍼의 크기와 상기 데이터 크기의 비율에 기초하여, 상기 타겟 엔트리 어드레스에 인접하는 인접 엔트리 어드레스를 계산하는 단계와, 리드된 엔트리에 인접하는 인접 엔트리를 상기 인접 엔트리 어드레스에 기초하여 리드하는 동안 상기 리드된 엔트리에 포함된 물리 어드레스에 기초하여 상기 제1메모리 장치에 포함된 복수의 데이터 버퍼들 중에서 어느 하나에 상기 리드 데이터의 일부를 라이트하는 단계를 더 포함한다.
본 발명의 실시 예에 따른 집적 회로는 제2메모리 장치로부터 출력된 데이터 블록 오프셋을 이용하여 타겟 엔트리 어드레스를 계산하는 컨트롤 로직 회로와, 상기 타겟 엔트리 어드레스에 기초하여, 제1메모리 장치에 저장된 버퍼 디스크립터에 포함된 복수의 엔트리들 중에서 어느 하나를 리드하는 제1DMA(direct memory access) 컨트롤러를 포함한다.
상기 제1DMA 컨트롤러는, 리드된 엔트리에 포함된 물리 어드레스를 이용하여, 데이터 라이트 동작 또는 데이터 리드 동작을 수행하기 위해, 상기 제1메모리 장치에 포함된 복수의 데이터 버퍼들 중에서 어느 하나를 액세스한다.
실시 예에 따라 상기 집적 회로는, 리드된 엔트리에 포함된 물리 어드레스를 이용하여, 상기 제1메모리 장치에 포함된 복수의 데이터 버퍼들 중에서 어느 하나에 저장된 데이터를 리드하고, 리드된 데이터를 상기 제2메모리 장치로 전송하는 제2DMA 컨트롤러를 더 포함한다.
다른 실시 예에 따라 상기 집적 회로는, 상기 제2메모리 장치로부터 상기 데이터 블록 오프셋과 함께 리드 데이터가 입력될 때, 리드된 엔트리에 포함된 물리 어드레스를 이용하여, 상기 제1메모리 장치에 포함된 복수의 데이터 버퍼들 중에서 어느 하나에 상기 리드 데이터를 라이트하는 제2DMA 컨트롤러를 더 포함한다.
상기 집적 회로는 JEDEC JESD223의 UFS(universal flash storage) 호스트 컨트롤러 인터페이스이고, 상기 버퍼 디스크립터는 JEDEC JESD223의 PRDT(physical region description table)이다.
본 발명의 실시 예에 따른 전자 시스템은 복수의 엔트리들을 포함하는 버퍼 디스크립터와, 복수의 데이터 버퍼들을 포함하는 제1메모리 장치; 제2메모리 장치; 및 상기 제1메모리 장치와 상기 제2메모리 장치를 제어하는 컨트롤러를 포함한다.
상기 컨트롤러는 상기 제2메모리 장치로부터 출력된 데이터 블록 오프셋을 이용하여 타겟 엔트리 어드레스를 계산하는 컨트롤 로직 회로와, 상기 타겟 엔트리 어드레스에 기초하여, 상기 복수의 엔트리들 중에서 어느 하나를 리드하는 제1DMA (direct memory access) 컨트롤러를 포함한다.
상기 제2메모리 장치는 플래시-기반(flash-based) 메모리 장치이다.
상기 컨트롤 로직 회로는 상기 복수의 엔트리들 각각에 대응되는 상기 복수의 데이터 버퍼들 각각의 크기를 동일한 값으로 설정하기 위한 레지스터를 포함한다.
본 발명의 실시 예에 따른 집적 회로는 매핑에 필요한 메모리 장치의 물리 어드레스를 용이하게 계산할 수 있는 효과가 있다.
따라서 상기 집적 회로는 상기 물리 어드레스를 계산하기 위한 리소스 (resource)를 줄일 수 있고 데이터 입출력 성능을 향상시킬 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 일 실시 예에 따른 전자 시스템의 블록도를 나타낸다.
도 2는 도 1에 도시된 데이터 버퍼 영역, 버퍼 디스크립터 영역, 및 메모리 코어를 포함하는 전자 시스템의 메모리 맵의 일 실시 예를 나타낸다.
도 3은 본 발명의 일 실시 예에 따른 데이터 라이트 동작의 데이터 흐름을 나타낸다.
도 4는 도 3의 데이터 라이트 동작을 수행하는 전자 시스템의 동작을 설명하기 위한 데이터 테이블을 나타낸다.
도 5는 본 발명의 일 실시 예에 따른 데이터 리드 동작의 데이터 흐름을 나타낸다.
도 6은 도 1에 도시된 데이터 버퍼 영역, 버퍼 디스크립터 영역, 및 메모리 코어를 포함하는 전자 시스템의 메모리 맵의 다른 실시 예를 나타낸다.
도 7은 본 발명의 다른 실시 예에 따른 데이터 라이트 동작의 데이터 흐름을 나타낸다.
도 8은 도 7의 데이터 라이트 동작을 수행하는 전자 시스템의 동작을 설명하기 위한 데이터 테이블을 나타낸다.
도 9는 본 발명의 다른 실시 예에 따른 데이터 리드 동작의 데이터 흐름을 나타낸다.
도 10은 본 발명의 실시 예에 따른 데이터 라이트 동작을 설명하기 위한 플로우차트이다.
도 11은 본 발명의 실시 예에 따른 데이터 리드 동작을 설명하기 위한 플로우차트이다.
도 12는 본 발명의 다른 실시 예에 따른 전자 시스템의 블록도를 나타낸다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 본 발명의 일 실시 예에 따른 전자 시스템의 블록도를 나타낸다.
전자 시스템(100)은 제1메모리 장치(200), 컨트롤러(300), 및 제2메모리 장치(400)를 포함한다.
전자 시스템(100)은 PC(personal computer), 데이터 서버, 휴대용 전자 장치, 또는 전자 장치로 구현될 수 있다.
모바일 기기로 불릴 수 있는 상기 휴대용 전자 장치는 랩탑 컴퓨터(laptop computer), 이동 전화기, 스마트 폰(smart phone), 태블릿(tablet) PC, PDA (personal digital assistant), EDA (enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP(portable multimedia player), PND(personal navigation device 또는 portable navigation device), 휴대용 게임 콘솔(handheld game console), 또는 e-북(e-book)으로 구현될 수 있다.
상기 전자 장치는 디지털 TV 또는 IPTV(internet protocol television)로 구현될 수 있다.
제1메모리 장치(200)는 복수의 데이터 버퍼들을 포함하는 데이터 버퍼 영역 (210)과 복수의 엔트리들을 포함하는 버퍼 디스크립터 영역(230)을 포함한다.
제1메모리 장치(200)는 각 영역(210과 230)으로부터 데이터(DATA)를 리드하거나, 각 영역(210과 230)에 데이터(DATA)를 라이트할 수 있는 액세스 제어 회로(미 도시)를 포함할 수 있다.
제1메모리 장치(200)는 휘발성 메모리 장치 또는 불휘발성 메모리 장치로 구현될 수 있다.
상기 휘발성 메모리 장치는 DRAM(dynamic random access memory), SRAM (static random access memory), T-RAM(thyristor RAM), Z-RAM(zero capacitor RAM), 또는 TTRAM(Twin Transistor RAM)으로 구현될 수 있다.
상기 불휘발성 메모리 장치는 EEPROM(Electrically Erasable Programmable Read-Only Memory), 플래시(flash) 메모리, MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torque MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase change RAM), 저항 메모리(Resistive RAM: RRAM), 나노튜브 RRAM(Nanotube RRAM), 폴리머 RAM(Polymer RAM: PoRAM), 나노 부유 게이트 메모리(Nano Floating Gate Memory: NFGM), 홀로그래픽 메모리 (holographic memory), 분자 전자 메모리 소자(Molecular Electronics Memory Device), 또는 절연 저항 변화 메모리(Insulator Resistance Change Memory)로 구현될 수 있다.
컨트롤러(300)는 제1메모리 장치(200)와 제2메모리 장치(400) 사이에서 주고받는 데이터(DATA)를 제어할 수 있다.
컨트롤러(300)는 집적 회로 또는 SoC(system on chip)로 구현될 수 있다. 도 12에 도시된 바와 같이 컨트롤러(300)는 애플리케이션 프로세서의 일부로서 구현될 수 있다.
제1메모리 장치(200)와 컨트롤러(300)는 하나의 집적 회로 또는 하나의 SoC에 구현될 수 있다. 이때, 상기 제1메모리 장치(200)는 SRAM으로 구현될 수 있다.
컨트롤러(300)는 컨트롤 로직 회로(310), 제1DMA(direct memory access) 컨트롤러(330), 제2DMA 컨트롤러(350), 및 제1인터페이스(370)를 포함할 수 있다.
컨트롤 로직 회로(310)는, 제2메모리 장치(400)로부터 출력된 패킷(PACKET)에 포함된 데이터 블록 오프셋을 이용하여, 버퍼 디스크립터에 포함된 타겟 엔트리의 타겟 엔트리 어드레스(ESA)를 계산할 수 있다.
컨트롤 로직 회로(310)는 제1DMA 컨트롤러(330), 제2DMA 컨트롤러(350), 및 제1인터페이스(370)의 동작을 제어할 수 있다.
제1DMA 컨트롤러(330)는, 타겟 엔트리 어드레스(ESA)에 기초하여, 제1메모리 장치(200)의 버퍼 디스크립터 영역(230)에 저장된 버퍼 디스크립터에 포함된 복수의 엔트리들 중에서 어느 하나의 엔트리(ENT)를 리드(read)하고, 리드된 엔트리 (ENT) 또는 리드된 엔트리(ENT)에 포함된 물리 어드레스(PA)를 제2DMA 컨트롤러 (350)로 전송할 수 있다.
제1DMA 컨트롤러(330)는 버퍼 디스크립터 영역(230)에 저장된 버퍼 디스크립터 자체(또는 전부)를 리드하는 대신에 상기 버퍼 디스크립터에 포함된 특정 엔트리(ENT)만을 리드한다.
데이터 라이트 동작 동안, 컨트롤 로직 회로(310)의 제어(CTR)에 따라, 제2DMA 컨트롤러(350)는, 리드된 엔트리(ENT)에 포함된 물리 어드레스(PA)를 이용하여, 제1메모리 장치(200)의 데이터 버퍼 영역(210)에 포함된 복수의 데이터 버퍼들 중에서 어느 하나에 저장된 데이터(DATA)의 일부 또는 전부를 리드하고, 리드된 데이터(DATA)를 제1인터페이스(370)를 통해 제2메모리 장치(400)로 전송할 수 있다.
데이터 리드 동작 동안, 컨트롤 로직 회로(310)의 제어(CTR)에 따라, 제2DMA 컨트롤러(350)는, 리드된 엔트리(ENT)에 포함된 물리 어드레스(PA)를 이용하여, 제1메모리 장치(200)의 데이터 버퍼 영역(210)에 포함된 복수의 데이터 버퍼들 중에서 어느 하나의 일부 또는 전체에 제2메모리 장치(400)로부터 출력된 리드 데이터(DATA)를 라이트할 수 있다. 이때, 패킷(PACKET)은 데이터 블록 오프셋과 리드 데이터(DATA)를 포함할 수 있다.
실시 예에 따라, 제1DMA 컨트롤러(330)는 제2DMA 컨트롤러(350)의 기능을 포함할 수 있다. 이때, 제1DMA 컨트롤러(330)는, 리드된 엔트리(ENT)에 포함된 물리 어드레스(PA)를 이용하여, 데이터 라이트 동작 또는 데이터 리드 동작을 수행하기 위해, 제1메모리 장치(200)의 데이터 버퍼 영역(210)에 포함된 복수의 데이터 버퍼들 중에서 어느 하나를 액세스할 수 있다.
제2메모리 장치(400)는 일정한 크기로, 예컨대 블록 단위로 데이터(DATA)를 입출력할 수 있는 플래시-기반(flash-based) 메모리 장치로 구현될 수 있다.
상기 플래시-기반 메모리 장치는 SSD(solid state drive), USB 플래시 드라이브, UFS(universal flash storage), SD(secure digital) 카드, MMC(multi-media card), 또는 eMMC(embedded-MMC)로 구현될 수 있다.
제2메모리 장치(400)가 UFS일 때, 컨트롤러(300)는 JEDEC JESD223의 UFS 호스트 컨트롤러 인터페이스이고, 버퍼 디스크립터 영역(230)에 포함된 버퍼 디스크립터는 JEDEC JESD223의 PRDT(physical region description table)이고, 패킷 (PACKET)은 UPIU(UFS Protocol information unit)이다.
따라서, 본 명세서는 UFS 호스트 컨트롤러 인터페이스 표준인 JEDEC JESD223를 레퍼런스(reference)로 포함한다.
도 2는 도 1에 도시된 데이터 버퍼 영역, 버퍼 디스크립터 영역, 및 메모리 코어를 포함하는 전자 시스템(100A)의 메모리 맵(memory map)의 일 실시 예를 나타낸다.
데이터 버퍼 영역(210)은 복수의 데이터 버퍼들(211)을 포함한다. 이때, 데이터 버퍼는 데이터를 저장하는 메모리 영역을 의미할 수 있다.
버퍼 디스크립터(230)는 복수의 엔트리들(231)을 포함한다. 복수의 엔트리들 (231) 각각의 크기는 동일할 수 있다.
버퍼 디스크립터(230)는 제2메모리 장치(400)의 데이터 블록과 제1메모리 장치(200)의 데이터 버퍼를 매핑하는 정보를 포함한다. 예컨대, 상기 정보는 버퍼 디스크립터(230)의 엔트리에 저장된다.
복수의 엔트리들(231) 각각은 복수의 데이터 버퍼들 각각의 물리 주소 (physical address), 예컨대 시작 주소를 포함한다.
다른 실시 예에 따라, 복수의 엔트리들(231) 각각은 복수의 데이터 버퍼들 각각의 물리 주소와, 상기 복수의 데이터 버퍼들 각각의 크기를 나타내는 값을 포함할 수 있다. 상기 값은 레지스터(311)에 포함된 정보에 따라 결정될 수 있다.
메모리 코어(430)는 복수의 메모리 영역들, 즉 복수의 블록들을 포함할 수 있다. 상기 복수의 블록들 각각에는 블록 단위로 데이터가 저장될 수 있다.
도 3은 본 발명의 일 실시 예에 따른 데이터 라이트 동작의 데이터 흐름을 나타내고, 도 4는 도 3의 데이터 라이트 동작을 수행하는 전자 시스템의 동작을 설명하기 위한 데이터 테이블을 나타낸다.
라이트 동작(WRITE OPERATION-I)은 도 1부터 도 4를 참조하여 설명된다.
설명의 편의를 위해, 제2메모리 장치(430)의 타겟 시작 어드레스(TA)는 5000이고, 데이터 블록 오프셋(OFF)은 128이고, 버퍼 디스크립터 시작 어드레스(BD)는 9000이고, 엔트리 크기 (OFFB)는 4이고, 데이터 버퍼 영역 시작 어드레스(SA)는 1000이고, 데이터 버퍼의 크기(S)는 128이라고 가정한다. 이때 각 숫자의 단위는 고려하지 않는다.
컨트롤러(300), 즉 컨트롤 로직 회로(310)는 타겟 시작 어드레스(TA=5000)와 데이터 크기(LENW)를 포함하는 명령(CMD)을 제1인터페이스(370)를 통해 제2인터페이스(410)로 전송한다(S110).
데이터 크기(LENW)는 메모리 코어(430)에 라이트될 데이터의 크기를 나타낸다.
제2메모리 장치(400), 즉 제2인터페이스(410)는 메모리 코어(430)의 상태에 따라 전송될 패킷(PACKETi)의 개수 및/또는 데이터의 전송 순서를 결정할 수 있다.
제2인터페이스(410)는, 도 4에 도시된 데이터 테이블에 따라, 컨트롤러(300)로부터 출력된 데이터(DATA)를 메모리 코어(430)에 라이트한다고 가정한다.
제2메모리 장치(400)는 데이터 블록 오프셋(OFFSET0=1OFF=128)과 데이터 크기(LEN1=128)를 포함하는 패킷(PACKET0)을 컨트롤러(300)로 전송한다(S112).
컨트롤 로직 회로(310)는 데이터 버퍼의 크기(=128)와 데이터 블록 오프셋 (=128)에 기초하여 인덱스(INDEX=1)를 계산한다(S114). 즉, 인덱스(INDEX)는 데이터 블록 오프셋(=128)을 데이터 버퍼의 크기(=128)로 나눈 정수 몫(=1)을 의미한다.
예컨대, 데이터 블록 오프셋(OFFSETi)이 130이고 데이터 버퍼의 크기가 128일 때, 정수 몫은 1이다.
컨트롤 로직 회로(310)는 수학식 1에 따라 타겟 엔트리 어드레스(ESA)를 계산한다(S116).
[수학식 1]
ESA=BD+INDEX*ES
여기서, ES는 엔트리(231)의 크기를 의미한다.
수학식 1에 따라 계산된 타겟 엔트리 어드레스(ESA=BD+1OFFB)는 9004이다.
컨트롤 로직 회로(310)는 타겟 엔트리 어드레스(ESA=BD+1OFFB=9004)를 제1DMA 컨트롤러(330)로 출력한다.
제1DMA 컨트롤러(330)는 타겟 엔트리 어드레스(ESA=BD+1OFFB=9004)를 제1메모리 장치(200)로 전송하고(S118), 제1메모리 장치(200)는 타겟 엔트리 어드레스 (ESA=BD+1OFFB=9004)에 대응되는 엔트리(ENT1)를 컨트롤러(300)로 전송한다(S120).
즉, 제1DMA 컨트롤러(330)는 타겟 엔트리 어드레스(ESA=BD+1OFFB=9004)를 이용하여 버퍼 디스크립터 영역(230)에 포함된 엔트리(ENT1)를 읽어 온다(S118과 S120).
제1DMA 컨트롤러(330)는 엔트리(ENT1)에 포함된 물리 어드레스(PA=SA+6S)를 제2DMA 컨트롤러(350)로 전송한다.
제2DMA 컨트롤러(350)는 물리 어드레스(PA=SA+6S)를 제1메모리 장치(200)로 전송하고(S122), 제1메모리 장치(200)는 물리 어드레스(PA=SA+6S)에 상응하는 데이터 버퍼에 저장된 제2데이터(DATA2)를 컨트롤러(300)로 전송한다(S124).
즉, 제2DMA 컨트롤러(350)는 물리 어드레스(PA=SA+6S)에 대응되는 데이터 버퍼에 저장된 제2데이터(DATA2)를 리드하고(S122와 S124), 리드된 제2데이터(DATA2)를 제1인터페이스(370)를 통해 제2인터페이스(410)로 전송한다(S126).
제2인터페이스(410)는 제2데이터(DATA2)를 어드레스(TA+1OFF)에 대응되는 블록에 라이트한다.
계속하여, 제2메모리 장치(400)는 데이터 블록 오프셋(OFFSET1=3OFF=3*128)과 데이터 크기(LEN1=128)를 포함하는 패킷(PACKET1)을 컨트롤러(300)로 전송한다 (S128과 S112).
컨트롤 로직 회로(310)는 데이터 버퍼의 크기(=128)와 데이터 블록 오프셋 (=3*128)에 기초하여 인덱스(INDEX=3)를 계산한다(S114).
컨트롤 로직 회로(310)는 수학식 1에 따라 타겟 엔트리 어드레스 (ESA=BD+3OFFFB=9000+3*4=9012)를 계산한다(S116).
컨트롤 로직 회로(310)는 타겟 엔트리 어드레스(ESA=BD+3OFFB=9012)를 제1DMA 컨트롤러(330)로 출력한다.
제1DMA 컨트롤러(330)는 타겟 엔트리 어드레스(ESA=BD+3OFFB=9012)를 이용하여 버퍼 디스크립터 영역(230)에 포함된 엔트리(ENT3)를 읽어 온다(S118과 S120).
제1DMA 컨트롤러(330)는 엔트리(ENT3)에 포함된 물리 어드레스(PA=SA+9S)를 제2DMA 컨트롤러(350)로 전송한다.
제2DMA 컨트롤러(350)는 물리 어드레스(PA=SA+9S)에 대응되는 데이터 버퍼에 저장된 제4데이터(DATA4)를 리드하고(S122와 S124), 리드된 제4데이터(DATA4)를 제1인터페이스(370)를 통해 제2인터페이스(410)로 전송한다(S126).
제2인터페이스(410)는 제4데이터(DATA4)를 어드레스(TA+3OFF)에 대응되는 블록에 라이트한다.
예컨대, 제2DMA 컨트롤러(350)가 제2데이터(DATA2)를 리드하는 동안, 제1DMA 컨트롤러(330)는 엔트리(ENT3)를 리드할 수 있다. 따라서, 컨트롤러(300)의 성능은 개선된다.
계속하여, 제2메모리 장치(400)는 데이터 블록 오프셋(OFFSET2=5OFF=5*128)과 데이터 크기(LEN1=128)를 포함하는 패킷(PACKET2)을 컨트롤러(300)로 전송한다 (S128과 S112).
컨트롤 로직 회로(310)는 데이터 버퍼의 크기(=128)와 데이터 블록 오프셋 (=5*128)에 기초하여 인덱스(INDEX=5)를 계산한다(S114).
컨트롤 로직 회로(310)는 수학식 1에 따라 타겟 엔트리 어드레스 (ESA=BD+5OFFB=9000+5*4=9020)를 계산한다(S116).
컨트롤 로직 회로(310)는 타겟 엔트리 어드레스(ESA=BD+5OFFB=9020)를 제1DMA 컨트롤러(330)로 출력한다.
제1DMA 컨트롤러(330)는 타겟 엔트리 어드레스(ESA=BD+5OFFB=9020)를 이용하여 버퍼 디스크립터 영역(230)에 포함된 엔트리(ENT5)를 읽어 온다(S118과 S120).
제1DMA 컨트롤러(330)는 엔트리(ENT5)에 포함된 물리 어드레스(PA=SA+10S)를 제2DMA 컨트롤러(350)로 전송한다.
제2DMA 컨트롤러(350)는 물리 어드레스(PA=SA+10S)를 이용하여 데이터 버퍼에 저장된 제6데이터(DATA6)를 리드하고(S122와 S124), 리드된 제6데이터(DATA6)를 제1인터페이스(370)를 통해 제2인터페이스(410)로 전송한다(S126).
제2인터페이스(410)는 제6데이터(DATA6)를 어드레스(TA+5OFF)에 대응되는 블록에 라이트한다.
S112부터 S128을 통하여, 각 데이터(DATA8, DATA1, DATA3, DATA5, 및 DATA7)가 순차적으로 제2메모리 장치(400)의 메모리 코어(430)의 대응되는 블록에 라이트된다.
도 5는 본 발명의 일 실시 예에 따른 데이터 리드 동작의 데이터 흐름을 나타낸다.
데이터 리드 동작은 도 1, 도 2, 도 4, 및 도 5를 참조하여 설명된다.
컨트롤러(300)의 컨트롤 로직 회로(310)는 제2메모리 장치(430)의 타겟 시작 어드레스(TA=5000)와 데이터 크기(LENR)를 포함하는 명령(CMD)을 제2메모리 장치 (400)의 제2인터페이스 (410)로 전송한다(S210).
데이터 크기(LENR)는 메모리 코어(430)로부터 리드될 데이터의 크기를 나타낸다.
제2메모리 장치(400)는 데이터 블록 오프셋(OFFSET0=1OFF=1*128), 데이터 크기 (LEN1=128), 및 제2데이터(DATA2)를 포함하는 패킷(PACKET0)을 컨트롤러(300)로 전송한다(S212).
컨트롤 로직 회로(310)는 데이터 버퍼의 크기(=128)와 데이터 블록 오프셋 (=1*128)에 기초하여 인덱스(INDEX=1)를 계산한다(S214).
컨트롤 로직 회로(310)는 수학식 1에 따라 타겟 엔트리 어드레스 (ESA=BD+1OFFB=9000+1*4=9004)를 계산한다(S216).
컨트롤 로직 회로(310)는 타겟 엔트리 어드레스(ESA=BD+1OFFB=9004)를 제1DMA 컨트롤러(330)로 출력한다.
제1DMA 컨트롤러(330)는 타겟 엔트리 어드레스(ESA=BD+1OFFB=9004)를 이용하여 버퍼 디스크립터 영역(230)에 포함된 엔트리(ENT1)를 읽어 온다(S218과 S220).
제1DMA 컨트롤러(330)는 엔트리(ENT1)에 포함된 물리 어드레스(PA=SA+6S)를 제2DMA 컨트롤러(350)로 전송한다.
제2DMA 컨트롤러(350)는 물리 어드레스(PA=SA+6S)에 대응되는 데이터 버퍼에 제2데이터(DATA2)를 라이트한다(S224).
계속하여, 제2메모리 장치(400)는 데이터 블록 오프셋(OFFSET1=3OFF=3*128), 데이터 크기(LEN1=128), 및 제4데이터(DATA4)를 포함하는 패킷(PACKET1)을 컨트롤러 (300)로 전송한다(S212).
컨트롤 로직 회로(310)는 데이터 버퍼의 크기(=128)와 데이터 블록 오프셋 (=3*128)에 기초하여 인덱스(INDEX=3)를 계산한다(S214).
컨트롤 로직 회로(310)는 수학식 1에 따라 타겟 엔트리 어드레스 (ESA=BD+3OFFB=9000+3*4=9012)를 계산한다(S216).
컨트롤 로직 회로(310)는 타겟 엔트리 어드레스(ESA=BD+3OFFB=9012)를 제1DMA 컨트롤러(330)로 출력한다.
제1DMA 컨트롤러(330)는 타겟 엔트리 어드레스(ESA=BD+3OFFB=9012)를 이용하여 버퍼 디스크립터 영역(230)에 포함된 엔트리(ENT3)를 읽어 온다(S218과 S220).
제1DMA 컨트롤러(330)는 엔트리(ENT3)에 포함된 물리 어드레스(PA=SA+9S)를 제2DMA 컨트롤러(350)로 전송한다.
제2DMA 컨트롤러(350)는 물리 어드레스(PA=SA+9S)에 대응되는 데이터 버퍼에 제4데이터(DATA4)를 라이트한다(S224).
상술한 바와 같이 S212부터 S224를 통하여, 각 리드 데이터(DATA6, DATA8, DATA1, DATA3, DATA5, 및 DATA7)가 순차적으로 제1메모리 장치(200)의 데이터 버퍼 영역(210)의 각 데이터 버퍼에 라이트된다.
도 6은 도 1에 도시된 데이터 버퍼 영역, 버퍼 디스크립터 영역, 및 메모리 코어를 포함하는 전자 시스템(100B)의 메모리 맵의 다른 실시 예를 나타낸다.
각 데이터 버퍼에 저장된 데이터(DATA2와 DATA3)는 하나의 패킷에 따라 순차적으로 처리되고, 각 데이터 버퍼에 저장된 데이터(DATA4, DATA5, DATA6, 및 DATA7)는 하나의 패킷에 따라 순차적으로 처리된다.
도 7은 본 발명의 다른 실시 예에 따른 데이터 라이트 동작의 데이터 흐름을 나타내고, 도 8은 도 7의 데이터 라이트 동작을 수행하는 전자 시스템의 동작을 설명하기 위한 데이터 테이블을 나타낸다.
패킷(PACKETi)에 포함된 데이터 크기(LEN2)에 상응하는 데이터가 복수의 데이터 버퍼들에 존재할 때, 데이터 라이트 동작은 도 6부터 도 8을 참조하여 상세히 설명된다.
컨트롤러(300), 즉 컨트롤 로직 회로(310)는 타겟 시작 어드레스(TA=5000)와 데이터 크기(LENW)를 포함하는 명령(CMD)을 제2메모리 장치(400)의 제2인터페이스 (410)로 전송한다(S310).
제2메모리 장치(400), 즉 제2인터페이스(410)는, 메모리 코어(430)의 상태에 따라, 전송될 패킷의 개수, 데이터 크기(LEN2), 및/또는 데이터의 순서를 결정할 수 있다.
제2인터페이스(410)는, 도 8에 도시된 데이터 테이블에 따라, 각 데이터를 메모리 코어(430)에 라이트한다고 가정한다.
제2메모리 장치(400)는 데이터 블록 오프셋(OFFSET0=1OFF=128)과 데이터 크기(LEN2=2*128)를 포함하는 패킷(PACKET0)을 컨트롤러(300)로 전송한다(S312).
컨트롤 로직 회로(310)는 데이터 버퍼의 크기(=128)와 데이터 블록 오프셋 (=128)에 기초하여 인덱스(INDEX=1)를 계산한다(S314).
컨트롤러(300)는 데이터 블록 오프셋(1OFF), 데이터 크기(LEN2=2*128), 및 데이터 버퍼의 크기에 기초하여 반복 회수(NoI)를 계산한다(S316).
설명의 편의를 위해, 반복 회수(NoI)는 데이터 크기(LEN2)를 데이터 버퍼의 크기(=128)로 나눈 값, 예컨대 2로 계산될 수 있다.
컨트롤 로직 회로(310)는 수학식 1에 따라 타겟 엔트리 어드레스 (ESA1=BD+1OFFB=9004)를 계산하고, 타겟 엔트리 어드레스(ESA1=BD+1OFFB=9004)를 제1DMA 컨트롤러(330)로 출력한다.
제1DMA 컨트롤러(330)는 타겟 엔트리 어드레스(ESA1=BD+1OFFB=9004)를 이용하여 버퍼 디스크립터 영역(230)에 포함된 엔트리(ENT1)를 읽어 온다(S320과 S322).
제1DMA 컨트롤러(330)는 엔트리(ENT1)에 포함된 물리 어드레스(PA1=SA+6S)를 제2DMA 컨트롤러(350)로 전송한다.
제2DMA 컨트롤러(350)는 물리 어드레스(PA1=SA+6S)에 대응되는 데이터 버퍼에 저장된 제2데이터(DATA2)를 리드하고(S324와 S326), 리드된 제2데이터(DATA2)를 제1인터페이스(370)를 통해 제2인터페이스(410)로 전송한다(S328).
제2인터페이스(410)는 데이터(DATA2)를 메모리 코어(430)의 대응되는 블록에 라이트한다.
컨트롤 로직 회로(310)는 타겟 엔트리 어드레스(ESA1)에 인접하는 인접 엔트리 어드레스(ESA2)를 계산한다. 예컨대, 컨트롤 로직 회로(310)는 타겟 엔트리 어드레스(ESA1)와 엔트리 크기에 기초하여 인접 엔트리 어드레스를 계산할 수 있다.
컨트롤 로직 회로(310)는 인접 엔트리 어드레스(ESA2=ESA1+ES=9008)를 제1DMA 컨트롤러(330)로 출력한다.
제1DMA 컨트롤러(330)는 인접 엔트리 어드레스(ESA2=BD+2OFFB=9008)를 이용하여 버퍼 디스크립터 영역(230)에 포함된 엔트리(ENT2)를 읽어 온다(S332과 S334).
제1DMA 컨트롤러(330)는 엔트리(ENT2)에 포함된 물리 어드레스(PA2=SA+1S)를 제2DMA 컨트롤러(350)로 전송한다.
제2DMA 컨트롤러(350)는 물리 어드레스(PA2=SA+1S)에 대응되는 데이터 버퍼에 저장된 제3데이터(DATA3)를 리드하고(S336와 S338), 리드된 제3데이터(DATA3)를 제1인터페이스(370)를 통해 제2인터페이스(410)로 전송한다(S340).
제2인터페이스(410)는 제3데이터(DATA3)를 메모리 코어(430)의 대응되는 블록에 라이트한다.
도 7에서는 설명의 편의를 위해 하나의 패킷(PACKET0)을 이용하여 각 데이터 (DATA2와 DATA3)를 메모리 코어(430)의 각 블록에 라이트하는 방법이 도시되어 있으나, 다른 하나의 패킷(PACKET1)을 이용하여 각 데이터(DATA4, DATA5, DATA6, 및 DATA7)를 메모리 코어(430)의 각 블록에 라이트하는 방법을 설명하면 다음과 같다.
제2메모리 장치(400)는 데이터 블록 오프셋(OFFSET1=3OFF=3*128)과 데이터 크기 (LEN2=4*128)를 포함하는 패킷(PACKET1)을 컨트롤러(300)로 전송한다(S312).
컨트롤 로직 회로(310)는 데이터 버퍼의 크기(=128)와 데이터 블록 오프셋 (=3*128)에 기초하여 인덱스(INDEX=3)를 계산한다(S314).
컨트롤러(300)는 데이터 블록 오프셋(1OFF), 데이터 크기(LEN2=2*128), 및 데이터 버퍼의 크기에 기초하여 반복 회수(NoI)를 계산한다(S316).
설명의 편의를 위해, 반복 회수(NoI)는 데이터 크기(LEN2=4*128)를 데이터 버퍼의 크기(=128)로 나눈 값, 예컨대 4로 계산될 수 있다(S316).
상술한 바와 같이, 타겟 엔트리 어드레스(ESA=BD+3OFFB)에 인접하는 3개의 인접 엔트리 어드레스들(BD+4OFFB, BD+5OFFB, 및 BD+6OFFB)이 순차적으로 계산되고, 순차적으로 리드된 각 엔트리(ENT3, ENT4, ENT5, 및 ENT6)에 포함된 각 물리 어드레스(SA+9S, SA+12S, SA+10S, 및 SA+13S)에 따라 각 데이터(DATA4, DATA5, DATA6, 및 DATA7)가 순차적으로 제2메모리 장치(400)의 메모리 코어(430)의 각 블록에 라이트된다.
도 9는 본 발명의 다른 실시 예에 따른 데이터 리드 동작의 데이터 흐름을 나타낸다.
패킷(PACKETi)에 포함된 데이터 크기(LEN2)에 상응하는 데이터가 복수의 데이터 버퍼들에 라이트될 때, 데이터 리드 동작은 도 1, 도 6, 도 8, 및 도 9를 참조하여 상세히 설명된다.
컨트롤러(300), 즉 컨트롤 로직 회로(310)는 타겟 시작 어드레스(TA=5000)와 데이터 크기(LENR)를 포함하는 명령(CMD)을 제2메모리 장치(400)의 제2인터페이스 (410)로 전송한다(S410).
제2메모리 장치(400), 즉 제2인터페이스(410)는, 메모리 코어(430)의 상태에 따라, 전송될 패킷의 개수, 리드 데이터의 크기, 및/또는 리드 데이터의 순서를 결정할 수 있다.
제2인터페이스(410)는, 도 8에 도시된 데이터 테이블에 따라, 리드 데이터를 제1메모리 장치(200)의 데이터 버퍼 영역(210)에 라이트한다고 가정한다.
제2메모리 장치(400)는 데이터 블록 오프셋(OFFSET0=1OFF=128), 데이터 크기 (LEN2=2*128), 및 리드 데이터(DATA2와 DATA3)를 포함하는 패킷(PACKET0)을 컨트롤러(300)로 전송한다(S412).
컨트롤 로직 회로(310)는 데이터 버퍼의 크기(=128)와 데이터 블록 오프셋 (=128)에 기초하여 인덱스(INDEX=1)를 계산한다(S414).
컨트롤 로직 회로(310)는 데이터 블록 오프셋(3OFF), 데이터 크기(LEN2=4*128), 및 데이터 버퍼의 크기(=128)에 기초하여 반복 회수 (NoI)를 계산한다(S416). 예컨대, 컨트롤 로직 회로(310)는 데이터 크기(LEN2=2*128)를 데이터 버퍼의 크기(=128)로 나눈 값, 2를 반복 회수(NoI=2)로 계산할 수 있다.
컨트롤 로직 회로(310)는 수학식 1에 따라 타겟 엔트리 어드레스 (ESA1=BD+1OFFB=9004)를 계산하고(S418), 타겟 엔트리 어드레스 (ESA1=BD+1OFFB=9004)를 제1DMA 컨트롤러(330)로 출력한다.
제1DMA 컨트롤러(330)는 타겟 엔트리 어드레스(ESA1=BD+1OFFB=9004)를 이용하여 버퍼 디스크립터 영역(230)에 포함된 엔트리(ENT1)를 읽어 온다(S420과 S422).
제1DMA 컨트롤러(330)는 엔트리(ENT1)에 포함된 물리 어드레스(PA1=SA+6S)를 제2DMA 컨트롤러(350)로 전송한다.
제2DMA 컨트롤러(350)는 물리 어드레스(PA1=SA+6S)에 대응되는 데이터 버퍼에 제2데이터(DATA2)를 라이트한다(S424).
컨트롤 로직 회로(310)는 타겟 엔트리 어드레스(ESA1)에 인접하는 인접 엔트리 어드레스(ESA2)를 계산한다. 예컨대, 컨트롤 로직 회로(310)는 타겟 엔트리 어드레스(ESA1)와 엔트리 크기에 기초하여 인접 엔트리 어드레스를 계산할 수 있다.
컨트롤 로직 회로(310)는 인접 엔트리 어드레스(ESA2=ESA1+ES=9008)를 제1DMA 컨트롤러(330)로 출력한다.
제1DMA 컨트롤러(330)는 인접 엔트리 어드레스(ESA2=BD+2OFFB=9008)를 이용하여 버퍼 디스크립터 영역(230)에 포함된 엔트리(ENT2)를 읽어 온다(S428과 S430).
제1DMA 컨트롤러(330)는 엔트리(ENT2)에 포함된 물리 어드레스(PA2=SA+1S)를 제2DMA 컨트롤러(350)로 전송한다.
제2DMA 컨트롤러(350)는 물리 어드레스(PA2=SA+1S)에 대응되는 데이터 버퍼에 제3데이터(DATA3)를 라이트한다(S432).
도 9에서는 설명의 편의를 위해 하나의 패킷(PACKET0)을 이용하여 각 리드 데이터(DATA2와 DATA3)를 각 데이터 버퍼에 라이트하는 방법이 도시되어 있으나, 다른 하나의 패킷(PACKET1)을 이용하여 각 리드 데이터(DATA4, DATA5, DATA6, 및 DATA7)를 각 데이터 버퍼에 라이트하는 방법을 설명하면 다음과 같다.
제2메모리 장치(400)는 데이터 블록 오프셋(OFFSET1=3OFF=3*128)과 데이터 크기(LEN2=4*128)를 포함하는 패킷(PACKET1)을 컨트롤러(300)로 전송한다(S412).
컨트롤 로직 회로(310)는 데이터 버퍼의 크기(=128)와 데이터 블록 오프셋 (=3*128)에 기초하여 인덱스(INDEX=3)를 계산한다(S414).
패킷(PACKETi)에 포함된 데이터 크기(LEN2)에 상응하는 데이터가 복수의 데이터 버퍼들에 라이트되므로, 컨트롤 로직 회로(310)는 데이터 블록 오프셋(3OFF), 데이터 크기(LEN2=4*128), 및 데이터 버퍼의 크기(=128)에 기초하여 반복 회수 (NoI)를 계산한다(S416). 예컨대, 컨트롤 로직 회로(310)는 데이터 크기 (LEN2=4*128)를 데이터 버퍼의 크기(=128)로 나눈 값, 4를 반복 회수(NoI=4)로 계산할 수 있다.
상술한 바와 같이, 시작 어드레스(ESA=BD+3OFFB)에 인접하는 3개의 인접 엔트리 어드레스들(BD+4OFFB, BD+5OFFB, 및 BD+6OFFB)이 순차적으로 계산되고, 순차적으로 리드된 각 엔트리(ENT3, ENT4, ENT5, 및 ENT6)에 포함된 각 물리 어드레스 (SA+9S, SA+12S, SA+10S, 및 SA+13S)를 이용하여 각 데이터(DATA4, DATA5, DATA6, 및 DATA7)가 순차적으로 제1메모리 장치(200)의 데이터 버퍼 영역(210)의 각 데이터 버퍼 라이트된다.
도 10은 본 발명의 실시 예에 따른 데이터 라이트 동작을 설명하기 위한 플로우차트이다.
도 1부터 도 4, 도 6부터 도 8, 및 도 10을 참조하면, 컨트롤러(300)는 제2메모리 장치(400)로부터 데이터 블록 오프셋(OFFSETi)을 포함하는 패킷(PACKETi)을 수신한다(S510).
컨트롤러(300)는 데이터 블록 오프셋(OFFSETi)을 이용하여 타겟 엔트리의 시작 어드레스(ESA)를 계산한다(S512).
컨트롤러(300)는 제1DMA 컨트롤러(330)를 이용하여 상기 타겟 엔트리의 시작 어드레스(ESA)에 상응하는 타겟 엔트리(ENT)를 읽어온다(S514).
컨트롤러(300)는 타겟 엔트리(ENT)에 포함된 물리 어드레스(PA)를 이용하여 데이터 버퍼에 저장된 데이터를 읽어온다(S516).
컨트롤러(300)는 읽어온 데이터(DATA)를 제2메모리 장치(400)로 전송하고, 제2메모리 장치(400)는 데이터를 메모리 코어(430)의 해당 블록에 라이트한다 (S518).
도 11은 본 발명의 실시 예에 따른 데이터 리드 동작을 설명하기 위한 플로우차트이다.
도 1, 도 2, 도 4, 도 5, 도 6, 도 8, 도 9, 및 도 11을 참조하면, 컨트롤러 (300)는 제2메모리 장치(400)로부터 데이터 블록 오프셋(OFFSETi)과 리드 데이터를 포함하는 패킷(PACKETi)을 수신한다(S610).
컨트롤러(300)는 데이터 블록 오프셋(OFFSETi)을 이용하여 타겟 엔트리의 시작 어드레스(ESA)를 계산한다(S612).
컨트롤러(300)는 제1DMA 컨트롤러(330)를 이용하여 상기 타겟 엔트리의 시작 어드레스(ESA)에 상응하는 타겟 엔트리(ENT)를 읽어온다(S614).
컨트롤러(300)는 타겟 엔트리(ENT)에 포함된 물리 어드레스(PA)를 이용하여 상기 리드 데이터를 데이터 버퍼에 라이트한다(S616)
도 12는 본 발명의 다른 실시 예에 따른 전자 시스템의 블록도를 나타낸다.
도 1부터 도 12를 참조하면, 전자 시스템(500)은 제1메모리 장치(200), 애플리케이션 프로세서(510), 제2메모리 장치(400), 및 디스플레이(600)를 포함한다.
애플리케이션 프로세서(510)는 컨트롤러(300), CPU(513), 및 디스플레이 컨트롤러(515)를 포함한다.
CPU(513)는 버스(511)를 통해 컨트롤러(300)와 디스플레이 컨트롤러(515)의 동작을 제어한다.
디스플레이 컨트롤러(515)의 제어에 따라, 각 메모리 장치(200과 400)에 포함된 데이터는 디스플레이(600)에서 디스플레이될 수 있다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100과 500; 전자 시스템
200; 제1메모리 장치
210; 데이터 버퍼 영역
211; 데이터 버퍼
230; 버퍼 디스크립터 영역
231; 엔트리
300; 컨트롤러
310; 컨트롤 로직 회로
330; 제1DMA 컨트롤러
350; 제2DMA 컨트롤러
370; 컨트롤러 인터페이스
400; 제2메모리 장치
410; 제2메모리 장치 인터페이스
430; 메모리 코어

Claims (15)

  1. 제2메모리 장치로부터 출력된 데이터 블록 오프셋을 이용하여 타겟 엔트리 어드레스를 계산하는 컨트롤 로직 회로; 및
    상기 타겟 엔트리 어드레스에 기초하여, 제1메모리 장치에 저장된 버퍼 디스크립터에 포함된 복수의 엔트리들 중에서 어느 하나의 엔트리를 리드하는 제1DMA(direct memory access) 컨트롤러를 포함하고,
    상기 컨트롤 로직 회로는,
    데이터 버퍼의 크기에 대한 상기 데이터 블록 오프셋의 정수 몫을 계산하고,
    아래의 수식,
    ESA=BD+Q*ES
    (여기서, ESA는 상기 타겟 엔트리 어드레스를 나타내고, BD는 상기 버퍼 디스크립터의 시작 어드레스를 나타내고, Q는 상기 정수 몫을 나타내고, ES는 상기 복수의 엔트리들 각각의 크기를 나타낸다)
    에 따라 상기 타겟 엔트리 어드레스를 계산하는 집적 회로.
  2. 제1항에 있어서,
    리드된 엔트리에 포함된 물리 어드레스를 이용하여, 상기 제1메모리 장치에 포함된 복수의 데이터 버퍼들 중에서 어느 하나의 데이터 버퍼에 저장된 데이터를 리드하고, 리드된 데이터를 상기 제2메모리 장치로 전송하는 제2DMA 컨트롤러를 더 포함하는 집적 회로.
  3. 제1항에 있어서,
    상기 제2메모리 장치로부터 상기 데이터 블록 오프셋과 함께 리드 데이터가 입력될 때,
    리드된 엔트리에 포함된 물리 어드레스를 이용하여, 상기 제1메모리 장치에 포함된 복수의 데이터 버퍼들 중에서 어느 하나의 데이터 버퍼에 상기 리드 데이터를 라이트하는 제2DMA 컨트롤러를 더 포함하는 집적 회로.
  4. 제1항에 있어서,
    상기 집적 회로는 JEDEC JESD223의 UFS(universal flash storage) 호스트 컨트롤러 인터페이스인 집적 회로.
  5. 제1항에 있어서,
    상기 버퍼 디스크립터는 JEDEC JESD223의 PRDT(physical region description table)인 집적 회로.
  6. 제1항의 상기 집적 회로를 포함하는 애플리케이션 프로세서.
  7. 복수의 엔트리들을 포함하는 버퍼 디스크립터와, 복수의 데이터 버퍼들을 포함하는 제1메모리 장치;
    제2메모리 장치; 및
    상기 제1메모리 장치와 상기 제2메모리 장치를 제어하는 컨트롤러를 포함하며,
    상기 컨트롤러는,
    상기 제2메모리 장치로부터 출력된 데이터 블록 오프셋을 이용하여 타겟 엔트리 어드레스를 계산하는 컨트롤 로직 회로; 및
    상기 타겟 엔트리 어드레스에 기초하여, 상기 복수의 엔트리들 중에서 어느 하나의 엔트리를 리드하는 제1DMA(direct memory access) 컨트롤러를 포함하고,
    상기 컨트롤 로직 회로는,
    데이터 버퍼의 크기에 대한 상기 데이터 블록 오프셋의 정수 몫을 계산하고,
    아래의 수식,
    ESA=BD+Q*ES
    (여기서, ESA는 상기 타겟 엔트리 어드레스를 나타내고, BD는 상기 버퍼 디스크립터의 시작 어드레스를 나타내고, Q는 상기 정수 몫을 나타내고, ES는 상기 복수의 엔트리들 각각의 크기를 나타낸다)
    에 따라 상기 타겟 엔트리 어드레스를 계산하는 전자 시스템.
  8. 제7항에 있어서,
    리드된 엔트리에 포함된 물리 어드레스를 이용하여, 상기 복수의 데이터 버퍼들 중에서 어느 하나의 데이터 버퍼에 저장된 데이터를 리드하고 리드된 데이터를 상기 제2메모리 장치로 전송하는 제2DMA 컨트롤러를 더 포함하는 전자 시스템.
  9. 제7항에 있어서,
    상기 제2메모리 장치로부터 상기 데이터 블록 오프셋과 함께 리드 데이터가 입력될 때,
    리드된 엔트리에 포함된 물리 어드레스를 이용하여, 상기 제1메모리 장치에 포함된 복수의 데이터 버퍼들 중에서 어느 하나의 데이터 버퍼에 상기 리드 데이터를 라이트하는 제2DMA 컨트롤러를 더 포함하는 전자 시스템.
  10. 제2저장 장치로부터 데이터 블록 오프셋을 수신하는 단계;
    상기 데이터 블록 오프셋을 이용하여, 제1저장 장치에 저장된 버퍼 디스크립터의 타겟 엔트리 어드레스를 획득하는 단계; 및
    상기 타겟 엔트리 어드레스에 기초하여, 상기 버퍼 디스크립터에 포함된 복수의 엔트리들 중에서 어느 하나의 엔트리를 리드하는 단계를 포함하고,
    상기 타겟 엔트리 어드레스를 획득하는 단계는,
    데이터 버퍼의 크기에 대한 상기 데이터 블록 오프셋의 정수 몫을 계산하는 단계;
    아래의 수식,
    ESA=BD+Q*ES
    (여기서, ESA는 상기 타겟 엔트리 어드레스를 나타내고, BD는 상기 버퍼 디스크립터의 시작 어드레스를 나타내고, Q는 상기 정수 몫을 나타내고, ES는 상기 복수의 엔트리들 각각의 크기를 나타낸다)
    에 기초하여 상기 타겟 엔트리 어드레스를 계산하는 단계를 포함하는 집적 회로의 작동 방법.
  11. 제10항에 있어서,
    상기 어느 하나의 엔트리에 포함된 물리 어드레스를 이용하여 상기 제1저장 장치에 포함된 복수의 데이터 버퍼들 중에서 어느 하나의 데이터 버퍼로부터 데이터를 리드하고, 상기 제2저장 장치로 상기 데이터를 전송하는 단계를 더 포함하는 집적 회로의 작동 방법.
  12. 제10항에 있어서,
    레지스터를 이용하여 상기 복수의 엔트리들 각각에 포함되고 대응되는 데이터 버퍼의 크기를 나타내는 값을 동일하게 설정하는 단계를 더 포함하는 집적 회로의 작동 방법.
  13. 제10항에 있어서,
    상기 데이터 블록 오프셋과 함께 리드 데이터를 수신하는 단계와, 리드된 상기 어느 하나의 엔트리에 포함된 물리 어드레스를 이용하여, 상기 제1저장 장치에 포함된 복수의 데이터 버퍼들 중에서 어느 하나의 데이터 버퍼에 상기 리드 데이터를 라이트하는 단계를 더 포함하는 집적 회로의 작동 방법.
  14. 제10항에 있어서,
    상기 데이터 블록 오프셋과 함께 데이터 크기를 수신하는 단계;
    상기 타겟 엔트리 어드레스, 및 데이터 버퍼의 크기와 상기 데이터 크기의 비율에 기초하여, 상기 타겟 엔트리 어드레스에 인접하는 인접 엔트리 어드레스를 계산하는 단계; 및
    리드된 상기 어느 하나의 엔트리에 인접하는 인접 엔트리를 상기 인접 엔트리 어드레스에 기초하여 리드하는 동안, 상기 리드된 엔트리에 포함된 물리 어드레스에 기초하여 상기 제1저장 장치에 포함된 복수의 데이터 버퍼들 중에서 어느 하나의 데이터 버퍼로부터 데이터를 리드하고, 리드된 데이터를 상기 제2저장 장치로 전송하는 단계를 더 포함하는 집적 회로의 작동 방법.
  15. 제10항에 있어서,
    상기 데이터 블록 오프셋과 함께 데이터 크기와 리드 데이터를 수신하는 단계;
    상기 타겟 엔트리 어드레스, 및 데이터 버퍼의 크기와 상기 데이터 크기의 비율에 기초하여, 상기 타겟 엔트리 어드레스에 인접하는 인접 엔트리 어드레스를 계산하는 단계; 및
    리드된 상기 어느 하나의 엔트리에 인접하는 인접 엔트리를 상기 인접 엔트리 어드레스에 기초하여 리드하는 동안 상기 어느 하나의 엔트리에 포함된 물리 어드레스에 기초하여 상기 제1저장 장치에 포함된 복수의 데이터 버퍼들 중에서 어느 하나의 데이터 버퍼에 상기 리드 데이터의 일부를 라이트하는 단계를 더 포함하는 집적 회로의 작동 방법.
KR1020130022168A 2013-02-28 2013-02-28 데이터 블록 오프셋에 기초하여 버퍼 디스크립터의 타겟 엔트리 어드레스를 계산할 수 있는 집적 회로와 상기 집적 회로를 포함하는 시스템 KR101861744B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020130022168A KR101861744B1 (ko) 2013-02-28 2013-02-28 데이터 블록 오프셋에 기초하여 버퍼 디스크립터의 타겟 엔트리 어드레스를 계산할 수 있는 집적 회로와 상기 집적 회로를 포함하는 시스템
US14/144,682 US9298613B2 (en) 2013-02-28 2013-12-31 Integrated circuit for computing target entry address of buffer descriptor based on data block offset, method of operating same, and system including same
DE102014102246.7A DE102014102246A1 (de) 2013-02-28 2014-02-21 Integrierte Schaltung zum Berechnen einer Zieleintragsadresse eines Puffer-Deskriptors basierend auf einem Datenblockabstand, Verfahren zum Betreiben desselben und System mit demselben
CN201410073091.1A CN104021090B (zh) 2013-02-28 2014-02-28 集成电路及其操作方法以及包括集成电路的系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130022168A KR101861744B1 (ko) 2013-02-28 2013-02-28 데이터 블록 오프셋에 기초하여 버퍼 디스크립터의 타겟 엔트리 어드레스를 계산할 수 있는 집적 회로와 상기 집적 회로를 포함하는 시스템

Publications (2)

Publication Number Publication Date
KR20140107935A KR20140107935A (ko) 2014-09-05
KR101861744B1 true KR101861744B1 (ko) 2018-05-29

Family

ID=51349631

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130022168A KR101861744B1 (ko) 2013-02-28 2013-02-28 데이터 블록 오프셋에 기초하여 버퍼 디스크립터의 타겟 엔트리 어드레스를 계산할 수 있는 집적 회로와 상기 집적 회로를 포함하는 시스템

Country Status (4)

Country Link
US (1) US9298613B2 (ko)
KR (1) KR101861744B1 (ko)
CN (1) CN104021090B (ko)
DE (1) DE102014102246A1 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101998347B1 (ko) * 2015-03-18 2019-10-01 전자부품연구원 디바이스 메모리 접근방법
US10860622B1 (en) 2015-04-06 2020-12-08 EMC IP Holding Company LLC Scalable recursive computation for pattern identification across distributed data processing nodes
US10015106B1 (en) 2015-04-06 2018-07-03 EMC IP Holding Company LLC Multi-cluster distributed data processing platform
US10425350B1 (en) 2015-04-06 2019-09-24 EMC IP Holding Company LLC Distributed catalog service for data processing platform
US10776404B2 (en) 2015-04-06 2020-09-15 EMC IP Holding Company LLC Scalable distributed computations utilizing multiple distinct computational frameworks
US10791063B1 (en) 2015-04-06 2020-09-29 EMC IP Holding Company LLC Scalable edge computing using devices with limited resources
US10706970B1 (en) 2015-04-06 2020-07-07 EMC IP Holding Company LLC Distributed data analytics
US10812341B1 (en) * 2015-04-06 2020-10-20 EMC IP Holding Company LLC Scalable recursive computation across distributed data processing nodes
CN106257434B (zh) * 2015-06-16 2019-04-30 深圳市中兴微电子技术有限公司 一种基于增强型外设互连协议总线的数据传输方法及装置
US10656861B1 (en) 2015-12-29 2020-05-19 EMC IP Holding Company LLC Scalable distributed in-memory computation
JP6602684B2 (ja) * 2016-02-15 2019-11-06 株式会社東芝 制御装置および制御方法
KR102395190B1 (ko) * 2017-07-31 2022-05-06 삼성전자주식회사 호스트와 인터페이스를 수행하는 스토리지 장치, 호스트 및 스토리지 장치의 동작방법
KR20190086177A (ko) 2018-01-12 2019-07-22 에스케이하이닉스 주식회사 컨트롤러 및 그것의 동작방법

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7577782B2 (en) 1996-02-02 2009-08-18 Sony Corporation Application programming interface for data transfer and bus management over a bus structure
KR20000026337A (ko) 1998-10-20 2000-05-15 윤종용 수신용 버퍼 디스크립터
US6324599B1 (en) * 1999-01-11 2001-11-27 Oak Technology Computer system and method for tracking DMA transferred data within a read-ahead local buffer without interrupting the host processor
TW453069B (en) * 2000-01-05 2001-09-01 Via Tech Inc Packet accessing method with parallel multiplexing feature
KR100403620B1 (ko) 2001-02-28 2003-10-30 삼성전자주식회사 채널 활용율을 높이는 통신 시스템 및 그 방법
US6668311B2 (en) * 2001-07-30 2003-12-23 Intel Corporation Method for memory allocation and management using push/pop apparatus
US7307998B1 (en) 2002-08-27 2007-12-11 3Com Corporation Computer system and network interface supporting dynamically optimized receive buffer queues
JPWO2004057481A1 (ja) * 2002-12-20 2006-04-27 富士通株式会社 Dma制御装置、dma制御方法、dma制御プログラム
US7660908B2 (en) 2003-05-01 2010-02-09 International Business Machines Corporation Implementing virtual packet storage via packet work area
US8077778B2 (en) 2003-10-31 2011-12-13 Broadcom Corporation Video display and decode utilizing off-chip processor and DRAM
US8161197B2 (en) 2003-12-19 2012-04-17 Broadcom Corporation Method and system for efficient buffer management for layer 2 (L2) through layer 5 (L5) network interface controller applications
US7343434B2 (en) 2005-03-31 2008-03-11 Intel Corporation Buffer management within SLS (simple load store) apertures for inter-endpoint communication in advanced switching fabric
KR100861931B1 (ko) 2005-06-10 2008-10-09 삼성전자주식회사 패킷 수집에 적합한 버퍼 디스크립터 구성 장치 및 방법
US7496699B2 (en) * 2005-06-17 2009-02-24 Level 5 Networks, Inc. DMA descriptor queue read and cache write pointer arrangement
KR100661519B1 (ko) 2005-12-21 2006-12-27 엘지노텔 주식회사 코어 프로세서와 통신 프로세서의 버퍼 디스크립터 미스매치 복구 기능을 가지는 프로세서 장치 및 그 방법
KR100881597B1 (ko) 2007-02-02 2009-02-03 지인정보기술 주식회사 읽기 요청 처리 시스템 및 방법
US7813342B2 (en) * 2007-03-26 2010-10-12 Gadelrab Serag Method and apparatus for writing network packets into computer memory
EP2324430A4 (en) * 2008-08-06 2012-07-25 Aspen Acquisition Corp DIRECT MEMORY ACCESS MOTOR (DMA) THAT CAN BE STOPPED AND RESTARTED
KR101248035B1 (ko) 2011-08-25 2013-04-09 강성삼 오토차량의 안전제동장치

Also Published As

Publication number Publication date
KR20140107935A (ko) 2014-09-05
US9298613B2 (en) 2016-03-29
DE102014102246A1 (de) 2014-08-28
US20140244908A1 (en) 2014-08-28
CN104021090A (zh) 2014-09-03
CN104021090B (zh) 2019-07-19

Similar Documents

Publication Publication Date Title
KR101861744B1 (ko) 데이터 블록 오프셋에 기초하여 버퍼 디스크립터의 타겟 엔트리 어드레스를 계산할 수 있는 집적 회로와 상기 집적 회로를 포함하는 시스템
US11573915B2 (en) Storage device for interfacing with host and method of operating the host and the storage device
US10943183B2 (en) Electronics device performing software training on memory channel and memory channel training method thereof
US10983729B2 (en) Method and apparatus for performing multi-object transformations on a storage device
TWI699646B (zh) 記憶體裝置、記憶體定址方法與包括非暫時性儲存媒體的物品
US10372446B2 (en) Technology to dynamically modulate memory device read granularity
CN104781801A (zh) 使固态驱动器配置成采用存储模式或存储器模式操作的技术
US20180018095A1 (en) Method of operating storage device and method of operating data processing system including the device
US20170255565A1 (en) Method and apparatus for providing a contiguously addressable memory region by remapping an address space
US8510759B1 (en) Scatter gather emulation
US20170031811A1 (en) Control method for non-volatile memory and associated computer system
US9471961B2 (en) Method for rotating an original image using self-learning and apparatuses performing the method
US10558255B2 (en) Hybrid hardware/firmware power management controller for media devices
KR20150142250A (ko) 컨트롤러의 작동 방법과 상기 컨트롤러를 포함하는 장치의 작동 방법
US20150026394A1 (en) Memory system and method of operating the same
US20210405875A1 (en) Data storage device and system
US20150347312A1 (en) Controller for controlling non-volatile memory and semiconductor device including the same
US10572382B2 (en) Method of operating data storage device and method of operating data processing system including the same

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
GRNT Written decision to grant