KR102181441B1 - 복수의 기능 블록들을 포함하는 반도체 장치 - Google Patents

복수의 기능 블록들을 포함하는 반도체 장치 Download PDF

Info

Publication number
KR102181441B1
KR102181441B1 KR1020140044925A KR20140044925A KR102181441B1 KR 102181441 B1 KR102181441 B1 KR 102181441B1 KR 1020140044925 A KR1020140044925 A KR 1020140044925A KR 20140044925 A KR20140044925 A KR 20140044925A KR 102181441 B1 KR102181441 B1 KR 102181441B1
Authority
KR
South Korea
Prior art keywords
read
buffer
management unit
index
data
Prior art date
Application number
KR1020140044925A
Other languages
English (en)
Other versions
KR20150119565A (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 KR1020140044925A priority Critical patent/KR102181441B1/ko
Priority to US14/483,912 priority patent/US9798492B2/en
Publication of KR20150119565A publication Critical patent/KR20150119565A/ko
Application granted granted Critical
Publication of KR102181441B1 publication Critical patent/KR102181441B1/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/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Transfer Systems (AREA)
  • Memory System (AREA)

Abstract

본 발명의 실시 예에 따른 반도체 장치는 버퍼 메모리에 연결되는 데이터 버스, 데이터 버스를 통해 버퍼 메모리에 액세스하도록 구성되는 복수의 기능 블록들, 버퍼 관리 유닛, 그리고 복수의 기능 블록들을 각각 상기 버퍼 관리 유닛에 연결하는 복수의 다이렉트 인터페이스 채널들을 포함한다. 복수의 기능 블록들 각각은 버퍼 메모리에 대한 액세스를 해당 다이렉트 인터페이스 채널을 통해 버퍼 관리 유닛에 문의하고, 버퍼 관리 유닛으로부터 해당 다이렉트 인터페이스 채널을 통해 전송되는 문의 결과에 따라 데이터 버스를 통해 버퍼 메모리에 액세스한다.

Description

복수의 기능 블록들을 포함하는 반도체 장치{SEMICONDUCTOR DEVICE INCLUDING PLURALITY OF FUNCTION BLOCKS}
본 발명은 전자 장치에 관한 것으로, 좀 더 구체적으로는 복수의 기능 블록들을 포함하는 반도체 장치에 관한 것이다.
반도체 장치(semiconductor device)는 복수의 기능 블록들을 포함할 수 있다. 그러한 복수의 기능 블록들은 시스템 버스에 연결되고, 상호 통신할 수 있다.
반도체 장치 내에 주 메모리가 더 포함될 수 있다. 복수의 기능 블록들은 중앙 처리 유닛(Central Processing Unit)의 제어에 따라 주 메모리에 액세스할 수 있다. 즉 복수의 기능 블록들은 주 메모리에 데이터를 쓰고, 주 메모리로부터 데이터를 읽을 수 있다.
이러한 데이터 전송에 있어서 중앙 처리 유닛의 관여 정도를 경감시키기 위해 다이렉트 메모리 액세스(Direct Memory Access)가 도입되었다. 다이렉트 메모리 액세스 유닛은 시스템 버스를 통해 주 메모리와 복수의 기능 블록들 간 데이터를 전송하는 기능을 수행한다. 다이렉트 메모리 액세스에 있어서, 중앙 처리 유닛의 관여 정도는 데이터 전송을 셋업(set up)하고 데이터 전송의 완료를 정리하는 정도로 감소하게 된다.
이러한 다이렉트 메모리 액세스 유닛은 각 기능 블록에 제공될 수 있다. 이때 다이렉트 메모리 액세스 유닛들은 개별적으로 주 메모리에 액세스할 것이다. 다만 다이렉트 메모리 액세스 유닛들이 동시에 주 메모리에 액세스하는 경우, 이를 중재하기 위한 구성이 요구된다.
본 발명의 실시 예는 복수의 기능 블록들이 버퍼 메모리에 효율적으로 액세스하도록 함으로써 반도체 장치의 동작 속도를 향상시키기 위한 것이다.
본 발명의 실시 예에 따른 반도체 메모리 장치는 버퍼 메모리; 상기 버퍼 메모리에 연결되는 데이터 버스; 상기 데이터 버스를 통해 상기 버퍼 메모리에 액세스하도록 구성되는 복수의 기능 블록들; 버퍼 관리 유닛; 및 상기 복수의 기능 블록들을 각각 상기 버퍼 관리 유닛에 연결하는 복수의 다이렉트 인터페이스 채널들을 포함한다. 상기 복수의 기능 블록들 각각은 상기 버퍼 메모리에 대한 액세스를 해당 다이렉트 인터페이스 채널을 통해 상기 버퍼 관리 유닛에 문의하고, 상기 버퍼 관리 유닛으로부터 상기 해당 다이렉트 인터페이스 채널을 통해 전송되는 문의 결과에 따라 상기 데이터 버스를 통해 상기 버퍼 메모리에 액세스하도록 구성된다.
실시 예로서, 상기 버퍼 관리 유닛 및 상기 복수의 기능 블록들을 연결하는 커맨드 버스; 및 상기 커맨드 버스를 통해 상기 버퍼 관리 유닛 및 상기 복수의 기능 블록들을 제어하도록 구성되는 중앙 처리 유닛이 더 포함될 수 있다.
실시 예로서, 상기 복수의 기능 블록들 중 제 1 기능 블록은 상기 버퍼 메모리의 특정 저장 영역에 대한 쓰기를 제 1 다이렉트 인터페이스 채널을 통해 상기 버퍼 관리 유닛에 문의하고, 상기 버퍼 관리 유닛으로부터 상기 제 1 다이렉트 인터페이스 채널을 통해 전송되는 제 1 승인 신호에 따라 데이터를 상기 데이터 버스를 통해 상기 특정 저장 영역에 쓱 수 있다.
실시 예로서, 상기 복수의 기능 블록들 중 제 2 기능 블록은 상기 특정 저장 영역에 대한 읽기를 제 2 다이렉트 인터페이스 채널을 통해 상기 버퍼 관리 유닛에 문의하고, 상기 버퍼 관리 유닛으로부터 상기 제 2 다이렉트 인터페이스 채널을 통해 전송되는 제 2 승인 신호에 따라 상기 특정 저장 영역에 쓰여진 상기 데이터를 상기 데이터 버스를 통해 읽을 수 있다.
실시 예로서, 상기 제 1 기능 블록은 호스트와 통신하는 호스트 인터페이스로서 동작하고, 상기 제 2 기능 블록은 불휘발성 메모리 장치와 통신하는 메모리 인터페이스로서 동작할 수 있다. 이때, 상기 특정 저장 영역에 쓰여진 상기 데이터는 상기 호스트로부터 수신된 데이터이고, 상기 메모리 인터페이스는 상기 읽어진 데이터를 상기 불휘발성 메모리 장치에 저장할 수 있다.
실시 예로서, 상기 제 1 기능 블록은 불휘발성 메모리 장치와 통신하는 메모리 인터페이스로서 동작하고, 상기 제 2 기능 블록은 호스트와 통신하는 호스트 인터페이스로서 동작할 수 있다. 이때, 상기 특정 저장 영역에 쓰여진 상기 데이터는 상기 불휘발성 메모리 장치로부터 읽혀진 데이터이고, 상기 호스트 인터페이스는 상기 읽어진 데이터를 상기 호스트로 출력할 수 있다.
실시 예로서, 상기 복수의 기능 블록들 중 어느 하나는 상기 버퍼 메모리의 제 1 저장 영역에 대한 읽기를 해당 다이렉트 인터페이스 채널을 통해 상기 버퍼 관리 유닛에 문의하고, 상기 버퍼 관리 유닛으로부터 상기 해당 다이렉트 인터페이스 채널을 통해 전송되는 문의 결과에 따라 상기 특정 저장 영역으로부터 상기 데이터 버스를 통해 데이터를 읽을 수 있다.
실시 예로서, 상기 복수의 기능 블록들 중 상기 어느 하나는 상기 버퍼 메모리의 제 2 저장 영역에 대한 쓰기를 상기 해당 다이렉트 인터페이스 채널을 통해 상기 버퍼 관리 유닛에 문의하고, 상기 버퍼 관리 유닛으로부터 상기 해당 다이렉트 인터페이스 채널을 통해 전송되는 문의 결과에 따라 상기 데이터 버스를 통해 상기 제 2 저장 영역에 상기 읽어진 데이터를 쓸 수 있다.
실시 예로서, 상기 버퍼 관리 유닛은 상태 필드를 포함하는 버퍼 관리 테이블을 저장하도록 구성되는 레지스터를 포함하되, 상기 상태 필드는 복수의 인덱스들에 각각 대응하는 상태 값들을 포함할 수 있다.
실시 예로서, 상기 복수의 기능 블록들 중 제 1 기능 블록은 쓰기 요청 커맨드 및 쓰기 인덱스를 상기 버퍼 관리 유닛에 전송함으로써 상기 버퍼 메모리 중 상기 쓰기 인덱스에 해당하는 저장 영역에 대한 쓰기를 문의하고, 상기 버퍼 관리 유닛은 상기 복수의 인덱스들 중 상기 쓰기 인덱스와 일치하는 인덱스를 검출하고, 상기 쓰기 인덱스에 대응하는 상태 값을 참조하여 승인 신호를 상기 문의 결과로서 상기 제 1 기능 블록에 전송하되, 상기 승인 신호는 상기 검출된 인덱스에 대응하는 상기 상태 값이 무효(invalid)일 때 인에이블될 수 있다.
실시 예로서, 상기 제 1 기능 블록은 상기 승인 신호가 인에이블될 때 상기 버퍼 메모리 중 상기 쓰기 인덱스에 해당하는 상기 저장 영역에 데이터를 쓰고, 상기 승인 신호가 디스에이블될 때 상기 쓰기를 수행하지 않을 수 있다.
실시 예로서, 상기 제 1 기능 블록은 상기 쓰기 인덱스에 해당하는 상기 저장 영역에 상기 데이터를 쓴 후에, 쓰기 업데이트 커맨드 및 업데이트 인덱스를 상기 버퍼 관리 유닛에 전송하고, 상기 버퍼 관리 유닛은 상기 복수의 인덱스들 중 상기 업데이트 인덱스와 일치하는 인덱스를 판별하고 상기 업데이트 인덱스에 대응하는 상태 값을 유효로 변경할 수 있다. 이때 상기 쓰기 인덱스와 상기 업데이트 인덱스는 동일하다.
실시 예로서, 상기 복수의 기능 블록들 중 제 2 기능 블록은 읽기 요청 커맨드 및 읽기 인덱스를 상기 버퍼 관리 유닛에 전송함으로써 상기 버퍼 메모리 중 상기 읽기 인덱스에 해당하는 저장 영역에 대한 읽기를 문의하고, 상기 버퍼 관리 유닛은 상기 복수의 인덱스들 중 상기 읽기 인덱스와 일치하는 인덱스를 검출하고, 상기 읽기 인덱스에 대응하는 상태 값을 참조하여 승인 신호를 상기 문의 결과로서 상기 제 2 기능 블록에 전송하되, 상기 승인 신호는 상기 검출된 인덱스에 대응하는 상기 상태 값이 유효일 때 인에이블될 수 있다.
실시 예로서, 상기 제 2 기능 블록은 상기 승인 신호가 인에이블될 때 상기 읽기 인덱스에 해당하는 상기 저장 영역의 데이터를 읽고, 상기 승인 신호가 디스에이블될 때 상기 읽기를 수행하지 않을 수 있다.
실시 예로서, 상기 제 2 기능 블록은 상기 읽기 인덱스에 해당하는 상기 저장 영역에 저장된 상기 데이터를 읽은 후에, 읽기 업데이트 커맨드 및 업데이트 인덱스를 상기 버퍼 관리 유닛에 전송하고, 상기 버퍼 관리 유닛은 상기 복수의 인덱스들 중 상기 업데이트 인덱스와 일치하는 인덱스를 판별하고 상기 업데이트 인덱스에 대응하는 상태 값을 무효로 변경할 수 있다. 이때 상기 읽기 인덱스와 상기 업데이트 인덱스는 동일할 수 있다.
본 발명의 다른 실시 예에 따른 반도체 장치는 버퍼 메모리; 상기 버퍼 메모리에 연결되는 데이터 버스; 호스트와 통신하되, 상기 데이터 버스를 통해 상기 버퍼 메모리에 액세스하도록 구성되는 호스트 인터페이스; 불휘발성 메모리 장치와 통신하되, 상기 데이터 버스를 통해 상기 버퍼 메모리에 액세스하도록 구성되는 메모리 인터페이스; 버퍼 관리 유닛; 상기 호스트 인터페이스를 상기 버퍼 관리 유닛에 연결하는 제 1 다이렉트 인터페이스 채널; 및 상기 메모리 인터페이스를 상기 버퍼 관리 유닛에 연결하는 제 2 다이렉트 인터페이스 채널을 포함한다. 상기 호스트 인터페이스 및 상기 메모리 인터페이스 각각은 상기 버퍼 메모리에 대한 액세스를 해당 다이렉트 인터페이스 채널을 통해 상기 버퍼 관리 유닛에 문의하고, 상기 버퍼 관리 유닛으로부터 상기 해당 다이렉트 인터페이스 채널을 통해 전송되는 문의 결과에 따라 상기 데이터 버스를 통해 상기 버퍼 메모리에 액세스하도록 구성된다.
상기 버퍼 메모리는 쓰기 버퍼 메모리 및 읽기 버퍼 메모리를 포함할 수 있다.
실시 예로서, 상기 호스트 인터페이스는 상기 쓰기 버퍼 메모리에 대한 쓰기를 상기 제 1 다이렉트 인터페이스 채널을 통해 상기 버퍼 관리 유닛에 문의하고, 상기 버퍼 관리 유닛으로부터 상기 제 1 다이렉트 인터페이스 채널을 통해 전송되는 제 1 승인 신호에 따라 상기 호스트로부터의 데이터를 상기 데이터 버스를 통해 상기 쓰기 버퍼 메모리에 저장하도록 구성될 수 있다. 상기 메모리 인터페이스는 상기 읽기 버퍼 메모리에 대한 쓰기를 상기 제 2 다이렉트 인터페이스 채널을 통해 상기 버퍼 관리 유닛에 문의하고, 상기 버퍼 관리 유닛으로부터 상기 제 2 다이렉트 인터페이스 채널을 통해 전송되는 제 2 승인 신호에 따라 상기 불휘발성 메모리 장치로부터 읽혀진 데이터를 상기 데이터 버스를 통해 상기 읽기 버퍼 메모리에 저장하도록 구성될 수 있다.
실시 예로서, 상기 메모리 인터페이스는 상기 쓰기 버퍼 메모리에 대한 읽기를 상기 제 2 다이렉트 인터페이스 채널을 통해 상기 버퍼 관리 유닛에 문의하고, 상기 버퍼 관리 유닛으로부터 상기 제 2 다이렉트 인터페이스 채널을 통해 전송되는 제 3 승인 신호에 따라 상기 쓰기 버퍼 메모리에 저장된 상기 데이터를 상기 데이터 버스를 통해 읽도록 구성될 수 있다. 이때 상기 읽혀진 데이터는 상기 불휘발성 메모리 장치에 저장될 것이다.
실시 예로서, 상기 호스트 인터페이스는 상기 읽기 버퍼 메모리에 대한 읽기를 상기 제 1 다이렉트 인터페이스 채널을 통해 상기 버퍼 관리 유닛에 문의하고, 상기 버퍼 관리 유닛으로부터 상기 제 1 다이렉트 인터페이스 채널을 통해 전송되는 제 4 승인 신호에 따라 상기 읽기 버퍼 메모리에 저장된 상기 데이터를 상기 데이터 버스를 통해 읽도록 구성될 수 있다. 이때 상기 읽혀진 데이터는 상기 호스트로 출력될 것이다.
본 발명의 실시 예는 복수의 기능 블록들이 버퍼 메모리에 효율적으로 액세스하도록 함으로써 반도체 장치의 동작 속도는 향상된다.
도 1은 본 발명의 실시 예에 따른 반도체 장치를 보여주는 블록도이다.
도 2는 도 1의 버퍼 관리 유닛을 보여주는 블록도이다.
도 3은 각 기능 블록이 버퍼 메모리에 데이터를 쓰는 방법을 보여주는 흐름도이다.
도 4는 각 기능 블록이 버퍼 메모리의 데이터를 읽는 방법을 보여주는 흐름도이다.
도 5 내지 도 9는 제 1 기능 블록이 버퍼 메모리에 데이터를 쓰고, 그 다음 제 2 기능 블록이 버퍼 메모리에 쓰여진 데이터를 읽는 과정을 설명하기 위한 도면들이다.
도 10은 제 1 내지 제 3 기능 블록들 중 어느 하나의 다이렉트 메모리 액세스 유닛 및 버퍼 요청기를 좀 더 구체적으로 보여주는 블록도이다.
도 11은 버퍼 메모리에 대한 쓰기 시 다이렉트 메모리 액세스 유닛 및 버퍼 요청기의 동작 방법을 보여주는 타이밍도이다.
도 12는 버퍼 메모리에 대한 읽기 시 다이렉트 메모리 액세스 유닛 및 버퍼 요청기의 동작 방법을 보여주는 타이밍도이다.
도 13은 본 발명의 다른 실시 예에 따른 반도체 장치를 보여주는 블록도이다.
도 14는 도 13의 버퍼 관리 유닛을 보여주는 블록도이다.
도 15는 도 13의 호스트 인터페이스, 제 1 및 제 2 메모리 인터페이스들 중 어느 하나의 다이렉트 메모리 액세스 유닛 및 버퍼 요청기를 좀 더 구체적으로 보여주는 블록도이다.
도 16은 본 발명의 또 다른 실시 예에 따른 반도체 장치를 보여주는 블록도이다.
이하, 본 발명에 따른 바람직한 실시 예를 첨부한 도면을 참조하여 상세히 설명한다. 하기의 설명에서는 본 발명에 따른 동작을 이해하는데 필요한 부분만이 설명되며 그 이외 부분의 설명은 본 발명의 요지를 모호하지 않도록 하기 위해 생략될 것이라는 것을 유의하여야 한다. 또한 본 발명은 여기에서 설명되는 실시 예에 한정되지 않고 다른 형태로 구체화될 수도 있다. 단지, 여기에서 설명되는 실시 예은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여 제공되는 것이다.
도 1은 본 발명의 실시 예에 따른 반도체 장치(100)를 보여주는 블록도이다.
도 1을 참조하면, 반도체 장치(100)는 버퍼 관리 유닛(110), 복수의 기능 블록들(121~123), 제어 버스(130), 중앙 처리 유닛(Central Processing Unit, 140), 데이터 버스(150), 및 버퍼 메모리(160)를 포함한다.
버퍼 관리 유닛(110)은 제어 버스(130)를 통해 중앙 처리 유닛(140)에 연결된다. 버퍼 관리 유닛(110)은 중앙 처리 유닛(140)의 제어에 응답하여 동작한다. 버퍼 관리 유닛(110)은 제 1 내지 제 3 다이렉트 인터페이스 채널들(DI1~DI3)을 통해 각각 제 1 내지 제 3 기능 블록들(121~123)에 연결된다.
버퍼 관리 유닛(110)은 버퍼 메모리(160)의 저장 공간을 관리한다. 버퍼 관리 유닛(110)은 버퍼 메모리(160) 내 복수의 저장 영역들의 데이터가 유효(valid)한지 또는 무효(invalid)한지 여부를 나타내는 상태 값들을 내부적으로 저장한다. 이러한 상태 값들에 따라, 버퍼 관리 유닛(110)은 각 기능 블록이 버퍼 메모리(160)에 엑세스하는 것을 승인한다. 이는 도 2를 참조하여 더 상세히 설명된다.
제 1 내지 제 3 기능 블록들(121~123)은 제어 버스(130)를 통해 중앙 처리 유닛(140)에 연결된다. 제 1 내지 제 3 기능 블록들(121~123) 각각은 중앙 처리 유닛(140)으로부터 제어 버스(130)를 통한 제어에 응답하여 동작한다.
제 1 내지 제 3 기능 블록들(121~123)은 데이터 버스(150)를 통해 버퍼 메모리(160)에 연결되어 있다. 제 1 내지 제 3 기능 블록들(121~123)은 각각 제 1 내지 제 3 다이렉트 메모리 액세스(Direct Memory Access; DMA) 유닛들(DMA1~DMA3)을 포함한다. 각 기능 블록은 해당 다이렉트 메모리 액세스 유닛을 이용하여 버퍼 메모리(160)에 액세스한다. 각 다이렉트 메모리 액세스 유닛은 데이터 버스(150)를 통해 버퍼 메모리(160)에 데이터를 쓰고, 데이터 버스(150)를 통해 버퍼 메모리(160)의 데이터를 읽을 수 있다.
제 1 내지 제 3 기능 블록(121~123)은 각각 제 1 내지 제 3 다이렉트 인터페이스 채널들(DI1~DI3)을 통해 버퍼 관리 유닛(110)에 연결된다. 제 1 내지 제 3 기능 블록(121~123)은 각각 제 1 내지 제 3 버퍼 요청기(BR1~BR3)를 포함한다. 각 버퍼 요청기는 해당 다이렉트 인터페이스 채널을 통해 액세스 요청을 전송함으로써, 버퍼 메모리(160)에 대한 액세스를 버퍼 관리 유닛(110)에 문의한다. 그리고 각 기능 블록은 버퍼 관리 유닛(110)으로부터 해당 버퍼 요청기에 수신되는 문의 결과에 따라, 데이터 버스(150)를 통해 버퍼 메모리(160)에 액세스한다.
제어 버스(130)는 중앙 처리 유닛(140)을 버퍼 관리 유닛(110) 및 제 1 내지 제 3 기능 블록들(121~123)에 연결한다. 실시 예로서, 제어 버스(130)는 AHB(Advanced High performance Bus) 버스일 수 있다.
중앙 처리 유닛(140)은 반도체 장치(100)의 제반 동작을 제어하도록 구성된다. 중앙 처리 유닛(140)은 제어 버스(130)를 통해 버퍼 관리 유닛(110) 및 제 1 내지 제 3 기능 블록들(121~123)을 제어한다.
예시적인 실시 예로서, 중앙 처리 유닛(140)은 제어 버스(130)를 통해 버퍼 관리 유닛(110)에 저장된 상태 값들을 주기적으로 조회하고, 상태 값들에 따라 버퍼 메모리(160) 중 액세스할 저장 영역을 각 기능 블록에 알릴 수 있다. 예를 들면, 중앙 처리 유닛(140)은 무효(invalid)를 나타내는 상태 값에 대응하는 저장 영역을 제 1 기능 블록(121)에 알릴 수 있다. 제 1 기능 블록(121)은 해당 저장 영역에 대한 쓰기가 가능한지 여부를 버퍼 관리 유닛(110)에 문의하고, 문의 결과에 따라 해당 저장 영역에 데이터를 쓸 것이다. 중앙 처리 유닛(140)은 유효(valid)를 나타내는 상태 값에 대응하는 저장 영역을 제 2 기능 블록(122) 또는 제 3 기능 블록(123)에 알릴 수 있다. 제 2 기능 블록(122) 또는 제 3 기능 블록(123)은 해당 저장 영역에 대한 읽기가 가능한지 여부를 버퍼 관리 유닛(110)에 문의하고 문의 결과에 따라 해당 저장 영역으로부터 데이터를 읽을 것이다.
실시 예로서, 중앙 처리 유닛(140)은 펌웨어를 저장하는 별도의 메모리(미도시)에 연결되고, 그러한 메모리로부터의 펌웨어에 따라 동작할 수 있다.
도 1에는 반도체 장치(100)에 하나의 중앙 처리 유닛(140)이 제공되는 것이 도시된다. 그러나 이는 예시적인 것으로서, 반도체 장치(100)에는 서로 다른 기능들을 수행하는 2 이상의 중앙 처리 유닛들이 제공될 수 있다. 2 이상의 중앙 처리 유닛들이 제공되는 경우에, 반도체 장치(100)의 동작 속도는 획기적으로 개선된다.
데이터 버스(150)는 제 1 내지 제 3 기능 블록들(121~123)을 버퍼 메모리(160)에 연결한다. 제 1 내지 제 3 기능 블록들(121~123)은 데이터 버스(150)를 통해 버퍼 메모리(160)에 데이터를 쓰고, 데이터 버스(150)를 통해 버퍼 메모리(160)로부터 데이터를 읽는다. 실시 예로서, 데이터 버스(150)는 AXI(Advanced eXtensible Interface) 프로토콜에 따른 버스일 수 있다.
버퍼 메모리(160)는 데이터 버스(150)에 연결된다. 버퍼 메모리(160)는 휘발성 메모리이다. 실시 예로서, 버퍼 메모리(160)는 SRAM (Static RAM), DRAM (Dynamic RAM) 및 SDRAM (Synchronous DRAM) 등으로 구성될 수 있다.
본 발명의 실시 예에 따르면, 버퍼 메모리(160)에 대한 액세스가 가능한지 여부를 문의하기 위한 별도의 다이렉트 인터페이스 채널이 제공된다. 각 기능 블록은 해당 다이렉트 인터페이스 채널을 통해 버퍼 관리 유닛(110)에 버퍼 메모리(160)에 대한 액세스를 문의하고, 데이터 버스(150)를 통해 버퍼 메모리(160)에 액세스한다. 즉, 각 기능 블록은 상기 문의를 위해 데이터 버스(150) 또는 제어 버스(130)를 거치지 않고 다이렉트 인터페이스 채널을 이용할 수 있다. 따라서 상기 문의에 소요되는 시간은 단축될 것이다. 또한, 상기 문의는 데이터 버스(150) 또는 제어 버스(130)를 통해 전달되지 않을 것이다. 따라서 데이터 버스(150) 또는 제어 버스(130)에 가해지는 로드는 감소할 수 있다.
따라서 반도체 장치(100)의 동작 속도는 향상될 것이다.
도 2는 도 1의 버퍼 관리 유닛(110)을 보여주는 블록도이다.
도 1 및 도 2를 참조하면, 버퍼 관리 유닛(110)은 입출력 회로(111), 레지스터 관리기(113) 및 레지스터(114)를 포함한다. 입출력 회로(111)는 다이렉트 인터페이스 채널(DI)을 통해 해당 기능 블록에 연결된다. 다이렉트 인터페이스 채널(DI)은 도 1의 제 1 내지 제 3 다이렉트 인터페이스 채널들(DI1~DI3) 중 어느 하나를 나타낸다. 나머지 다이렉트 인터페이스 채널들은, 설명의 편의를 위해 생략된다.
입출력 회로(111)는 다이렉트 인터페이스 채널(DI)을 통해 해당 기능 블록으로부터 액세스 요청을 수신하고 수신된 액세스 요청을 레지스터 관리기(113)에 전달한다. 입출력 회로(111)는 레지스터 관리기(113)로부터 승인 신호를 수신하고, 수신된 승인 신호를 다이렉트 인터페이스 채널(DI)을 통해 해당 기능 블록으로 승인 신호를 전송한다.
레지스터 관리기(113)는 입출력 회로(111) 및 레지스터(114)에 연결된다. 레지스터 관리기(113)는 레지스터(114)를 관리한다.
레지스터(114)는 버퍼 관리 테이블(BMT)을 저장한다. 버퍼 관리 테이블(BMT)은 인덱스 필드(INDEX), 소유권 필드(OWN), 상태 필드(STATUS)를 포함한다. 제 1 내지 제 n 어드레스(ADDR1~ADDRn)은 각각 버퍼 메모리(160) 내 복수의 저장 영역들을 가리킨다.
인덱스 필드(INDEX)는 제 1 내지 제 n 인덱스들(IDX1~IDXn)을 포함한다. 인덱스는 버퍼 메모리(160)의 저장 영역들을 순환적(circular)으로 관리하여 제한된 버퍼 메모리(160)의 저장 공간을 효율적으로 사용하기 위해 제공된다. 제 1 내지 제 n 인덱스들(IDX1~IDXn)은 각각 제 1 내지 제 n 어드레스(ADDR1~ADDRn)에 대응한다. 따라서 제 1 내지 제 n 인덱스들(IDX1~IDXn)은 각각 버퍼 메모리(160) 내 저장 영역들에 대응하게 된다.
소유권 필드(OWN)는 제 1 내지 제 n 인덱스들(IDX1~IDXn)에 각각 대응하는 제 1 내지 제 n 소유권 값들(OW1~OWn)을 포함한다. 각 소유권 값은 버퍼 메모리(160) 내 해당 저장 영역을 액세스하고 있는 기능 블록을 나타낸다. 예를 들면, 해당 저장 영역이 액세스되지 않을 때 소유권 값은 '00'이고, 해당 저장 영역이 제 1 기능 블록(121)에 의해 액세스될 때 소유권 값은 '01'이고, 해당 저장 영역이 제 2 기능 블록(122)에 의해 액세스될 때 소유권 값은 '10'이고, 해당 저장 영역이 제 3 기능 블록(123)에 의해 액세스될 때 소유권 값은 '11'이다.
상태 필드(STATUS)는 제 1 내지 제 n 인덱스들(IDX1~IDXn)에 각각 대응하는 제 1 내지 제 n 상태 값들(STT1~STTn)을 포함한다. 각 상태 값은 버퍼 메모리(160) 내 해당 저장 영역의 데이터가 유효(valid)인지 또는 무효(invalid)인지를 나타낸다. 예를 들면, 해당 저장 영역의 데이터가 유효할 때 상태 값은 '1'이고, 해당 저장 영역의 데이터가 무효일 때 상태 값은 '0'이다.
레지스터 관리기(113)는 제 1 내지 제 3 기능 블록들(121~123)과 통신하여 인덱스들(IDX1~IDXn), 소유권 값들(OW1~OWn) 및 상태 값들(STT1~STTn)을 관리한다.
버퍼 메모리(160)에 대한 액세스 요청은 인덱스를 포함할 수 있다. 레지스터 관리기(113)는 인덱스들(IDX1~IDXn) 중 수신된 인덱스에 대응하는 상태 값을 추출하고, 추출된 상태 값을 참조하여 승인 신호를 생성한다. 승인 신호는 입출력 회로(111)를 거쳐 다이렉트 인터페이스 채널(DI)을 통해 해당 기능 블록에 전송된다. 승인 신호에 따라, 해당 기능 블록은 해당 인덱스에 대응하는 버퍼 메모리(160) 내 저장 영역에 액세스할 것이다.
도 3은 각 기능 블록이 버퍼 메모리(160)에 데이터를 쓰는 방법을 보여주는 흐름도이다. 설명의 편의를 위해, 제 1 기능 블록(121)이 버퍼 메모리(160)에 데이터를 쓴다고 가정한다.
도 1 내지 도 3을 참조하면, S110단계에서, 제 1 기능 블록(121)은 쓰기 요청으로서 쓰기 요청 커맨드와 쓰기 인덱스(예를 들면 IDX2)를 전송할 수 있다.
레지스터 관리기(113)는 쓰기 요청 커맨드에 응답하여 인덱스들(IDX1~IDXn) 중 쓰기 인덱스에 대응하는 상태 값(예를 들면 STT2)이 무효를 나타내는지 여부를 판별할 것이다. 레지스터 관리기(113)는 해당 상태 값이 무효를 나타낼 때, 인에이블된 승인 신호를 제 1 다이렉트 인터페이스 채널(DI1)을 통해 제 1 기능 블록(121)에 전송한다. 즉 레지스터 관리기(113)는 쓰기 인덱스에 대응하는 버퍼 메모리(160) 내 저장 영역에 데이터가 저장되지 않을 때 인에이블된 승인 신호를 전송한다. 레지스터 관리기(113)는 해당 상태 값이 유효일 때 디스에이블된 승인 신호를 제 1 기능 블록(121)에 전송한다. 즉 레지스터 관리기(113)는 쓰기 인덱스에 대응하는 버퍼 메모리(160) 내 저장 영역에 이미 유효한 데이터가 저장되었을 때 디스에이블된 승인 신호를 전송한다.
인에이블된 승인 신호가 전송되면, 이후 제 1 기능 블록(121)은 쓰기 인덱스에 대응하는 버퍼 메모리(160) 내 저장 영역을 점유할 것이다. 레지스터 관리기(113)는 쓰기 인덱스에 대응하는 소유권 값(예를 들면 OW2)을 ‘01’로 변경할 것이다.
S120단계에서, 제 1 기능 블록(121)은 쓰기 요청이 승인되었을 때 S130단계를 수행한다. 예를 들면, 승인 신호가 인에이블된 경우에 S130단계가 수행된다. 만약 쓰기 요청이 승인되지 않으면, 제 1 기능 블록(121)은 다른 인덱스에 대해 쓰기 요청을 전송할 것이다.
S130단계에서, 제 1 기능 블록(121)은 쓰기 인덱스에 대응하는 버퍼 메모리(160) 내 저장 영역에 데이터를 쓸 것이다. 실시 예로서, 제 1 기능 블록(121)은 쓰기 인덱스(예를 들면 IDX2)에 대응하는 어드레스(예를 들면 ADDR2)를 생성하고, 생성된 어드레스가 가리키는 저장 영역에 데이터를 쓸 것이다.
S140단계에서, 쓰기가 완료된 후, 쓰기 업데이트가 수행된다. 제 1 기능 블록(121)은 쓰기 업데이트 커맨드 및 업데이트 인덱스를 버퍼 관리 유닛(110)에 전송한다. 버퍼 관리 유닛(110)은 쓰기 업데이트 커맨드에 응답하여 인덱스들(IDX1~IDXn) 중 업데이트 인덱스에 대응하는 상태 값을 유효로 변경할 것이다. 상태 값이 유효를 나타내는 것은 해당 인덱스에 대응하는 버퍼 메모리(160) 내 저장 영역에 유효한 데이터가 저장되어 있음을 의미한다.
쓰기 업데이트 커맨드 및 업데이트 인덱스가 수신된 것은 제 1 기능 블록(121)이 쓰기 인덱스에 대응하는 버퍼 메모리(160) 내 저장 영역을 더 이상 점유하지 않음을 의미한다. 레지스터 관리기(113)는 쓰기 인덱스에 대응하는 소유권 값을 ‘00’으로 변경할 것이다.
도 4는 각 기능 블록이 버퍼 메모리(160)의 데이터를 읽는 방법을 보여주는 흐름도이다. 설명의 편의를 위해, 제 2 기능 블록(122)이 버퍼 메모리(160)로부터 데이터를 읽는다고 가정한다.
도 1, 도 2 및 도 4를 참조하면, S210단계에서, 제 2 기능 블록(122)은 읽기 요청으로서 읽기 요청 커맨드와 읽기 인덱스(예를 들면 IDX2)를 전송할 수 있다.
레지스터 관리기(113)는 읽기 요청 커맨드에 응답하여 버퍼 관리 테이블(BMT) 내 인덱스들(IDX1~IDXn) 중 읽기 인덱스에 대응하는 상태 값(예를 들면 STT2)이 유효인지 여부를 판별한다. 레지스터 관리기(113)는 해당 상태 값이 유효를 나타낼 때 인에이블된 승인 신호를 제 2 다이렉트 인터페이스 채널(DI2)을 통해 제 2 기능 블록(122)에 전송한다. 즉 레지스터 관리기(113)는 버퍼 메모리(160) 내 해당 저장 영역에 유효한 데이터가 저장되었을 때 읽기 요청을 승인한다. 레지스터 관리기(113)는 해당 상태 값이 무효를 나타낼 때 디스에이블된 승인 신호를 제 2 다이렉트 인터페이스 채널(DI2)을 통해 제 2 기능 블록(122)에 전송할 것이다.
또한, 레지스터 관리기(113)는 읽기 인덱스에 대응하는 소유권 값(예를 들면 OW2)을 ‘10’으로 변경할 것이다.
S220단계에서, 제 2 기능 블록(122)은 읽기 요청이 승인되었을 때 S230단계를 수행한다. 예를 들면, 제 2 기능 블록(122)은 승인 신호가 인에이블될 때 S230단계를 수행한다. 만약 읽기 요청이 승인되지 않으면, 제 2 기능 블록(122)은 다른 인덱스에 대한 읽기 요청을 전송할 것이다.
S230단계에서, 제 2 기능 블록(122)은 읽기 인덱스에 대응하는 버퍼 메모리(160) 내 저장 영역으로부터 데이터를 읽을 것이다. 실시 예로서, 제 2 기능 블록(122)은 읽기 인덱스(IDX2)에 대응하는 어드레스(예를 들면 ADDR2)를 생성하고, 생성된 어드레스가 가리키는 버퍼 메모리(160) 내 저장 영역의 데이터를 읽을 것이다.
S240단계에서, 읽기가 완료된 후에, 읽기 업데이트가 수행된다. 제 2 기능 블록(122)은 읽기 업데이트 커맨드 및 업데이트 인덱스를 버퍼 관리 유닛(110)에 전송한다. 버퍼 관리 유닛(110)은 읽기 업데이트 커맨드에 응답하여 인덱스들(IDX1~IDXn) 중 업데이트 인덱스에 대응하는 상태 값을 무효로 변경할 수 있다. 상태 값이 무효로 변경된 것은 해당 인덱스에 대응하는 버퍼 메모리(160) 내 저장 영역에 데이터가 저장되어 있지 않음을 의미할 것이다.
다른 예로서, 버퍼 관리 유닛(110)은 업데이트 인덱스에 대응하는 상태 값을 유효로 계속 유지할 수 있다. 상태 값이 유효로 계속 유지되는 것은 해당 인덱스에 대응하는 버퍼 메모리(160) 내 저장 영역의 데이터가 유효함을 의미할 것이다. 이러한 경우, 버퍼 관리 유닛(110)은 읽기 인덱스에 대응하는 소유권 값만 ‘00’으로 변경할 것이다.
도 5 내지 도 9는 제 1 기능 블록(121)이 버퍼 메모리(160)에 데이터를 쓰고, 그 다음 제 2 기능 블록(121)이 버퍼 메모리(160)에 쓰여진 데이터를 읽는 과정을 설명하기 위한 도면들이다. 도 5 내지 도 9를 참조한 설명에서, 설명의 편의를 위해 제 1 및 제 2 인덱스들(IDX1, IDX2)에 대응하는 버퍼 메모리(160) 내 저장 영역들에 데이터가 쓰여지고, 쓰여진 데이터가 읽혀진다고 가정한다.
먼저 도 5를 참조하면, 제 1 기능 블록(121)의 제 1 버퍼 요청기(BR1)는 버퍼 관리 유닛(110)에 쓰기 요청을 전송한다(a). 쓰기 요청은 쓰기 요청 커맨드 및 쓰기 인덱스를 포함할 것이다. 두 번의 쓰기 요청들이 전송되는 경우, 2개의 쓰기 인덱스들이 제공될 것이다.
버퍼 관리 유닛(110)은 복수의 인덱스들(IDX1~IDXn) 중 쓰기 인덱스들(IDX1, IDX2)에 대응하는 상태 값들(STT1, STT2)이 무효를 나타내는지 판별한다. 이하, 논리 값 '0'은 무효를 나타내고 논리 값 '1'은 유효를 나타낸다고 가정한다.
실시 예로서, 버퍼 관리 유닛(110)은 쓰기 인덱스들(IDX1, IDX2)에 대응하는 소유권 값들(OW1, OW2)을 추가적으로 참조할 수 있다. 소유권 값은 어떤 기능 블록에도 해당 인덱스가 점유되지 않은 상태, 제 1 기능 블록(121)이 해당 인덱스를 점유한 상태, 제 2 기능 블록(122)이 해당 인덱스를 점유한 상태, 그리고 제 3 기능 블록(123)이 해당 인덱스를 점유한 상태 중 어느 하나의 상태를 나타낼 수 있다.
예를 들면, 각 소유권 값은 2 비트들로 구성될 수 있다. 이하, 소유권 값 '00'은 어떤 기능 블록에도 해당 인덱스가 점유되지 않은 상태를 나타내고, 소유권 값 '01'은 제 1 기능 블록(121)이 해당 인덱스를 점유한 상태를 나타내고, 소유권 값 '10'은 제 2 기능 블록(122)이 해당 인덱스를 점유한 상태를 나타내고, 소유권 값 '11'은 제 3 기능 블록(123)이 해당 인덱스를 점유한 상태를 나타낸다고 가정한다.
쓰기 인덱스들(IDX1, IDX2)에 대응하는 상태 값들(STT1, STT2)이 '0'이고 소유권 값들(OW1, OW2)이 '00'일 때, 버퍼 관리 유닛(110)은 도 6과 같이 승인 신호(GRNT1)를 제 1 기능 블록(121)에 전송할 수 있다(b).
제 1 및 제 2 인덱스들(IDX1, IDX2)은 제 1 기능 블록(121)에 의해 점유된 상태이다. 버퍼 관리 유닛(110)은 소유권 값들(OW1, OW2)을 '01'로 변경한다. 소유권 값들(OW1, OW2)이 '01'인 경우 다른 기능 블록들(122, 123)은 제 1 및 제 2 인덱스들(IDX1, IDX2)에 대응하는 버퍼 메모리(160) 내 저장 영역에 액세스할 수 없다.
이어서, 버퍼 관리 유닛(110)은 쓰기 인덱스들(IDX1, IDX2)에 대응하는 어드레스(ADDR1, ADDR2)를 생성하고, 어드레스(ADDR1, ADDR2)가 가리키는 버퍼 메모리(160)의 저장 영역들에 데이터(DATA)를 쓴다(c).
도 7을 참조하면, 데이터(DATA)가 쓰여진 후에, 제 1 기능 블록(121)은 버퍼 관리 유닛(110)에 쓰기 요청 커맨드 및 업데이트 인덱스를 전송함으로써 쓰기 업데이트를 수행한다(d). 업데이트 인덱스로서 제 1 및 제 2 인덱스들(IDX1, IDX2)이 전송될 것이다.
버퍼 관리 유닛(110)은 쓰기 요청 커맨드에 응답하여 업데이트 인덱스(IDX1, IDX2)에 대응하는 상태 값들(STT1, STT2)을 '1'로 변경한다. 즉, 제 1 및 제 2 인덱스들(IDX1, IDX2)에 대응하는 버퍼 메모리(160) 내 저장 영역들에 유효한 데이터가 저장된 것이 버퍼 관리 테이블(BMT)에 반영된다. 또한, 버퍼 관리 유닛(110)은 업데이트 인덱스(IDX1, IDX2)에 대응하는 소유권 값들(OW1, OW2)을 '00'으로 리턴한다.
이후, 제 2 기능 블록(122)은 중앙 처리 장치(140, 도 1 참조)의 제어에 응답하여 읽기 요청을 버퍼 관리 유닛(110)에 전송한다(e). 제 2 기능 블록(122)은 읽기 요청 커맨드 및 읽기 인덱스들(IDX1, IDX2)을 버퍼 관리 유닛(110)에 전송할 것이다.
버퍼 관리 유닛(110)은 읽기 인덱스들(IDX1, IDX2)에 대응하는 상태 값들(STT1, STT2)이 '1'이고 읽기 인덱스(IDX1, IDX2)에 대응하는 소유권 값들(OW1, OW2)이 '00'이다. 버퍼 관리 유닛(110)은 도 8과 같이 승인 신호(GRNT2)를 제 2 기능 블록(122)에 전송한다(f). 그리고 버퍼 관리 유닛(110)은 소유권 값들(OW1, OW2)을 제 2 기능 블록(122)에 대응하는 값인 '01'로 변경한다.
이후, 제 2 기능 블록(122)은 읽기 인덱스(IDX1, IDX2)에 대응하는 어드레스(ADDR1, ADDR2)를 생성하고, 어드레스(ADDR1, ADDR2)가 가리키는 버퍼 메모리(160) 내 저장 영역들로부터 데이터를 읽는다(g).
이어서 도 9를 참조하면, 읽기가 완료된 후에 읽기 업데이트가 수행된다. 제 2 기능 블록(122)은 읽기 요청 커맨드 및 업데이트 인덱스들(IDX1, IDX2)을 버퍼 관리 유닛(110)에 전송할 것이다.
버퍼 관리 유닛(110)은 읽기 요청 커맨드에 응답하여 업데이트 인덱스들(IDX1, IDX2)을 다음 루프의 인덱스들(IDXn+1, IDXn+2)로 변경할 것이다. 인덱스들(IDXn+1, IDXn+2)은 제 1 및 제 2 어드레스(ADDR1, ADDR2)에 대응한다. 그리고, 버퍼 관리 유닛(110)은 제 n+1 및 제 n+2 인덱스들(IDXn+1, IDXn+2)에 대응하는 상태 값들을 '0'으로 설정한다. 이는, 제 n+1 및 제 n+2 인덱스들(IDXn+1, IDXn+2)에 대응하는 버퍼 메모리(160) 내 저장 영역들에 유효하지 않은 데이터가 저장된 것을 의미한다. 또한, 버퍼 관리 유닛(110)은 제 n+1 및 제 n+2 인덱스들(IDXn+1, IDXn+2)에 대응하는 소유권 값들을 '00'으로 리턴한다.
도 10은 제 1 내지 제 3 기능 블록들(121~123) 중 어느 하나(121)의 다이렉트 메모리 액세스 유닛(DMA1) 및 버퍼 요청기(BR1)를 좀 더 구체적으로 보여주는 블록도이다.
도 1, 도 2 및 도 10을 참조하면, 다이렉트 메모리 액세스 유닛(DMA1)은 쓰기 다이렉트 메모리 액세서(211) 및 읽기 다이렉트 메모리 액세서(212)를 포함한다.
쓰기 다이렉트 메모리 액세서(211)는 버퍼 메모리(160)에 데이터를 쓴다. 읽기 다이렉트 메모리 액세서(212)는 버퍼 메모리(160)의 데이터를 읽는다.
쓰기 다이렉트 메모리 액세서(211)는 버퍼 메모리(160)에 데이터를 쓰기 전에, 쓰기 요청 채널(WRCH)을 통해 쓰기 요청 커맨드(WRCMD) 및 쓰기 영역 정보(AI1_1)를 발생한다. 발생된 쓰기 요청 커맨드(WRCMD) 및 쓰기 영역 정보(AI1_1)는 제 1 어드레스 디코더(221)로 전송된다.
실시 예로서, 영역 정보는 시작 인덱스 및 인덱스 사이즈를 포함할 수 있다. 인덱스 사이즈는 액세스할 인덱스들의 개수를 의미한다. 시작 인덱스 및 인덱스 사이즈에 따라 액세스될 인덱스들이 특정될 수 있다.
쓰기 다이렉트 메모리 액세서(211)는 승인 신호 수신기(240)를 통해 승인 신호(GRNT)를 수신한다. 승인 신호(GRNT)에 따라, 쓰기 다이렉트 메모리 액세서(211)는 버퍼 메모리(160)에 데이터를 쓴다.
쓰기 다이렉트 메모리 액세서(211)는 버퍼 메모리(160)에 데이터를 쓴 후에, 쓰기 업데이트 채널(WUCH)을 통해 쓰기 업데이트 커맨드(WUCMD) 및 업데이트 영역 정보(AI1_2)를 발생한다. 발생된 쓰기 업데이트 커맨드(WUCMD) 및 업데이트 영역 정보(AI1_2)는 제 3 어드레스 디코더(231)에 전송된다.
읽기 다이렉트 메모리 액세서(212)는 버퍼 메모리(160)로부터 데이터를 읽기 전에, 읽기 요청 채널(RRCH)을 통해 읽기 요청 커맨드(WRCMD) 및 읽기 영역 정보(AI2_1)를 전송한다. 읽기 다이렉트 메모리 액세서(212)는 승인 신호 수신기(240)를 통해 승인 신호(GRNT)를 수신한다. 승인 신호(GRNT)에 따라, 읽기 다이렉트 메모리 액세서(212)는 버퍼 메모리(160)의 데이터를 읽는다.
읽기 다이렉트 메모리 액세서(212)는 버퍼 메모리(160)의 데이터를 읽은 후에, 읽기 업데이트 채널(RUCH)을 통해 읽기 업데이트 커맨드(RUCMD) 및 업데이트 영역 정보(AI2_2)를 제 4 어드레스 디코더(232)로 전송한다.
버퍼 요청기(BR1)는 액세스 요청 전송기(220), 업데이트 요청 전송기(230) 및 승인 신호 수신기(240)를 포함한다.
액세스 요청 전송기(220)는 제 1 및 제 2 어드레스 디코더들(221, 222), 그리고 제 1 중재기(223)를 포함한다. 각 어드레스 디코더는 수신된 영역 정보를 디코딩한다.
제 1 어드레스 디코더(221)는 쓰기 영역 정보(AI1_1)를 디코딩하여 쓰기 인덱스(IDX1_1)를 생성한다. 예를 들면, 쓰기 영역 정보(AI1_1)의 시작 인덱스가 제 1 인덱스(IDX1)이고 쓰기 영역 정보(AI1_1)의 인덱스 사이즈가 2인 경우, 제 1 어드레스 디코더(221)는 제 1 및 제 2 인덱스들(IDX1, IDX2)을 생성한다. 예를 들면 시작 인덱스가 제 1 인덱스(IDX1)이고 인덱스 사이즈가 1인 경우, 제 1 인덱스(IDX1)를 생성한다.
제 2 어드레스 디코더(222)는 읽기 영역 정보(AI2_1)를 디코딩하여 읽기 인덱스(IDX1_2)를 생성한다.
제 1 중재기(223)는 제 1 어드레스 디코더(221)로부터 쓰기 요청 커맨드(WRCMD) 및 쓰기 인덱스(IDX1_1)를 수신하고, 제 2 어드레스 디코더(222)로부터 읽기 요청 커맨드(RRCMD) 및 읽기 인덱스(IDX1_2)를 수신한다. 제 1 중재기(223)는 제 1 어드레스 디코더(221)로부터의 수신 정보와 제 2 어드레스 디코더(222)로부터의 수신 정보를 중재한다. 제 1 중재기(220)는 쓰기 요청 커맨드(WRCMD) 및 쓰기 인덱스(IDX1_1)를 요청 커맨드(RQCMD)와 출력 인덱스(IDXa)로서 출력할 수 있다. 제 2 중재기(220)는 읽기 요청 커맨드(RRCMD) 및 읽기 인덱스(IDX1_2)를 요청 커맨드(RQCMD)와 출력 인덱스(IDXa)로서 출력할 수 있다. 요청 커맨드(RQCMD)와 출력 인덱스(IDXa)는 다이렉트 인터페이스 채널(DI1)을 통해 버퍼 관리 유닛(110)에 전달될 것이다.
제 1 어드레스 디코더(221)로부터의 수신 정보와 제 2 어드레스 디코더(222)로부터의 수신 정보가 동시에 전달되는 경우, 제 1 중재기(220)는 수신된 제 1 어드레스 디코더(221)로부터의 수신 정보와 제 2 어드레스 디코더(222)로부터의 수신 정보를 순차적으로 출력할 수 있다.
업데이트 요청 전송기(230)는 제 3 및 제 4 어드레스 디코더들(231, 232), 제 1 및 제 2 큐(queue)들(233, 234), 그리고 제 2 중재기(235)를 포함한다.
제 3 어드레스 디코더(231)는 쓰기 업데이트 커맨드(WUCMD) 및 업데이트 영역 정보(AI1_2)를 수신한다. 제 3 어드레스 디코더(231)는 업데이트 영역 정보(AI1_2)를 디코딩하여 업데이트 인덱스(IDX2_1)를 생성하고, 생성된 업데이트 인덱스(IDX2_1)를 쓰기 업데이트 커맨드(WUCMD)와 함께 제 1 큐(233)에 저장한다.
제 4 어드레스 디코더(232)는 읽기 업데이트 커맨드(RUCMD) 및 업데이트 영역 정보(AI2_2)를 수신한다. 제 4 어드레스 디코더(232)는 업데이트 영역 정보(AI2_2)를 디코딩하여 업데이트 인덱스(IDX2_2)를 생성한다. 제 4 어드레스 디코더(232)는 생성된 업데이트 인덱스(IDX2_2)를 읽기 업데이트 커맨드(RUCMD)와 함께 제 2 큐(234)에 저장한다.
제 1 및 제 2 큐들(233, 234) 각각은 선입 선출(first-in first-out) 방식에 따라 데이터를 저장한다.
제 2 중재기(235)는 제 1 큐(233)로부터 쓰기 업데이트 커맨드(WUCMD) 및 업데이트 인덱스(IDX2_1)를 수신하고, 제 2 큐(234)로부터 읽기 업데이트 커맨드(RUCMD) 및 업데이트 인덱스(IDX2_2)를 수신한다. 제 2 중재기(235)는 제 1 큐(233)로부터의 수신 정보와 제 2 큐(234)로부터의 수신 정보를 중재하여, 업데이트 커맨드(UPCMD)와 출력 인덱스(IDXb)를 생성한다. 예를 들면, 제 2 중재기(235)는 쓰기 업데이트 커맨드(WUCMD) 및 업데이트 인덱스(IDX2_1)를 업데이트 커맨드(UPCMD)와 출력 인덱스(IDXb)로서 출력할 수 있다. 제 2 중재기(235)는 읽기 업데이트 커맨드(RUCMD) 및 업데이트 인덱스(IDX2_2)를 업데이트 커맨드(UPCMD)와 출력 인덱스(IDXb)로서 출력할 수 있다. 업데이트 커맨드(UPCMD)와 출력 인덱스(IDXb)는 다이렉트 인터페이스 채널(DI1)을 통해 버퍼 관리 유닛(110)에 전달될 것이다.
제 2 중재기(235)는 셋 신호(ST_set)와 클리어 신호(ST_clr)를 추가적으로 다이렉트 인터페이스 채널(DI1)에 전송할 수 있다. 실시 예로서, 제 2 중재기(235)는 업데이트 커맨드(UPCMD)로서 쓰기 업데이트 커맨드(WUCMD)를 전송할 때 셋 신호(ST_set)를 인에이블시킬 수 있다. 실시 예로서, 제 2 중재기(235)는 업데이트 커맨드(UPCMD)로서 읽기 업데이트 커맨드(RUCMD)를 전송할 때 클리어 신호(ST_set)를 인에이블시킬 수 있다.
이러한 방식에 따르면, 버퍼 관리 유닛(110)은 셋 신호(ST_set) 및 클리어 신호(ST_set)를 참조하여 해당 상태 값을 설정할 수 있다. 셋 신호(ST_set)가 인에이블되는 것은 쓰기 업데이트가 수행됨을 의미한다. 버퍼 관리 유닛(110)은 셋 신호(ST_set)가 인에이블될 때 해당 상태 값을 '1'로 변경할 것이다. 클리어 신호(ST_clr)가 인에이블되는 것은 읽기 업데이트가 수행됨을 의미한다. 버퍼 관리 유닛(110)은 클리어 신호(ST_clr)가 인에이블될 때 해당 상태 값을 '0'으로 변경할 것이다.
승인 신호 수신기(240)는 다이렉트 인터페이스 채널(DI1)을 통해 승인 신호(GRNT)를 수신한다. 제 1 중재기(223)로부터 수신된 선택 신호(SEL)에 응답하여, 승인 신호 수신기(240)는 승인 신호(GRNT)를 쓰기 요청 채널(WRCH) 또는 읽기 요청 채널(RRCH)에 전송한다. 한편 제 1 중재기(223)는 제 1 어드레스 디코더(221)로부터의 쓰기 요청 커맨드(WRCMD) 및 쓰기 인덱스(IDX1_1)를 다이렉트 인터페이스 채널(DI1)을 통해 전송한 경우, 선택 신호(SEL)를 인에이블시킬 수 있다. 즉 쓰기 요청이 전송된 경우 선택 신호(SEL)가 인에이블될 수 있다. 승인 신호 수신기(240)는 인에이블된 선택 신호(SEL)에 응답하여 승인 신호(GRNT)를 쓰기 요청 채널(WRCH)에 전송한다. 반면, 제 1 중재기(223)는 제 2 어드레스 디코더(222)로부터의 읽기 요청 커맨드(RRCMD) 및 읽기 인덱스(IDX1_2)를 다이렉트 인터페이스 채널(DI1)을 통해 전송한 경우, 선택 신호(SEL)를 디스에이블시킬 수 있다. 즉 읽기 요청이 전송된 경우 선택 신호(SEL)가 디스에이블될 수 있다. 승인 신호 수신기(240)는 디스에이블된 선택 신호(SEL)에 응답하여 승인 신호(GRNT)를 읽기 요청 채널(RRCH)에 전송한다.
도 11은 버퍼 메모리(160)에 대한 쓰기 시 다이렉트 메모리 액세스 유닛(DMA1) 및 버퍼 요청기(BR1)의 동작 방법을 보여주는 타이밍도이다.
도 10 및 도 11을 참조하면, 다이렉트 메모리 액세스 유닛(DMA1) 및 버퍼 요청기(BR1)는 클럭 신호(CLK)를 기준으로 동작할 수 있다.
제 1 시간(t1)에서, 쓰기 다이렉트 메모리 액세서(211)는 쓰기 요청 커맨드(WRCMD) 및 쓰기 영역 정보(AI1_1)를 전송한다. 제 1 어드레스 디코더(221)는 쓰기 영역 정보(AI1_1)를 디코딩하여 쓰기 인덱스(IDX1_1)를 생성하고, 쓰기 요청 커맨드(WRCMD) 및 쓰기 인덱스(IDX1_1)를 제 1 중재기(223)에 전송할 것이다.
제 2 시간(t2)에서, 제 1 중재기(223)는 요청 커맨드(RQCMD)로서 쓰기 요청 커맨드(WRCMD)를 전송하고, 출력 인덱스(IDXa)로서 쓰기 인덱스(IDX1_1)를 전송한다.
버퍼 관리 유닛(110)은 복수의 인덱스들(IDX1~IDXn) 중 쓰기 인덱스(IDX1_1)와 일치하는 인덱스를 검출하고, 검출된 인덱스에 대응하는 상태 값 및 소유권 값을 참조하여 승인 신호(GRNT)를 제공할 것이다.
제 3 시간(t3)에서, 승인 신호(GRNT)가 인에이블된다. 인에이블된 승인 신호(GRNT)에 따라, 쓰기 다이렉트 메모리 액세서(211)는 쓰기 요청 커맨드(WRCMD) 및 쓰기 영역 정보(AI1_1)의 전송을 중지하고, 버퍼 메모리(160) 내 쓰기 인덱스(IDX1_1)에 대응하는 저장 영역에 데이터를 쓴다.
쓰기가 완료된 후, 제 4 시간(t4)에서, 쓰기 다이렉트 메모리 액세서(211)는 쓰기 업데이트 커맨드(WUCMD)를 인에이블시키고 업데이트 영역 정보(AI1_2)를 전송한다. 제 3 어드레스 디코더(231)는 업데이트 영역 정보(AI1_2)를 디코딩하여 업데이트 인덱스(IDX2_1)를 생성하고, 쓰기 업데이트 커맨드(WUCMD) 및 업데이트 인덱스(IDX2_1)를 제 1 큐(233)에 전송한다.
제 5 시간(t5)에서, 제 2 중재기(235)는 제 1 큐(233)로부터의 쓰기 업데이트 커맨드(WUCMD)에 따라 업데이트 커맨드(UPCMD)를 인에이블시키고, 출력 인덱스(IDXb)로서 업데이트 인덱스(IDX2_1)를 전송한다. 이때, 제 2 중재기(235)는 셋 신호(ST_set)를 인에이블시킬 수 있다.
버퍼 관리 유닛(110)은 복수의 인덱스들(IDX1~IDXn) 중 업데이트 인덱스(IDX2_1)와 일치하는 인덱스를 검출하고, 검출된 인덱스에 대응하는 상태 값을 변경할 것이다. 셋 신호(ST_set)가 인에이블되었으므로, 상태 값을 '1'로 변경할 것이다. 소유권 값은 '00'으로 변경될 것이다.
도 12는 버퍼 메모리(160)에 대한 읽기 시 다이렉트 메모리 액세스 유닛(DMA1) 및 버퍼 요청기(BR1)의 동작 방법을 보여주는 타이밍도이다.
도 10 및 도 12를 참조하면, 제 1 시간(t1)에서, 읽기 다이렉트 메모리 액세서(212)는 읽기 요청 커맨드(RRCMD) 및 읽기 영역 정보(AI2_1)를 전송한다. 제 2 어드레스 디코더(222)는 읽기 영역 정보(AI2_1)를 디코딩하여 읽기 인덱스(IDX1_2)를 생성하고, 읽기 요청 커맨드(RRCMD) 및 읽기 인덱스(IDX1_2)를 제 1 중재기(223)에 제공한다.
제 2 시간(t2)에서, 제 1 중재기(223)는 요청 커맨드(RQCMD)로서 읽기 요청 커맨드(RRCMD)를 전송하고, 출력 인덱스(IDXa)로서 읽기 인덱스(IDX1_2)를 전송한다.
버퍼 관리 유닛(110)은 복수의 인덱스들(IDX1~IDXn) 중 읽기 인덱스(IDX1_2)와 일치하는 인덱스를 검출하고, 검출된 인덱스에 대응하는 상태 값 및 소유권 값을 참조하여 승인 신호(GRNT)를 제공할 것이다.
제 3 시간(t3)에서 승인 신호(GRNT)가 인에이블된다. 인에이블된 승인 신호(GRNT)에 응답하여 읽기 다이렉트 메모리 액세서(212)는 읽기 인덱스(IDX1_2)에 대응하는 버퍼 메모리(160) 내 저장 영역의 데이터를 읽는다.
읽기가 완료된 후, 제 4 시간(t4)에서, 읽기 다이렉트 메모리 액세서(212)는 읽기 업데이트 커맨드(RUCMD)를 인에이블시키고 업데이트 영역 정보(AI2_2)를 전송한다. 제 4 어드레스 디코더(232)는 업데이트 영역 정보(AI2_2)를 디코딩하여 업데이트 인덱스(IDX2_2)를 생성하고, 읽기 업데이트 커맨드(RUCMD) 및 업데이트 인덱스(IDX2_2)를 제 2 큐(234)에 전송한다.
제 5 시간(t5)에서, 제 2 중재기(235)는 제 2 큐(234)로부터의 읽기 업데이트 커맨드(RUCMD)에 따라 업데이트 커맨드(UPCMD)를 인에이블시키고, 출력 인덱스(IDXb)로서 업데이트 인덱스(IDX2_2)를 전송한다. 그리고 제 2 중재기(235)는 클리어 신호(ST_clr)를 인에이블시킨다.
버퍼 관리 유닛(110)은 업데이트 커맨드(UPCMD)에 응답하여 버퍼 관리 테이블(BMT) 내 업데이트 인덱스(IDX2_2)에 대응하는 상태 값을 변경할 것이다. 인에이블된 클리어 신호(ST_clr)에 따라, 상태 값은 '0'으로 변경될 것이다. 소유권 값은 '00'으로 변경될 것이다.
도 13은 본 발명의 다른 실시 예에 따른 반도체 장치(500)를 보여주는 블록도이다.
도 13을 참조하면, 반도체 장치(500)는 버퍼 관리 유닛(510), 호스트 인터페이스(521), 제 1 및 제 2 메모리 인터페이스들(522, 523), 제어 버스(530), 중앙 처리 유닛(540), 데이터 버스(550), 그리고 버퍼 메모리(560)를 포함한다. 도 1의 제 1 내지 제 3 기능 블록들(121~123)은 각각 호스트 인터페이스(521), 제 1 메모리 인터페이스(522) 및 제 2 메모리 인터페이스(523)의 기능을 수행할 수 있다.
버퍼 메모리(560)는 쓰기 버퍼 메모리(561)와 읽기 버퍼 메모리(562)로 구분될 수 있다.
쓰기 버퍼 메모리(561)는 호스트(Host)로부터의 데이터가 임시 저장되는 영역이다. 쓰기 버퍼 메모리(561)에 임시 저장된 데이터는 메모리 인터페이스들(522, 523)을 통해 불휘발성 메모리 장치들(610, 620)에 저장된다.
읽기 버퍼 메모리(562)는 불휘발성 메모리 장치들(610, 620)로부터 읽어진 데이터가 임시 저장되는 영역이다. 읽기 버퍼 메모리(562)에 임시 저장된 데이터는 호스트 인터페이스(521)를 통해 호스트(Host)로 출력된다.
본 발명의 실시 예에 따르면, 호스트 인터페이스(521), 제 1 및 제 2 메모리 인터페이스들(522, 523) 각각은 쓰기 버퍼 메모리(561)에 대한 액세스를 해당 다이렉트 인터페이스 채널 중 제 1 채널(도 14 및 도 15의 CH1 참조)을 통해 버퍼 관리 유닛(110)에 문의할 것이다. 호스트 인터페이스(521), 제 1 및 제 2 메모리 인터페이스들(522, 523) 각각은 읽기 버퍼 메모리(562)에 대한 액세스를 해당 다이렉트 인터페이스 채널 중 제 2 채널(도 14 및 도 15의 CH2 참조)을 통해 버퍼 관리 유닛(110)에 문의할 것이다.
호스트 인터페이스(521)는 호스트(Host)와 통신한다. 호스트 인터페이스(521)는 제 1 버퍼 요청기(BR11)를 통해 제 1 다이렉트 인터페이스 채널(DI11)에 연결되고, 제 1 다이렉트 메모리 액세스 유닛(DMA1)을 통해 데이터 버스(550)에 연결된다.
호스트 인터페이스(521)는 중앙 처리 유닛(540)의 제어에 응답하여 호스트(Host)로부터 수신된 데이터를 쓰기 버퍼 메모리(561)에 저장한다. 호스트 인터페이스(521)는 쓰기 버퍼 메모리(561)에 대한 쓰기를 버퍼 관리 유닛(510)에 문의하고, 문의 결과에 따라 쓰기 버퍼 메모리(561)에 데이터를 쓸 것이다.
호스트 인터페이스(521)는 중앙 처리 유닛(540)의 제어에 응답하여 읽기 버퍼 메모리(562)에 저장된 데이터를 호스트(Host)로 출력한다. 호스트 인터페이스(521)는 읽기 버퍼 메모리(562)에 대한 읽기를 버퍼 관리 유닛(510)에 문의하고, 문의 결과에 따라 읽기 버퍼 메모리(562)의 데이터를 읽고, 읽어진 데이터를 호스트(Host)로 출력할 것이다.
제 1 및 제 2 메모리 인터페이스들(522, 523)은 각각 제 1 및 제 2 불휘발성 메모리 장치들(610, 620)와 통신한다. 제 1 메모리 인터페이스(522)는 제 2 버퍼 요청기(BR22)를 통해 제 2 다이렉트 인터페이스 채널(DI22)에 연결되고, 제 2 다이렉트 메모리 액세스 유닛(DMA2)을 통해 데이터 버스(550)에 연결된다. 제 2 메모리 인터페이스(523)는 제 3 버퍼 요청기(BR33)를 통해 제 3 다이렉트 인터페이스 채널(DI33)에 연결되고, 제 3 다이렉트 메모리 액세스 유닛(DMA3)을 통해 데이터 버스(550)에 연결된다.
각 메모리 인터페이스는 중앙 처리 유닛(540)의 제어에 응답하여 쓰기 버퍼 메모리(561)에 저장된 데이터를 해당 불휘발성 메모리 장치에 저장한다. 각 메모리 인터페이스는 쓰기 버퍼 메모리(561)에 대한 읽기를 버퍼 관리 유닛(510)에 문의하고, 문의 결과에 따라 쓰기 버퍼 메모리(561)에 저장된 데이터를 읽고, 읽어진 데이터를 해당 불휘발성 메모리 장치에 저장한다.
각 메모리 인터페이스는 중앙 처리 유닛(540)의 제어에 응답하여 해당 불휘발성 메모리 장치로부터 읽어진 데이터를 읽기 버퍼 메모리(562)에 저장한다. 각 메모리 인터페이스는 읽기 버퍼 메모리(562)에 대한 쓰기를 버퍼 관리 유닛(510)에 문의하고, 문의 결과에 따라 해당 불휘발성 메모리 장치로부터 읽어진 데이터를 읽기 버퍼 메모리(562)에 쓸 것이다.
도 14는 도 13의 버퍼 관리 유닛(510)을 보여주는 블록도이다.
도 13 및 도 14를 참조하면, 버퍼 관리 유닛(510)은 제 1 및 제 2 입출력 회로들(511, 512), 레지스터 관리기(513) 및 레지스터(514)를 포함한다.
제 1 및 제 2 입출력 회로들(511, 512)은 각각 제 1 및 제 2 채널들(CH1, CH2)에 연결된다. 제 1 및 제 2 채널들(CH1, CH2)은 다이렉트 인트페이스 채널(DI')을 구성한다. 다이렉트 인터페이스 채널(DI')은 도 1의 제 1 내지 제 3 다이렉트 인터페이스 채널들(DI11~DI33) 중 어느 하나를 나타낸다. 나머지 다이렉트 인터페이스 채널들은, 설명의 편의를 위해 생략된다.
이 실시 예에 따르면, 제 1 채널(CH1)을 통해서, 쓰기 버퍼 메모리(561)에 대한 액세스 요청이 수신되고, 해당 승인 신호가 전송된다. 제 2 채널(CH2)을 통해서, 읽기 버퍼 메모리(562)에 대한 액세스 요청이 수신되고, 해당 승인 신호가 전송된다.
레지스터(514)는 쓰기 버퍼 관리 테이블(WBMT) 및 읽기 버퍼 관리 테이블(RBMT)을 저장한다. 쓰기 버퍼 관리 테이블(WBMT)은 쓰기 버퍼 메모리(561)에 대응한다. 읽기 버퍼 관리 테이블(RBMT)은 읽기 버퍼 메모리(562)에 대응한다.
레지스터 관리기(513)는 제 1 입출력 회로(511)를 통해 액세스 요청이 수신될 때 쓰기 버퍼 관리 테이블(WBMT)을 참조하고 관리한다. 예를 들면, 레지스터 관리기(513)는 제 1 입출력 회로(511)를 통해 쓰기 요청이 수신될 때, 쓰기 버퍼 인덱스들(WIDX1~WIDXn) 중 수신된 쓰기 인덱스와 일치하는 쓰기 버퍼 인덱스를 검출한다. 여기에서, 쓰기 버퍼 인덱스들(WIDX1~WIDXn)은 각각 제 1 내지 제 n 쓰기 버퍼 어드레스(WADDR1~WADDRn)에 대응한다. 제 1 내지 제 n 쓰기 버퍼 어드레스(WADDR1~WADDRn)는 각각 쓰기 버퍼 메모리(561)의 저장 영역들을 가리킨다. 검출된 쓰기 버퍼 인덱스에 대응하는 상태 값이 '0'일 때 레지스터 관리기(513)는 승인 신호를 인에이블할 것이다. 예를 들면, 레지스터 관리기(513)는 제 1 입출력 회로(511)를 통해 읽기 요청이 수신될 때 쓰기 버퍼 인덱스들(WIDX1~WIDXn) 중 읽기 인덱스와 일치하는 쓰기 버퍼 인덱스를 검출한다. 검출된 쓰기 버퍼 인덱스에 대응하는 상태 값이 '1'일 때 레지스터 관리기(513)는 승인 신호를 인에이블 할 것이다.
레지스터 관리기(513)는 제 2 입출력 회로(512)를 통해 액세스 요청이 수신될 때 읽기 버퍼 관리 테이블(RBMT)을 참조하고 관리한다. 예를 들면, 레지스터 관리기(513)는 제 2 입출력 회로(511)를 통해 쓰기 요청이 수신될 때 읽기 버퍼 인덱스들(RIDX1~RIDXn) 중 수신된 쓰기 인덱스와 일치하는 읽기 버퍼 인덱스를 검출한다. 그리고 레지스터 관리기(513)는 검출된 읽기 버퍼 인덱스에 대응하는 상태 값이 '0'일 때 승인 신호를 인에이블한다. 여기에서, 읽기 버퍼 인덱스들(RIDX1~RIDXn)은 각각 제 1 내지 제 n 읽기 버퍼 어드레스(RADDR~RADDRn)에 대응한다. 제 1 내지 제 n 읽기 버퍼 어드레스(RADDR~RADDRn)는 각각 읽기 버퍼 메모리(562)의 저장 영역들을 가리킬 것이다.
도 15는 도 13의 호스트 인터페이스(521), 제 1 및 제 2 메모리 인터페이스들(522, 523) 중 어느 하나(521)의 다이렉트 메모리 액세스 유닛(DMA1) 및 버퍼 요청기(BR11)를 좀 더 구체적으로 보여주는 블록도이다.
도 13 내지 도 15를 참조하면, 버퍼 요청기(BR11)는 액세스 요청 전송기(720), 업데이트 요청 전송기(730) 및 승인 신호 수신기(740)를 포함한다.
액세스 요청 전송기(720)는 버퍼 선택 신호(BSEL1_1)에 따라 쓰기 요청을 제 1 채널(CH1) 또는 제 2 채널(CH2)로 전송한다. 액세스 요청 전송기(720)는 버퍼 선택 신호(BSEL1_2)에 따라 읽기 요청을 제 1 채널(CH1) 또는 제 2 채널(CH2)에 전송한다.
액세스 요청 전송기(720)는 제 1 및 제 2 어드레스 디코더들(721, 722), 제 1 중재부(723) 및 제 1 디먹스(724)를 포함한다.
제 1 어드레스 디코더(721)는 쓰기 영역 정보(AI1_1)를 수신한다. 한편 영역 정보에는 시작 인덱스가 포함된다. 시작 인덱스는 쓰기 버퍼 메모리(561) 및 읽기 버퍼 메모리(562) 중 어느 하나를 가리키는 적어도 하나의 데이터 비트를 포함할 것이다. 제 1 어드레스 디코더(721)는 쓰기 영역 정보(AI_1)를 디코딩하여 쓰기 인덱스(IDX1_1)와 함께 쓰기 버퍼 메모리(561) 및 읽기 버퍼 메모리(562) 중 어느 하나를 가리키는 버퍼 선택 신호(BSEL1_1)를 생성한다.
제 2 어드레스 디코더(721)는 읽기 영역 정보(AI2_1)를 디코딩하여 읽기 인덱스(IDX1_2) 및 버퍼 선택 신호(BSEL1_2)를 생성한다. 버퍼 선택 신호(BSEL1_2)는 쓰기 버퍼 메모리(561) 및 읽기 버퍼 메모리(562) 중 어느 하나를 가리킬 것이다.
제 1 중재부(723)는 쓰기 요청 커맨드(WRCMD) 및 쓰기 인덱스(IDX1_1)를 요청 커맨드(RQCMD) 및 출력 인덱스(IDXa)로서 전송할 때, 버퍼 선택 신호(BSEL1_1)를 제 1 버퍼 선택 신호(BSEL1)로서 전송한다. 버퍼 선택 신호(BSEL1_1)에 따라, 제 1 디먹스(724)는 요청 커맨드(RQCMD) 및 출력 인덱스(IDXa)를 제 1 채널(CH1) 또는 제 2 채널(CH2)로 전송한다.
제 1 중재부(723)는 읽기 요청 커맨드(RRCMD) 및 읽기 인덱스(IDX1_2)를 요청 커맨드(RQCMD) 및 출력 인덱스(IDXa)로서 전송할 때, 버퍼 선택 신호(BSEL1_2)를 제 1 버퍼 선택 신호(BSEL1)로서 전송한다. 버퍼 선택 신호(BSEL1_2)에 따라 제 1 디먹스(724)는 요청 커맨드(RQCMD) 및 출력 인덱스(IDXa)를 제 1 채널(CH1) 또는 제 2 채널(CH2)로 전송할 것이다.
이러한 방법에 따라, 쓰기 요청 및 읽기 요청은 제 1 채널(CH1) 또는 제 2 채널(CH2)로 전송될 수 있다.
업데이트 요청 전송기(730)는 버퍼 선택 신호(BSEL2_1)에 따라 쓰기 업데이트 요청을 제 1 채널(CH1) 또는 제 2 채널(CH2)에 전송한다. 업데이트 요청 전송기(730)는 버퍼 선택 신호(BSEL2_2)에 따라 읽기 업데이트 요청을 제 1 채널(CH1) 또는 제 2 채널(CH2)에 전송한다.
업데이트 요청 전송기(730)는 제 3 및 제 4 어드레스 디코더들(731, 732), 제 1 및 제 2 큐들(733, 734), 제 2 중재부(735) 및 제 2 디먹스(736)를 포함한다.
제 3 어드레스 디코더(731)는 업데이트 영역 정보(AI1_2)를 수신한다. 제 3 어드레스 디코더(731)는 업데이트 영역 정보(AI1_2)를 디코딩하여 업데이트 인덱스(IDX2_1)와 함께 버퍼 선택 신호(BSEL2_1)를 생성한다. 제 4 어드레스 디코더(732)는 업데이트 영역 정보(AI2_2)를 디코딩하여 업데이트 인덱스(IDX2_2) 및 버퍼 선택 신호(BSEL2_2)를 생성한다.
제 2 중재부(735)는 쓰기 업데이트 커맨드(WUCMD) 및 업데이트 인덱스(IDX2_1)가 업데이트 커맨드(UPCMD) 및 출력 인덱스(IDXb)로서 출력될 때 버퍼 선택 신호(BSEL2_1)를 제 2 버퍼 선택 신호(BSEL2)로서 전송한다. 제 2 디먹스(736)는 버퍼 선택 신호(BSEL2_1)에 따라 업데이트 커맨드(UPCMD), 출력 인덱스(IDXb), 셋 신호(ST_set) 및 클리어 신호(ST_clr)를 제 1 채널(CH1) 또는 제 2 채널(CH2)로 전송할 것이다.
제 2 중재부(735)는 읽기 업데이트 커맨드(RUCMD) 및 업데이트 인덱스(IDX2_2)가 업데이트 커맨드(UPCMD) 및 출력 인덱스(IDXb)로서 출력될 때 버퍼 선택 신호(BSEL2_2)를 제 2 버퍼 선택 신호(BSEL2)로서 전송한다. 버퍼 선택 신호(BSEL2_2)에 따라, 제 2 디먹스(736)는 업데이트 커맨드(UPCMD), 출력 인덱스(IDXb), 셋 신호(ST_set) 및 클리어 신호(ST_clr)를 제 1 채널(CH1) 또는 제 2 채널(CH2)로 전송할 것이다.
승인 신호 수신기(740)는 먹스(741) 및 제 3 디먹스(742)를 포함한다. 먹스(741)는 제 1 채널(CH1)을 통해 수신된 승인 신호(GRNT1) 또는 제 2 채널(CH2)을 통해 수신된 승인 신호(GRNT2)를 선택한다. 한편 제 1 중재부(723)는 제 1 버퍼 선택 신호(BSEL1)를 딜레이시켜, 딜레이된 버퍼 선택 신호(BSEL1_delay)를 제공한다. 딜레이된 버퍼 선택 신호(BSEL1_delay)에 따라 먹스(741)는 승인 신호들(GRNT1, GRNT2) 중 어느 하나를 제 3 디먹스(742)에 전달한다. 전달된 승인 신호는 제 1 중재기(723)로부터의 선택 신호(SEL)에 따라 쓰기 요청 채널(WRCH) 및 읽기 요청 채널(RRCH) 중 어느 하나로 전달된다.
도 16은 본 발명의 또 다른 실시 예에 따른 반도체 장치(900)를 보여주는 블록도이다.
도 16을 참조하면, 반도체 장치(900)는 버퍼 관리 유닛(910), 호스트 인터페이스(921), 메모리 인터페이스(922), 글로벌 DMA(923), 제어 버스(930), 중앙 처리 유닛(940), 데이터 버스(950), 그리고 버퍼 메모리(960)를 포함한다. 도 1의 제 1 내지 제 3 기능 블록들(121~123)은 각각 호스트 인터페이스(921), 메모리 인터페이스(922) 및 글로벌 DMA(923)의 기능을 수행할 수 있다. 메모리 인터페이스(922)는 불휘발성 메모리 장치(1010)와 통신한다.
글로벌 DMA(923)는 중앙 처리 유닛(940)의 제어에 응답하여 데이터 버스(950)를 통해 버퍼 메모리(960)를 액세스하도록 구성된다. 예를 들면, 글로벌 DMA(923)는 쓰기 버퍼 메모리(961)에 저장된 데이터를 읽기 버퍼 메모리(962)로 이동시킬 수 있다. 글로벌 DMA(923)는 버퍼 메모리(960) 중 쓰기 버퍼 메모리(961)에 저장된 데이터를 읽고 읽어진 데이터를 읽기 버퍼 메모리(962)에 쓸 수 있다. 예를 들면, 글로벌 DMA(923)는 읽기 버퍼 메모리(962)에 저장된 데이터를 쓰기 버퍼 메모리(961)로 이동시킬 수 있다.
도 1 내지 도 15를 참조하여 설명된 바와 마찬가지로, 글로벌 DMA(923)는 버퍼 메모리(960)에 대한 액세스를 다이렉트 인터페이스 채널(DI33)을 통해 버퍼 관리 유닛(910)에 문의하고, 문의 결과에 따라 동작한다.
글로벌 DMA(923)는 쓰기 버퍼 메모리(961) 또는 읽기 버퍼 메모리(962)에 대한 액세스를 다이렉트 인터페이스 채널(DI33)을 통해 버퍼 관리 유닛(910)에 문의하고, 문의 결과에 따라 쓰기 버퍼 메모리(961) 또는 읽기 버퍼 메모리(962)에 액세스할 것이다. 쓰기 버퍼 메모리(961)에 대한 액세스가 가능한지 여부는 다이렉트 인터페이스 채널(DI33)의 제 1 채널(CH1, 도 14 및 도 15 참조)을 통해 전송될 것이다. 읽기 버퍼 메모리(962)에 대한 액세스가 가능한지 여부는 다이렉트 인터페이스 채널(DI33)의 제 2 채널(CH2, 도 14 및 도 15 참조)을 통해 전송될 것이다.
예를 들면, 글로벌 DMA(923)는 쓰기 버퍼 메모리(961)에 대한 읽기를 버퍼 관리 유닛(910)에 문의하고, 문의 결과에 따라 쓰기 버퍼 메모리(961)로부터 데이터를 읽는다. 그리고, 글로벌 DMA(923)는 읽기 버퍼 메모리(962)에 대한 쓰기를 버퍼 관리 유닛(910)에 문의하고, 문의 결과에 따라 읽어진 데이터를 읽기 버퍼 메모리(962)에 쓸 것이다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위와 기술적 사상에서 벗어나지 않는 한도 내에서 다양한 변경이 가능하다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100: 반도체 장치
110: 버퍼 관리 유닛
121~123: 제 1 내지 제 3 기능 블록들
130: 제어 버스
140: 중앙 처리 유닛
150: 데이터 버스
160: 버퍼 메모리

Claims (20)

  1. 복수의 저장 영역들을 포함하는 버퍼 메모리;
    상기 버퍼 메모리에 연결되는 데이터 버스;
    상기 버퍼 메모리에 대한 액세스 요청의 결과에 따라 상기 데이터 버스를 통해 상기 버퍼 메모리에 액세스하도록 구성되는 복수의 기능 블록들;
    상기 복수의 기능 블록들 각각으로부터 상기 버퍼 메모리에 대한 액세스 요청을 수신하고, 상기 복수의 기능 블록들 각각에 대응되는 버퍼 메모리의 상태에 따라 상기 액세스 요청에 대한 응답을 전송하는 버퍼 관리 유닛; 및
    상기 복수의 기능 블록들 각각을 대응되는 상기 버퍼 관리 유닛에 연결하는 복수의 다이렉트 인터페이스 채널들을 포함하고,
    상기 액세스 요청은,
    상기 복수의 저장 영역들 중 적어도 하나의 저장 영역에 대한 쓰기 요청 커맨드 및 쓰기 인덱스를 포함하고,
    상기 버퍼 관리 유닛은,
    상기 복수의 저장 영역들의 상태를 나타내는 버퍼 관리 테이블을 포함하고,
    상기 버퍼 관리 테이블에 기초하여, 상기 쓰기 인덱스에 대응되는 저장 영역에 저장된 데이터의 유효성을 확인하고, 상기 데이터의 유효성에 따른 응답으로 승인 신호를 전송하는 반도체 장치.
  2. 제 1 항에 있어서,
    상기 버퍼 관리 유닛 및 상기 복수의 기능 블록들을 연결하는 커맨드 버스; 및
    상기 커맨드 버스를 통해 상기 버퍼 관리 유닛 및 상기 복수의 기능 블록들을 제어하도록 구성되는 중앙 처리 유닛을 더 포함하는 반도체 장치.
  3. 제 1 항에 있어서,
    상기 복수의 기능 블록들 중 제 1 기능 블록은 상기 버퍼 메모리의 특정 저장 영역에 대한 쓰기 요청 커맨드를 제 1 다이렉트 인터페이스 채널을 통해 상기 버퍼 관리 유닛에 전송하고, 상기 버퍼 관리 유닛으로부터 상기 제 1 다이렉트 인터페이스 채널을 통해 전송되는 제 1 승인 신호에 따라 데이터를 상기 데이터 버스를 통해 상기 특정 저장 영역에 쓰는 반도체 장치.
  4. 제 3 항에 있어서,
    상기 복수의 기능 블록들 중 제 2 기능 블록은 상기 특정 저장 영역에 대한 읽기 요청 커맨드를 제 2 다이렉트 인터페이스 채널을 통해 상기 버퍼 관리 유닛에 전송하고, 상기 버퍼 관리 유닛으로부터 상기 제 2 다이렉트 인터페이스 채널을 통해 전송되는 제 2 승인 신호에 따라 상기 특정 저장 영역에 쓰여진 상기 데이터를 상기 데이터 버스를 통해 읽는 반도체 장치.
  5. 제 4 항에 있어서,
    상기 제 1 기능 블록은 호스트와 통신하는 호스트 인터페이스로서 동작하고, 상기 제 2 기능 블록은 불휘발성 메모리 장치와 통신하는 메모리 인터페이스로서 동작하고,
    상기 특정 저장 영역에 쓰여진 상기 데이터는 상기 호스트로부터 수신된 데이터이고,
    상기 메모리 인터페이스는 상기 데이터 버스를 통해 읽은 데이터를 상기 불휘발성 메모리 장치에 저장하는 반도체 장치.
  6. 제 4 항에 있어서,
    상기 제 1 기능 블록은 불휘발성 메모리 장치와 통신하는 메모리 인터페이스로서 동작하고, 상기 제 2 기능 블록은 호스트와 통신하는 호스트 인터페이스로서 동작하고,
    상기 특정 저장 영역에 쓰여진 상기 데이터는 상기 불휘발성 메모리 장치로부터 읽혀진 데이터이고,
    상기 호스트 인터페이스는 상기 읽혀진 데이터를 상기 호스트로 출력하는 반도체 장치.
  7. 제 1 항에 있어서,
    상기 복수의 기능 블록들 중 어느 하나는 상기 버퍼 메모리의 제 1 저장 영역에 대한 읽기 요청 커맨드를 해당 다이렉트 인터페이스 채널을 통해 상기 버퍼 관리 유닛에 전송하고, 상기 버퍼 관리 유닛으로부터 상기 해당 다이렉트 인터페이스 채널을 통해 전송되는 읽기 요청 커맨드에 대한 응답에 따라 특정 저장 영역으로부터 상기 데이터 버스를 통해 데이터를 읽는 반도체 장치.
  8. 제 7 항에 있어서,
    상기 복수의 기능 블록들 중 상기 어느 하나는 상기 버퍼 메모리의 제 2 저장 영역에 대한 쓰기 요청 커맨드를 상기 해당 다이렉트 인터페이스 채널을 통해 상기 버퍼 관리 유닛에 전송하고, 상기 버퍼 관리 유닛으로부터 상기 해당 다이렉트 인터페이스 채널을 통해 전송되는 쓰기 요청 커맨드에 대한 응답에 따라 상기 데이터 버스를 통해 읽은 데이터를 상기 제 2 저장 영역에 쓰는 반도체 장치.
  9. 삭제
  10. 제 1 항에 있어서,
    상기 승인 신호는 상기 쓰기 인덱스에 대응되는 데이터가 무효(invalid)일 때 인에이블되는 반도체 장치.
  11. 제 10 항에 있어서,
    상기 제 1 기능 블록은 상기 승인 신호가 인에이블될 때 상기 버퍼 메모리 중 상기 쓰기 인덱스에 대응되는 상기 저장 영역에 데이터를 쓰고, 상기 승인 신호가 디스에이블될 때 상기 쓰기를 수행하지 않는 반도체 장치.
  12. 제 10 항에 있어서,
    상기 제 1 기능 블록은 상기 쓰기 인덱스에 대응되는 상기 저장 영역에 상기 데이터를 쓴 후에, 쓰기 업데이트 커맨드 및 업데이트 인덱스를 상기 버퍼 관리 유닛에 전송하고,
    상기 버퍼 관리 유닛은 상기 복수의 인덱스들 중 상기 업데이트 인덱스와 일치하는 인덱스를 판별하고 상기 업데이트 인덱스에 대응하는 데이터의 유효성을 유효로 변경하고,
    상기 쓰기 인덱스와 상기 업데이트 인덱스는 동일한 반도체 장치.
  13. 제 1 항에 있어서,
    상기 복수의 기능 블록들 중 제 2 기능 블록은 읽기 요청 커맨드 및 읽기 인덱스를 상기 버퍼 관리 유닛에 전송함으로써 상기 버퍼 메모리 중 상기 읽기 인덱스에 해당하는 저장 영역에 대한 읽기 요청을 전송하고,
    상기 버퍼 관리 유닛은 상기 복수의 인덱스들 중 상기 읽기 인덱스와 일치하는 인덱스를 검출하고, 상기 읽기 인덱스에 대응하는 저장 영역에 저장된 데이터의 유효성을 참조하여 승인 신호를 상기 읽기 요청에 대한 응답으로서 상기 제 2 기능 블록에 전송하고,
    상기 승인 신호는 상기 검출된 인덱스에 대응하는 상기 데이터의 유효성이 유효일 때 인에이블되는 반도체 장치.
  14. 제 13 항에 있어서,
    상기 제 2 기능 블록은 상기 승인 신호가 인에이블될 때 상기 읽기 인덱스에 해당하는 상기 저장 영역의 데이터를 읽고, 상기 승인 신호가 디스에이블될 때 상기 읽기를 수행하지 않는 반도체 장치.
  15. 제 13 항에 있어서,
    상기 제 2 기능 블록은 상기 읽기 인덱스에 해당하는 상기 저장 영역에 저장된 상기 데이터를 읽은 후에, 읽기 업데이트 커맨드 및 업데이트 인덱스를 상기 버퍼 관리 유닛에 전송하고,
    상기 버퍼 관리 유닛은 상기 복수의 인덱스들 중 상기 업데이트 인덱스와 일치하는 인덱스를 판별하고 상기 업데이트 인덱스에 대응하는 상태 값을 무효로 변경하고,
    상기 읽기 인덱스와 상기 업데이트 인덱스는 동일한 반도체 장치.
  16. 제 1 항에 있어서,
    상기 복수의 기능 블록들은,
    호스트와 통신하고, 상기 데이터 버스를 통해 상기 버퍼 메모리에 액세스하도록 구성되는 호스트 인터페이스; 및
    불휘발성 메모리 장치와 통신하고, 상기 데이터 버스를 통해 상기 버퍼 메모리에 액세스하도록 구성되는 메모리 인터페이스;를 포함하고,
    상기 복수의 다이렉트 인터페이스 채널은,
    상기 호스트 인터페이스를 상기 버퍼 관리 유닛에 연결하는 제 1 다이렉트 인터페이스 채널; 및
    상기 메모리 인터페이스를 상기 버퍼 관리 유닛에 연결하는 제 2 다이렉트 인터페이스 채널을 포함하고,
    상기 호스트 인터페이스 및 상기 메모리 인터페이스 각각은 상기 버퍼 메모리에 대한 액세스를 해당 다이렉트 인터페이스 채널을 통해 상기 버퍼 관리 유닛에 문의하고, 상기 버퍼 관리 유닛으로부터 상기 해당 다이렉트 인터페이스 채널을 통해 전송되는 문의 결과에 따라 상기 데이터 버스를 통해 상기 버퍼 메모리에 액세스하도록 구성되는 반도체 장치.
  17. 제 16 항에 있어서,
    상기 버퍼 메모리는 쓰기 버퍼 메모리 및 읽기 버퍼 메모리를 포함하는 반도체 장치.
  18. 제 17 항에 있어서,
    상기 호스트 인터페이스는 상기 쓰기 버퍼 메모리에 대한 쓰기 요청 커맨드를 상기 제 1 다이렉트 인터페이스 채널을 통해 상기 버퍼 관리 유닛에 전송하고, 상기 버퍼 관리 유닛으로부터 상기 제 1 다이렉트 인터페이스 채널을 통해 전송되는 제 1 승인 신호에 따라 상기 호스트로부터의 데이터를 상기 데이터 버스를 통해 상기 쓰기 버퍼 메모리에 저장하도록 구성되며,
    상기 메모리 인터페이스는 상기 읽기 버퍼 메모리에 대한 쓰기 요청 커맨드를 상기 제 2 다이렉트 인터페이스 채널을 통해 상기 버퍼 관리 유닛에 전송하고, 상기 버퍼 관리 유닛으로부터 상기 제 2 다이렉트 인터페이스 채널을 통해 전송되는 제 2 승인 신호에 따라 상기 불휘발성 메모리 장치로부터 읽혀진 데이터를 상기 데이터 버스를 통해 상기 읽기 버퍼 메모리에 저장하도록 구성되는 반도체 장치.
  19. 제 18 항에 있어서,
    상기 메모리 인터페이스는 상기 쓰기 버퍼 메모리에 대한 읽기 요청 커맨드를 상기 제 2 다이렉트 인터페이스 채널을 통해 상기 버퍼 관리 유닛에 전송하고, 상기 버퍼 관리 유닛으로부터 상기 제 2 다이렉트 인터페이스 채널을 통해 전송되는 제 3 승인 신호에 따라 상기 쓰기 버퍼 메모리에 저장된 상기 데이터를 상기 데이터 버스를 통해 읽도록 구성되고,
    상기 읽혀진 데이터는 상기 불휘발성 메모리 장치에 저장되는 반도체 장치.
  20. 제 18 항에 있어서,
    상기 호스트 인터페이스는 상기 읽기 버퍼 메모리에 대한 읽기 요청 커맨드를 상기 제 1 다이렉트 인터페이스 채널을 통해 상기 버퍼 관리 유닛에 전송하고, 상기 버퍼 관리 유닛으로부터 상기 제 1 다이렉트 인터페이스 채널을 통해 전송되는 제 4 승인 신호에 따라 상기 읽기 버퍼 메모리에 저장된 상기 데이터를 상기 데이터 버스를 통해 읽도록 구성되고,
    상기 읽혀진 데이터는 상기 호스트로 출력되는 반도체 장치.
KR1020140044925A 2014-04-15 2014-04-15 복수의 기능 블록들을 포함하는 반도체 장치 KR102181441B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140044925A KR102181441B1 (ko) 2014-04-15 2014-04-15 복수의 기능 블록들을 포함하는 반도체 장치
US14/483,912 US9798492B2 (en) 2014-04-15 2014-09-11 Semiconductor device including a plurality of function blocks

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140044925A KR102181441B1 (ko) 2014-04-15 2014-04-15 복수의 기능 블록들을 포함하는 반도체 장치

Publications (2)

Publication Number Publication Date
KR20150119565A KR20150119565A (ko) 2015-10-26
KR102181441B1 true KR102181441B1 (ko) 2020-11-24

Family

ID=54265116

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140044925A KR102181441B1 (ko) 2014-04-15 2014-04-15 복수의 기능 블록들을 포함하는 반도체 장치

Country Status (2)

Country Link
US (1) US9798492B2 (ko)
KR (1) KR102181441B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170060460A1 (en) * 2015-08-31 2017-03-02 Megachips Corporation Memory controller
JP6843508B2 (ja) * 2016-03-01 2021-03-17 キヤノン株式会社 情報処理装置及び情報処理装置の制御方法
CN107844435A (zh) * 2017-11-08 2018-03-27 北京锐安科技有限公司 一种缓存系统、方法及装置
KR102537373B1 (ko) * 2018-09-10 2023-05-30 에스케이하이닉스 주식회사 메모리 시스템에서의 데이터 전달 방법 및 장치

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100088463A1 (en) * 2008-10-02 2010-04-08 Samsung Electronics Co., Ltd. Nonvolatile memory system and data processing method
WO2012166050A1 (en) * 2011-05-30 2012-12-06 Agency For Science, Technology And Research Buffer management apparatus and method
US20130117497A1 (en) * 2011-11-07 2013-05-09 Peking University Buffer management strategies for flash-based storage systems

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6874039B2 (en) 2000-09-08 2005-03-29 Intel Corporation Method and apparatus for distributed direct memory access for systems on chip
US6950910B2 (en) 2001-11-08 2005-09-27 Freescale Semiconductor, Inc. Mobile wireless communication device architectures and methods therefor
KR20070080307A (ko) 2006-02-07 2007-08-10 삼성전자주식회사 Cpu의 성능 향상을 위한 버스 구조를 갖는 시스템과성능 향상방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100088463A1 (en) * 2008-10-02 2010-04-08 Samsung Electronics Co., Ltd. Nonvolatile memory system and data processing method
WO2012166050A1 (en) * 2011-05-30 2012-12-06 Agency For Science, Technology And Research Buffer management apparatus and method
US20130117497A1 (en) * 2011-11-07 2013-05-09 Peking University Buffer management strategies for flash-based storage systems

Also Published As

Publication number Publication date
US9798492B2 (en) 2017-10-24
US20150293721A1 (en) 2015-10-15
KR20150119565A (ko) 2015-10-26

Similar Documents

Publication Publication Date Title
KR100404607B1 (ko) 물리적으로 분산된 대칭형 멀티프로세서 시스템에서 버스메모리 트랜잭션간의 올바른 순서화를 달성하기 위한 방법및 장치
KR100404608B1 (ko) 대칭형 멀티프로세서용 버스식 캐시-코히런스 프로토콜을지원하기 위해 분산 시스템 구조를 이용하는 방법 및 장치
US7543114B2 (en) System and controller with reduced bus utilization time
US5857080A (en) Apparatus and method for address translation in bus bridge devices
KR102181441B1 (ko) 복수의 기능 블록들을 포함하는 반도체 장치
KR101733203B1 (ko) 아이디 컨버터를 포함하는 버스 시스템 및 그것의 변환 방법
KR20060122934A (ko) 복수의 어드레스 2 채널 버스 구조
KR20210150611A (ko) 메모리 액세스 기술 및 컴퓨터 시스템
KR102106541B1 (ko) 공유 리소스 액세스 중재 방법 및 이를 수행하기 위한 공유 리소스 액세스 중재 장치 및 공유 리소스 액세스 중재 시스템
JPH10149332A (ja) Dmaチャネルのサイズデータを受信するdma制御回路及びその方法
KR20150144545A (ko) 메모리 컨트롤러의 작동 방법과 이를 포함하는 장치들의 작동 방법들
KR100378389B1 (ko) 글로벌 코히런스를 제공하는 데이터처리시스템
US7484030B2 (en) Storage controller and methods for using the same
US6782463B2 (en) Shared memory array
US20080082621A1 (en) Slave network interface circuit for improving parallelism of on-chip network and system thereof
US20070156937A1 (en) Data transfer in multiprocessor system
US9292456B2 (en) System and method for data synchronization across digital device interfaces
JPH1040215A (ja) Pciバス・システム
US9672168B2 (en) System interconnection of system-on-chip
KR102206313B1 (ko) 시스템 인터커넥트 및 시스템 인터커넥트의 동작 방법
US6829692B2 (en) System and method for providing data to multi-function memory
US7107374B1 (en) Method for bus mastering for devices resident in configurable system logic
US8244987B2 (en) Memory access device including multiple processors
KR20080109591A (ko) 전자장치 및 그 데이터 송수신방법과, 슬레이브 장치 및복수의 장치 간의 통신방법
KR100950356B1 (ko) 다중 코히런시 단위들을 지원하는 데이터 전송 유닛

Legal Events

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