KR20190079672A - 정보 처리 장치, 메모리 액세스 방법 및 컴퓨터 프로그램 - Google Patents
정보 처리 장치, 메모리 액세스 방법 및 컴퓨터 프로그램 Download PDFInfo
- Publication number
- KR20190079672A KR20190079672A KR1020197016557A KR20197016557A KR20190079672A KR 20190079672 A KR20190079672 A KR 20190079672A KR 1020197016557 A KR1020197016557 A KR 1020197016557A KR 20197016557 A KR20197016557 A KR 20197016557A KR 20190079672 A KR20190079672 A KR 20190079672A
- Authority
- KR
- South Korea
- Prior art keywords
- command
- queue
- processing
- request
- queues
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
- G06F3/0649—Lifecycle management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
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)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
정보 처리 장치의 호스트 유닛(12)은, 플래시 메모리(20)에 대한 액세스 요구를 발행하는 커맨드 발행부(30)를 포함하고, 발행된 커맨드는, 액세스의 내용 및 긴급성의 높이에 따라 복수의 큐(44)로 나누어 저장된다. 플래시 컨트롤러(18)의 관리 커맨드 생성부(42)는, 플래시 메모리(20)의 관리에 필요한 처리의 요구를 생성하고, 큐(44) 중 어느 큐에 저장한다. 커맨드 처리부(46)는, 큐별로 설정된 규칙에 따라, 큐를 전환하여 커맨드를 판독하고, 처리한다.
Description
본 발명은 플래시 메모리에 액세스하는 정보 처리 장치 및 메모리 액세스 방법에 관한 것이다.
NAND형 플래시 메모리의 용량 확대에 수반하여, 종래의 HDD(Hard Disk Drive)를 대신할 기억 장치로서 SSD(Solid State Drive)가 사용되어 왔다. SSD는 HDD와 비교하여 데이터 액세스를 고속이면서 또한 저소비 전력으로 행할 수 있다고 하는 이점이 있는 한편, 반복적인 데이터 판독이나 재기입에 대한 내구성이 낮다고 하는 특성을 갖는다. 그 때문에 SSD에 대한 데이터 재기입에는, 재기입 대상의 영역을 분산시키는 처리가 이루어진다. 예를 들어 호스트 CPU로부터 재기입 요구가 이루어졌을 때, 지정된 논리 블록 어드레스를 상이한 물리 어드레스로 치환함으로써, 재기입 대상을 가능한 한 복수의 메모리 셀에 분산시킨다(예를 들어 특허문헌 1 참조).
상술한 바와 같이 SSD는 고속 액세스가 가능하기 때문에, 정보 처리에 필요한 데이터의 대부분을, 필요한 시점에서 판독하도록 함으로써, 시스템 메모리의 용량을 억제할 수 있다. 한편, 그렇게 액세스의 빈도가 증가하면, SSD 특유의 관리 처리의 문제가 현재화된다. 관리 처리에는 예를 들어 다음과 같은 것이 있다. 즉, NAND형 플래시 메모리는 덮어쓰기가 불가능하기 때문에, 상술한 바와 같이 여러 가지 영역에 데이터가 기입된 경우, 어느 단계에서 그것들을 연속된 영역에 카피하여, 빈 영역의 데이터를, 이후의 기입에 대비하여 소거할 필요가 생긴다.
또한, 판독이 반복됨으로써 소자의 전하가 누설되어 데이터가 파괴될 가능성에 대비하여, 어떤 단계에서 데이터를 다른 영역으로 대피시키는 것도 필요하게 된다. 또한, 기입을 고속으로 행하기 위해, 1메모리 셀당 1비트를 기록하는 SLC(Single Level Cell)를 캐시로서 사용하여, 후속 타이밍에, 1메모리 셀당 3비트를 기록 가능한 TLC(Triple Level Cell)로 다시 저장하는 일도 이루어진다. 이들 관리 처리를, 호스트 CPU로부터의 요구보다 우선시키면, 정보 처리에 간과할 수 없는 지연 시간을 발생시키는 경우가 있다. 한편, 관리 처리를 적절한 타이밍에 행하지 않으면, 호스트 CPU로부터의 요구를 처리할 수 없게 되는 경우도 있을 수 있다.
본 발명은 이러한 과제를 감안하여 이루어진 것이며, 그 목적은, 메모리 액세스를 위한 지연 시간을 억제하면서 SSD를 이용한 정보 처리를 안정적으로 행할 수 있는 기술을 제공하는 데 있다.
본 발명의 일 양태는 정보 처리 장치에 관한 것이다. 이 정보 처리 장치는, 호스트 프로세서로부터 메모리로의 액세스 요구를 접수하는 커맨드 접수부와, 액세스 요구가 분류되어 저장된 복수의 큐 중 어느 것으로부터 액세스 요구를 판독하여, 실행하는 커맨드 처리부를 포함하는 메모리 컨트롤러를 구비하고, 커맨드 처리부는, 큐별로 설정된 규칙에 따른 타이밍에, 복수의 큐 중 요구 판독처의 큐를 다음으로 전환하는 것을 특징으로 한다.
본 발명의 또 다른 양태는 메모리 액세스 방법에 관한 것이다. 이 메모리 액세스 방법은, 메모리 컨트롤러가, 호스트 프로세서로부터 메모리로의 액세스 요구를 접수하는 스텝과, 액세스 요구를 분류하여 저장하는 복수의 큐 중 어느 것으로부터 액세스 요구를 판독하는 스텝과, 판독한 액세스 요구를 실행하는 스텝을 포함하고, 판독하는 스텝은, 큐별로 설정된 규칙에 따른 타이밍에, 복수의 큐 중 요구 판독처의 큐를 다음으로 전환하는 것을 특징으로 한다.
또한, 이상의 구성 요소의 임의의 조합, 본 발명의 표현을 방법, 장치, 시스템, 컴퓨터 프로그램, 컴퓨터 프로그램을 기록한 기록 매체 등의 사이에서 변환한 것도 또한, 본 발명의 양태로서 유효하다.
본 발명에 따르면, 메모리 액세스를 위한 지연 시간을 억제하면서 SSD를 이용한 정보 처리를 안정적으로 행할 수 있다.
도 1은, 본 실시 형태에 있어서의 정보 처리 장치의 회로 구성을 도시하는 도면이다.
도 2는, 본 실시 형태에 있어서의 정보 처리 장치의 기능 블록의 구성을 도시하는 도면이다.
도 3은, 본 실시 형태에 있어서의 큐의 구성예를 도시하는 도면이다.
도 4는, 본 실시 형태에 있어서 각 페이즈에서 처리하는 큐의 종류와, 각 페이즈에 있어서의 커맨드의 처리 상한수와 제한 시간의 설정예를 도시하는 도면이다.
도 5는, 본 실시 형태에 있어서의 커맨드 처리부가, 페이즈 1 및 페이즈 4에 있어서 데이터를 판독하는 처리의 수순을 도시하는 흐름도이다.
도 6은, 본 실시 형태에 있어서의 커맨드 처리부가, 페이즈 2에 있어서 데이터의 판독 혹은 기입을 행하는 처리 수순을 도시하는 흐름도이다.
도 7은, 본 실시 형태에 있어서의 커맨드 처리부가, 페이즈 3에 있어서 관리 처리 중 판독 처리를 행하는 처리 수순을 도시하는 흐름도이다.
도 8은, 본 실시 형태에 있어서의 커맨드 처리부가, 페이즈 5에 있어서 관리 처리 중 기입 처리 및 데이터 소거를 행하는 처리 수순을 도시하는 흐름도이다.
도 9는, 본 실시 형태에 있어서, 호스트 유닛으로부터의 통지에 따라 페이즈를 전환하는 규칙을 도입하는 형태를 설명하기 위한 도면이다.
도 10은, 본 실시 형태의 커맨드 조정부에 의한 조정에 주안을 둔 플래시 컨트롤러의 처리 수순을 도시하는 흐름도이다.
도 2는, 본 실시 형태에 있어서의 정보 처리 장치의 기능 블록의 구성을 도시하는 도면이다.
도 3은, 본 실시 형태에 있어서의 큐의 구성예를 도시하는 도면이다.
도 4는, 본 실시 형태에 있어서 각 페이즈에서 처리하는 큐의 종류와, 각 페이즈에 있어서의 커맨드의 처리 상한수와 제한 시간의 설정예를 도시하는 도면이다.
도 5는, 본 실시 형태에 있어서의 커맨드 처리부가, 페이즈 1 및 페이즈 4에 있어서 데이터를 판독하는 처리의 수순을 도시하는 흐름도이다.
도 6은, 본 실시 형태에 있어서의 커맨드 처리부가, 페이즈 2에 있어서 데이터의 판독 혹은 기입을 행하는 처리 수순을 도시하는 흐름도이다.
도 7은, 본 실시 형태에 있어서의 커맨드 처리부가, 페이즈 3에 있어서 관리 처리 중 판독 처리를 행하는 처리 수순을 도시하는 흐름도이다.
도 8은, 본 실시 형태에 있어서의 커맨드 처리부가, 페이즈 5에 있어서 관리 처리 중 기입 처리 및 데이터 소거를 행하는 처리 수순을 도시하는 흐름도이다.
도 9는, 본 실시 형태에 있어서, 호스트 유닛으로부터의 통지에 따라 페이즈를 전환하는 규칙을 도입하는 형태를 설명하기 위한 도면이다.
도 10은, 본 실시 형태의 커맨드 조정부에 의한 조정에 주안을 둔 플래시 컨트롤러의 처리 수순을 도시하는 흐름도이다.
도 1은, 본 실시 형태의 정보 처리 장치의 회로 구성을 도시하고 있다. 여기서 예시하는 정보 처리 장치는, 휴대 게임기, 퍼스널 컴퓨터, 휴대 전화, 태블릿 단말기, PDA 등 일반적인 정보 기기 중 어느 것이어도 된다. 정보 처리 장치(10)는, CPU를 포함하는 호스트 유닛(12), 시스템 메모리(14), NAND형 플래시 메모리(20)(이후, 간단히 플래시 메모리(20)라고 칭함), 플래시 컨트롤러(18)를 포함한다.
호스트 유닛(12)은, 플래시 메모리(20)에 저장된 프로그램이나 데이터를 시스템 메모리(14)에 로드하고, 그것을 사용하여 정보 처리를 행한다. 또한, 애플리케이션 프로그램이나 데이터를, 도시하지 않은 기록 매체 구동부에 있어서 구동된 기록 매체로부터 판독하거나, 통신부에 의해 네트워크 접속된 서버로부터 다운로드하거나 하여 플래시 메모리(20)에 저장한다. 이때, 호스트 유닛(12)은 플래시 컨트롤러(18)에, 플래시 메모리(20)에 대한 액세스 요구를 발행하고, 플래시 컨트롤러(18)는 그에 따라 플래시 메모리(20)에 대하여 판독/기입 처리를 실시한다.
플래시 메모리(20)에는 복수의 NAND형 플래시 메모리가 접속되어 있고, 데이터는 도시하는 바와 같이 복수의 채널(도면에서는 「ch0」 내지 「ch3」의 4채널)에 분산되어 저장된다. 플래시 컨트롤러(18)는, 호스트 유닛(12)과의 인터페이스 기능을 갖는 호스트 컨트롤러(22), 플래시 메모리(20)와의 인터페이스 기능을 갖는 메모리 컨트롤러(28), 및 SRAM(Static Random Access Memory)(24)을 포함한다.
호스트 유닛(12)은, 정보 처리의 진척에 따라 플래시 메모리(20)에 대한 액세스 요구를 발생시키고, 그것을 시스템 메모리(14)에 저장한다. 당해 액세스 요구에는 액세스처의 논리 어드레스(LBA: Logical Block Address)가 포함된다. 플래시 컨트롤러(18)의 호스트 컨트롤러(22)는, 시스템 메모리(14)에 저장된 액세스 요구를 판독하고, LBA를 플래시 메모리(20)의 물리 어드레스로 변환한다. 이때, 필요한 어드레스 변환 테이블은, 원래, 플래시 메모리(20)에 저장되어 있었던 것의 적어도 일부를 SRAM(24)에 전개해 둔다.
호스트 컨트롤러(22)는, 당해 어드레스 변환 테이블을 참조하여, LBA에 기초하여 취득한 물리 어드레스를 메모리 컨트롤러(28)에 공급한다. 메모리 컨트롤러(28)는, 당해 물리 어드레스에 기초하여 플래시 메모리(20)의 해당되는 영역에 액세스함으로써, 데이터를 판독하거나 기입하거나 한다. 기입해야 할 데이터는, 호스트 유닛(12)이 시스템 메모리(14)에 저장한 것을 메모리 컨트롤러(28)가 판독한다. 판독한 데이터는, 메모리 컨트롤러(28)가 시스템 메모리(14)에 저장하여, 호스트 유닛(12)이 판독할 수 있도록 한다.
일반적으로, 플래시 메모리(20)에 대한 데이터의 판독이나 기입은, 4096바이트 등의 액세스 단위로 이루어진다. NAND형 플래시 메모리를 사용한 경우, 데이터의 덮어쓰기는 불가능하기 때문에, 데이터를 기입할 때에는, 아무것도 기입되어 있지 않은 영역을 확보해 둘 필요가 있다. 상술한 바와 같이 기입 영역을 분산시키기 위해 논리 어드레스만 변경하고 데이터의 갱신이 반복되면, 무효로 된 원래의 데이터를 저장할 영역이 늘어나서, 이윽고 새롭게 기입이 가능한 영역이 고갈된다.
데이터의 소거는 수MiB(1MiB=1020바이트)의 블록 단위로 이루어지기 때문에, 아무것도 기입되어 있지 않은 영역을 확보하기 위해서는, 소거 대상의 블록에 저장되어 있는 유효한 데이터를 다른 블록에 카피한 후에 원래 블록의 데이터 전체를 소거한다. 이러한 처리를 일반적으로 「가비지 컬렉션(Garbage Collection)」이라고 칭한다. 즉 메모리 컨트롤러(28)는, 플래시 메모리(20)에 있어서 기입이 가능한 영역이 고갈되거나, 그 이전의 적절한 타이밍에, 가비지 컬렉션을 실시할 필요가 있다.
또한, NAND형 플래시 메모리는, 전하의 누설에 의해 데이터 불량을 발생시킨다. 이 전하의 누설은, 데이터의 판독에 있어서의 전압 인가에 의해 가속된다. 메모리 컨트롤러(28)는 일반적으로, 이러한 불량 데이터의 오류 정정 기능을 갖지만, 판독 동작이 고빈도로 이루어지면, 오류율이 정정 능력을 초과하여, 이윽고 데이터가 소실되어 버리는 경우도 있다. 이러한 불량은 일반적으로 「판독 디스터브(Read Disturb)」라고 불린다.
판독 동작은 대상의 데이터 영역 이외에 전압을 인가함으로써 이루어지기 때문에, 동일 블록에 대한 판독이 반복됨으로써, 블록 전체에서 불량이 발생할 수 있다. 따라서, 메모리 컨트롤러(28)는, 동일 블록의 판독 횟수가 소정값에 도달하면, 당해 블록 전체의 데이터를 다른 블록으로 대피시킴으로써, 누설된 전하를 다시 차지한다.
또한, NAND형 플래시 메모리는, 축적할 전하량에 역치를 설정하여 8단계로 함으로써, 1메모리 셀당 3비트의 데이터를 기록하는 TLC를 포함한다. 그러나, TLC는, 2단계의 전하량에 의해 1메모리 셀당 1비트의 데이터를 기록하는 SLC와 비교하여 복잡한 기입 시퀀스가 필요하게 되므로, 기입 처리에 시간이 걸린다. 그래서 플래시 메모리(20)의 일부를 SLC의 영역으로서 확보해 두고, 그것을 캐시로서 사용함으로써 기입 처리를 고속화한다. 이때 메모리 컨트롤러(28)는, 기입 요구의 수행과는 다른 적절한 타이밍에, SLC에 기입된 데이터를 TLC로 카피해 둔다.
이와 같이 메모리 컨트롤러(28)는, NAND형 플래시 메모리 특유의 관리 처리를, 호스트 유닛(12)으로부터의 요구와는 별도로 실시할 필요가 있다. 일단, 관리 처리의 필요가 생기면, 그것이 완료될 때까지의 비교적 긴 기간, 통상의 데이터 판독이나 기입 처리가 부득이하게 대기하게 된다. 그 결과, 정보 처리에 간과할 수 없는 지연이 발생하거나 처리 전체의 스루풋이 현저하게 저하되거나 하는 경우가 있다. 플래시 메모리(20)에 저장된 데이터를 빈번하게 판독하여 표시 화상을 묘화하는 양태에서는, 액세스 횟수의 증가에 수반하여 관리 처리의 빈도도 증가하기 때문에, 화상 표시까지의 시간 제한의 엄격함과 더불어 문제가 현재화되기 쉽다.
그래서 본 실시 형태에서는, 정보 처리에 필요한 데이터 판독이나 기입의 처리와 관리 처리의 실시 빈도의 밸런스를 적절하게 유지하고, 파탄없이 양자를 실시하면서 정보 처리의 지연이 최소한으로 억제되도록 한다. 구체적으로는, 상술한 바와 같은 관리 처리와, 호스트 유닛(12)으로부터의 액세스 요구를, 각각 처리 내용에 따라 분류하여, 상이한 큐에 저장한다. 그리고, 처리 내용의 종류에 따른 고유의 규칙으로 대상 큐를 전환함으로써, 확실하게 수행해야 할 처리에 대해서는 절대적인 척도로 완수할 수 있도록 한다.
또한, 호스트 유닛(12)으로부터의 액세스 요구의 처리 빈도와 관리 처리의 필요성이 생기는 빈도의 인과 관계를 근거로 하여 큐의 전환 규칙을 결정함으로써, 양자의 밸런스를 최적화함과 함께 소요 시간이나 대역폭의 견적을 용이하게 한다. 이후, 관리 처리를 위한 처리 요구와 호스트 유닛(12)으로부터의 액세스 요구를 통합하여 「커맨드」라고 칭하는 경우가 있다.
도 2는, 본 실시 형태에 있어서의 정보 처리 장치의 기능 블록의 구성을 도시하고 있다. 도 2에 도시하는 각 기능은, 하드웨어적으로는 도 1에 도시하는 회로 구성으로 실현할 수 있고, 소프트웨어적으로는, 내부 메모리에 보유하는 프로그램으로 실현된다. 따라서, 하드웨어만, 소프트웨어만, 또는 그들의 조합에 의해 다양한 형태로 실현될 수 있다는 것은 당업자에게는 이해되는 바이며, 어느 것에 한정되는 것은 아니다.
호스트 유닛(12)은, 플래시 메모리(20)에 대한 액세스를 위한 커맨드를 발행하는 커맨드 발행부(30), 애플리케이션 프로그램 등을 처리하는 정보 처리부(32), 플래시 메모리(20)에 대하여 판독 혹은 기입되는 데이터를 입출력하는 데이터 입출력부(34)를 포함한다. 시스템 메모리(14)는, 호스트 유닛(12)으로부터 발행된 커맨드를 저장하는 복수의 큐(36), 및 플래시 메모리(20)에 대하여 판독 혹은 기입되는 데이터를 저장하는 데이터 저장부(38)를 포함한다.
플래시 컨트롤러(18)는, 커맨드가 발행되었다는 취지의 통지를 호스트 유닛(12)으로부터 취득하는 커맨드 접수부(40), 플래시 메모리(20)의 관리를 위한 커맨드를 발생시키는 관리 커맨드 생성부(42), 관리를 위한 커맨드를 포함하는 각 커맨드를 저장하는 복수의 큐(44), 큐(44)에 저장된 커맨드를 순차적으로 처리하는 커맨드 처리부(46), 처리 대상의 큐를 전환하는 규칙을 저장하는 전환 규칙 기억부(48), 및 관리 처리를 실시하는 비율을 소정의 방법으로 조정하는 커맨드 조정부(50)를 포함한다.
호스트 유닛(12)의 정보 처리부(32)는, 유저가 선택한 애플리케이션 등의 프로그램을 처리한다. 그 과정에 있어서 플래시 메모리(20)에 저장된 데이터를 판독하거나, 플래시 메모리(20)에 데이터를 기입하거나 할 필요가 생기면, 정보 처리부(32)는 그 취지를 커맨드 발행부(30)에 통지한다. 이에 따라 커맨드 발행부(30)는, 액세스처의 논리 어드레스를 지정하여, 판독 혹은 기입의 커맨드를 발행한다.
보다 상세하게는, 시스템 메모리(14)의 복수의 큐(36) 중 어느 것에 커맨드를 저장함과 함께, 플래시 컨트롤러(18)에 그 취지를 통지한다. 이때, 커맨드 발행부(30)는, 판독 요구나 기입 요구와 같은 액세스 내용 외에, 긴급성의 높이에 기초하여 커맨드를 분류하고, 분류 결과에 대응하는 큐에 저장한다. 이 때문에, 액세스 내용, 제한 시간, 액세스할 데이터의 사이즈 등에 기초하는 커맨드의 분류 규칙과, 대응하는 큐의 어드레스 정보를, 정보 처리부(32)가 처리하는 프로그램 등에서 미리 설정해 둔다.
커맨드가 기입 요구인 경우, 데이터 입출력부(34)는, 기입해야 할 데이터를 정보 처리부(32)로부터 취득하고, 시스템 메모리(14)의 데이터 저장부(38)에 저장한다. 또한, 데이터 입출력부(34)는, 판독 요구에 따라 플래시 컨트롤러(18)가 플래시 메모리(20)로부터 판독한 데이터를, 데이터 저장부(38)로부터 판독하여 정보 처리부(32)에 공급한다.
플래시 컨트롤러(18)의 커맨드 접수부(40)는, 커맨드가 발행되었다는 취지의 통지를 호스트 유닛(12)으로부터 접수하고, 시스템 메모리(14)의 해당되는 큐로부터 커맨드를 판독한 후, 내부에 보유하는 복수의 큐(44) 중 대응하는 큐에 저장한다. 여기서 플래시 컨트롤러(18)가 보유하는 큐(44)는, 시스템 메모리(14) 내의 복수의 큐(36)와 동일한 구성의 복수의 큐를 포함한다. 혹은 시스템 메모리(14) 내의 큐(36)를, 큐(44)의 일부로서 참조할 수 있도록 해도 된다.
관리 커맨드 생성부(42)는, 상술한 가비지 컬렉션, 판독 디스터브 회피를 위한 데이터 카피, SLC로부터 TLC로의 데이터 카피와 같은 관리 처리가 필요하게 되는 단계에서, 그들 처리를 요구하는 커맨드를 발행한다. 보다 상세하게는, 플래시 메모리(20)에 대한 데이터의 기입 상황이나 판독 상황을 감시하여, 관리 처리의 커맨드를 발행해야 할 타이밍을 판정한다. 판정 규칙은 관리 처리의 내용별로 미리 설정해 둔다.
그리고, 처리 내용, 데이터의 카피원 어드레스, 카피처 어드레스, 데이터 소거해야 할 블록 등을 지정한 커맨드를, 큐(44)의 관리 처리를 위한 큐 중, 처리 내용에 대응하는 큐에 저장한다. 또한, 동일 도면에서는, 큐(44) 중, 호스트 유닛(12)이 발행한 커맨드를 저장하는 큐를 백색, 관리 커맨드 생성부(42)가 발행한 커맨드를 저장하는 큐를 망점으로 나타내어 구별하고 있다.
커맨드 처리부(46)는, 큐(44)에 저장된 커맨드를 순차적으로 처리한다. 이때, 하나의 큐에 저장된 커맨드는, 그 저장순을 지켜 처리한다. 또한, 커맨드 처리부(46)는 처리 대상의 큐를, 각각에 설정된 전환 규칙에 따라 다음 큐로 전환한다. 즉 다른 큐에 저장된 커맨드는, 발행순과 상이한 순서로 처리되는 경우가 있을 수 있다. 큐의 전환 규칙은 전환 규칙 기억부(48)에 저장해 두고, 커맨드 처리부(46)가 참조한다.
큐로부터 판독한 커맨드가 기입 요구인 경우, 커맨드 처리부(46)는, 기입해야 할 데이터를 시스템 메모리(14)의 데이터 저장부(38)로부터 판독하고, 커맨드에 포함되는 논리 어드레스에 대응하는 영역에 당해 데이터를 기입한다. 커맨드가 판독 요구인 경우, 커맨드 처리부(46)는, 커맨드에 포함되는 논리 어드레스에 대응하는 영역으로부터 판독한 데이터를, 시스템 메모리(14)의 데이터 저장부(38)에 저장한다. 커맨드가 플래시 메모리(20) 내부에서의 데이터의 이동인 경우, 커맨드 처리부(46)는, 커맨드에 포함되는 카피원의 어드레스로부터 카피처의 어드레스로 데이터를 카피한다. 또한, 필요에 따라 카피원의 블록의 데이터를 소거한다.
커맨드 조정부(50)는, 관리 처리가 완료되지 않고 메모리 액세스가 파탄되는 일이 없도록, 실시할 처리의 비율을 조정한다. 예를 들어 큐(44)에 저장된 관리 처리를 위한 커맨드의 수가 소정의 역치를 초과하였을 때, 전환 규칙 기억부(48)에 저장된, 큐의 전환 규칙 중 적어도 어느 것을 일시적으로 변경하거나, 호스트 유닛(12)에 그 취지를 통지하거나 한다.
전자의 경우, 관리 처리의 커맨드를 저장하는 큐로부터 다음 큐로 전환하는 규칙으로서 설정되어 있는 제한 시간이나 커맨드 처리수의 상한을 증가시키거나, 그 이외의 큐의 커맨드 처리수의 상한을 감소시키거나 한다. 이에 의해, 실질적으로 관리 처리를 실시하는 비율을 증가시킬 수 있다. 큐(44)에 저장된 관리 처리를 위한 커맨드의 수가 상기 역치 이하로 되면 큐의 전환 규칙을 원상태로 되돌린다.
호스트 유닛(12)에 통지하는 경우, 호스트 유닛(12)의 커맨드 발행부(30)는 통지를 받아 커맨드의 발행을 제한한다. 예를 들어 긴급성이 낮은 커맨드의 발행을 일시 정지하거나 발행의 빈도를 소정값 이하로 제한하거나 한다. 이와 같이 해도 실질적으로 관리 처리를 실시하는 비율을 증가시키게 된다. 또한, 큐의 전환 규칙을 변경하거나 호스트 유닛(12)에 통지하거나 하는 타이밍은 상기 이외여도 된다.
예를 들어, 가비지 컬렉션이나 판독 디스터브를 회피하기 위한 처리의 필요성은, 그때까지의 메모리 액세스의 상황에 따라 예측할 수 있기 때문에, 미리 그들의 대책을 강구해 둘 수도 있다. 구체적으로는, 기입 가능한 블록수가 소정의 역치 이하로 되었을 때, 가비지 컬렉션의 커맨드가 머지않아 발행될 것으로 판정된다. 여기서 사용하는 역치는 당연히, 실제로 가비지 컬렉션의 커맨드를 발행할 때의 역치보다 큰 값으로 한다.
혹은, 동일 블록에 대한 판독 처리의 횟수가 소정의 역치에 도달하였을 때, 판독 디스터브 회피를 위한 데이터 카피 커맨드가 머지않아 발행될 것으로 판정된다. 여기서 사용하는 역치는 당연히, 실제로 데이터 카피 커맨드를 발행할 때의 역치보다 작은 값으로 한다. 그리고, 이들 타이밍에, 큐의 전환 규칙을 변경하거나 호스트 유닛(12)에 통지하거나 하면, 미리 조정할 수 있는 만큼, 조정량을 억제할 수 있다.
기입 가능한 블록수나 동일 블록에 대한 판독 처리의 횟수를, 호스트 유닛(12)에 정기적으로 통지함으로써, 호스트 유닛(12)에 의한 커맨드의 발행을 서서히 제한할 수 있도록 해도 된다. 또한, 큐의 전환 규칙을 변경하는 대응과, 호스트 유닛(12)에 대한 통지는, 독립적으로 행해도 되고, 동시에 행해도 된다. 이러한 조정 처리에 의해, 호스트 유닛(12)으로부터의 액세스 요구의 처리와 플래시 메모리(20) 자신이 필요로 하는 관리 처리의 밸런스를 적절하게 유지하며, 또한 긴급성이 높은 커맨드의 처리에 대해서는 저지연을 보장할 수 있다.
도 3은, 큐(44)의 구성예를 도시하고 있다. 여기서 원기둥은 각 큐를 모식적으로 도시하고 있고, 그 바로 밑에는, 각 큐에 저장되는 커맨드의 종류를 나타내고 있다. 플래시 메모리(20)는 상이한 이름 공간(NS: Name Space)을 갖는 논리적인 파티션으로 나누어지며, 배타 액세스된다. 큐도 당해 파티션별로 마련되며, 도면에서는 상단부터 순서대로, 식별 부호 a, b, c의 이름 공간(「NSIDa」, 「NSIDb」, 「NSIDc」)에 대하여 마련되는 큐를 나타내고 있다. 또한, 최하단에는, 관리 처리를 나타내는 「BG Job」(Background Job)으로서, 그에 대해 마련되는 큐도 나타내고 있다.
이 예에서 「NSIDa」는, 통상의 파일 시스템에 의해 액세스되는 파티션이며, 표준적인 판독 커맨드와 기입 커맨드가 혼재하는 큐(51)를 마련하고 있다. 「NSIDb」는, 판독만의 파일 아카이브를 다루기 위한 파티션이며, 일단, 기입 커맨드 전용의 큐(58)를 사용하여 파일을 기입하면, 판독 커맨드 전용의 큐(52, 54, 56)를 사용하여 데이터를 판독한다.
여기서 판독 커맨드 전용의 큐는, 긴급성의 높이에 따라 복수의 큐로 구성되며, 동일 도면에서는 긴급성이 가장 높은 「긴급」의 큐(52), 다음으로 긴급성이 높은 「고우선도」의 큐(54), 긴급성이 가장 낮은 「통상 우선도」의 큐(56)의 3단계로 되어 있다. 단, 단계수를 이것에 한한다는 취지는 아니다. 또한, 기입 커맨드 전용의 큐(58)는, 「NSIDa」의 큐(51)와 동일 정도의 우선도를 갖는 표준적인 큐로 되어 있다.
「NSIDc」는 SLC로 구성되는 파티션이며, 고속 기입 전용의 큐(60)와, 판독 커맨드와 기입 커맨드가 혼재하는 큐(62)를 마련하고 있다. 또한 후자는 「NSIDa」의 큐(51)와 동일 정도의 우선도를 갖는 표준적인 큐로 되어 있다.
「BG Job」으로서는 상술한 바와 같이, SLC로부터 TLC로 데이터를 카피하는 커맨드를 위한 큐(64), 판독 디스터브 회피를 위한 데이터 카피 커맨드를 위한 큐(66), 가비지 컬렉션 커맨드를 위한 큐(68)를 마련한다. 큐로서는 이 밖에, 운용 중에 백그라운드에서 실행해야 할 상술한 바와 같은 관리 처리와는 별도로, 시스템을 관리하기 위한 커맨드를 저장하는 큐 등이 있어도 된다.
플래시 컨트롤러(18)의 커맨드 처리부(46)는 상술한 바와 같이, 전환 규칙 기억부(48)에 저장된 규칙에 따라 큐를 전환하면서, 저장되어 있는 커맨드를 순서대로 처리해 간다. 보다 상세하게는, 큐(51 내지 68) 자체를 복수 종류로 나누고, 각 종류에 대하여 처리 기간을 할당하여 순환시킨다. 어떤 종류의 큐를 처리 대상으로 하고 있는 기간에 있어서, 커맨드의 처리수가 상한까지 도달한 시점, 혹은 제한 시간이 만료된 시점에서, 다음 종류의 큐를 처리 대상으로 하는 기간으로 이행한다. 처리 상한수나 제한 시간은, 큐의 종류별로 독립적으로 설정 가능하게 한다. 이후, 큐의 종류별로 할당되는 기간을 「페이즈」라고 칭한다.
도 4는, 각 페이즈에서 처리하는 큐의 종류와, 각 페이즈에 있어서의 커맨드의 처리 상한수와 제한 시간의 설정예를 도시하고 있다. 이 예에서는 페이즈 1부터 페이즈 5의 5개의 기간으로 나누고 있고, 페이즈 1, 2, 3, 4, 5, 1, 2, …로 순환하여 이행시킨다. 우선 페이즈 1은, NSIDb에 대한 판독 전용의 큐, 즉 도 3의 예에서는 큐(52, 54, 56)의 3개의 큐를 처리 대상으로 한다. 이들 큐 중, 긴급성이 높은 큐일수록 우선하여 처리 대상으로 한다. 커맨드의 처리 상한은 50개로 하고 있다. 또한, 커맨드수는, 소정 사이즈의 데이터에 대한 액세스를 1단위로서 카운트한다. 이후의 설명에서도 마찬가지이다.
페이즈 2는, NSIDc에 대한 고속 기입 전용의 큐, NSIDa 및 NSIDc에 대한 표준 판독/기입의 큐, 및 NSIDb에 대한 표준 기입 전용의 큐를 처리 대상으로 한다. 이들은 도 3의 예에서는, 큐(60, 51, 62, 58)에 각각 대응한다. 이들 큐 중, 고속 기입 전용의 큐(60)에 커맨드가 저장되어 있으면, 그것을 우선함으로써 SLC에 대한 고속 기입을 실현한다.
페이즈 3은, BG Job, 즉 관리 처리용 큐(도 3의 예에서는 큐(64, 66, 68))를 처리 대상으로 한다. 이들 큐에 저장되는 커맨드는 모두, 플래시 메모리(20)에 저장 완료된 데이터를 다른 영역으로 옮기는 처리를 포함하지만, 페이즈 3에서는 그 중, 원래의 데이터를 판독하는 부분만을 실시한다. 판독한 데이터는 일시적으로 내부 메모리 혹은 시스템 메모리(14)에 저장해 둔다.
페이즈 4는 페이즈 1과 마찬가지로, NSIDb에 대한 판독 전용의 큐를 처리 대상으로 한다. 동일한 큐에 대한 처리를 2개의 기간으로 나눔으로써, 앞의 기간 종료 직후에 발행된 커맨드를 다음 기간에서 바로 처리할 수 있어, 최대 지연 시간을 적게 할 수 있다. 페이즈 5는, BG Job, 즉 관리 처리용 큐에 저장된 커맨드 중, 페이즈 3에서 판독한 데이터의 기입, 및 카피에 의해 무효로 된 데이터의 소거를 행한다.
예를 들어 NSIDb에 저장된 데이터를 사용하여, 소정의 프레임 레이트로 표시 화상을 묘화하는 경우, 그 데이터 판독이 지연됨으로써 화면이 프리즈되거나 코마 드롭되거나 하는 일이 있을 수 있다. 관리 처리용 큐에 저장되는 커맨드는 모두, 처리 완료에 많은 시간을 요하기 때문에, 페이즈 3과 페이즈 5로 나누어 2단계의 처리로 함으로써, 표시 화상의 묘화 등 리얼 타임성이 추구되는 처리가 방해되지 않도록 한다.
또한 데이터의 판독이나 SLC에 대한 기입과 비교하여, TLC에 대한 기입이나 데이터 소거는 몇배 이상의 시간을 요한다. 따라서 후자를 페이즈 5로서 통합함과 함께, 제한 시간을 마련하여, 처리 도중이라도 일단 중단하고 다른 페이즈로 이행할 수 있도록 한다. 도면의 예에서는, 페이즈 5의 제한 시간을 「3.0msec」로 하고 있다. 제한 시간 외에, 긴급성이 높은 큐, 예를 들어 도 3의 긴급 판독 큐(52)에 커맨드가 저장된 시점에서, 페이즈 5의 처리를 중단하도록 해도 된다.
이에 의해, 상술한 바와 같이 NSIDb로부터 판독한 데이터를 사용하여 표시 화상을 묘화하는 양태에 있어서, 표시 화상에 대한 영향을 최소한으로 억제할 수 있다. 또한 페이즈 5의 처리를 중단한 경우, 중단시킨 처리가 완료될 때까지는, 페이즈 2 및 페이즈 3을 스킵하고 페이즈를 이행시켜도 된다.
도 4에서는, 각 페이즈에 부여하는 커맨드수의 처리 상한과, 그에 의해 상정되는 최대 소요 시간도 예시하고 있다. 페이즈 1 및 4에서는, NSIDb로부터의 데이터 판독을 「50」 커맨드를 상한으로 하여 처리한다. 판독 처리가 1커맨드당 100μsec, 그 이외에 요하는 시간을 100μsec라고 하면, 페이즈 1 및 4의 소요 시간은 최대 5.1msec로 된다. 페이즈 2에서는, NSIDa 내지 NSIDc에 대한 기입이라면 「1」 커맨드, 판독이라면 「4」 커맨드를 상한으로 하여 처리한다.
여기서 이루어지는 SLC에 대한 기입 처리가 1커맨드당 500μsec라고 하고, 판독 처리가 상술한 바와 마찬가지로, 1커맨드당 100μsec, 그 이외에 요하는 시간을 100μsec라고 하면, 기입, 판독의 어느 경우에 있어서도 페이즈 2의 소요 시간은 최대 0.5msec로 된다. 페이즈 3에서는, 카피원의 데이터의 판독을 「3」 커맨드를 상한으로 하여 처리한다. 판독 처리가 상술한 바와 마찬가지로, 1커맨드당 100μsec, 그 이외에 요하는 시간을 100μsec라고 하면, 페이즈 3의 소요 시간은 최대 0.4msec로 된다.
페이즈 5에서는, 카피처로의 데이터의 기입을 「1」 커맨드를 상한으로 하여 처리한다. 무효로 된 영역의 데이터 소거는 상술한 바와 같이 제한 시간 「3.0msec」로 구속되며, 서서히 진척시켜 간다. 이와 같이 제한을 부여하면, 페이즈 1부터 페이즈 5까지의 1사이클분의 처리는 최대 14.1msec로 되어, 메모리 액세스를 위한 지연 시간을 일정값 이하로 억제할 수 있다. 또한 플래시 메모리(20)와 플래시 컨트롤러(18) 사이에 필요한 대역폭도 소정값 이하로 제어할 수 있다.
도시하는 예에서, 1커맨드당 데이터 사이즈를 65536B(바이트)로 한 경우, 14.1msec의 주기 중, 페이즈 1 및 4에서 최대 100커맨드분의 판독 처리가 이루어진다는 점에서, 필요한 대역폭은 NAND의 1채널당, 65536×100/14.1=465MB/sec로 된다. 마찬가지로, 페이즈 2에서 처리되는 커맨드를 위해 필요한 대역폭은 NAND의 1채널당, 판독 처리는 18.6MB/sec, 기입 처리는 4.65MB/sec로 된다. 또한 여기서 설명한 각종 수치나 설정은 어디까지나 예시이며, 정보 처리의 내용이나 처리 성능 등에 따라 적절하게 변경해도 된다.
도 5는, 페이즈 1 및 페이즈 4에 있어서, 커맨드 처리부(46)가 NSIDb로부터 데이터를 판독하는 처리의 수순을 도시하는 흐름도이다. 이 예는, 도 3에 도시하는 바와 같이 긴급성의 높이에 따라 판독 전용의 큐가 3개로 나누어져 있는 경우를 상정하고 있다. 우선 가장 긴급성이 높은 큐(도 3의 긴급 판독 큐(52))에 커맨드가 저장되어 있는지 여부를 확인한다(S10). 저장되어 있는 경우(S10의 "예"), 커맨드 처리부(46)는 당해 큐에 최우선으로 저장된 커맨드를 판독하고, 논리 어드레스를 물리 어드레스로 변환하거나 하여 해당 영역에 있는 데이터를 판독한다(S12).
가장 긴급성이 높은 큐에 커맨드가 저장되어 있는 한은, 그것을 순차적으로 판독하여 처리한다(S10의 "예", S12). 당해 큐에 처리해야 할 커맨드가 없고(S10의 "아니오"), 그때까지 처리한 커맨드수가 설정된 처리 상한 미만이면(S14의 "예"), 다음으로 긴급성이 높은 큐(도 3의 고우선도의 판독 큐(54))에 커맨드가 저장되어 있는지 여부를 확인한다(S16). 저장되어 있는 경우(S16의 "예"), 커맨드 처리부(46)는 당해 큐에 최우선으로 저장된 커맨드를 판독하고, 상술한 바와 마찬가지로 데이터를 판독한다(S18).
이에 의해서도 설정된 처리 상한수에 도달하지 않으면(S20의 "예"), 커맨드 처리부(46)는 커맨드를 하나 처리할 때마다, 가장 긴급성이 높은 큐에 커맨드가 저장되어 있는지 여부를 다시 확인하고, 저장되어 있으면 그것을 처리한다(S10의 "예", S12). 가장 긴급성이 높은 큐에 처리해야 할 커맨드가 없고(S10의 "아니오"), 그때까지 처리한 커맨드수가 설정된 처리 상한 미만이면(S14의 "예"), 다음으로 긴급성이 높은 큐에 저장되어 있는 커맨드를 처리한다(S16의 "예", S18). 당해 큐에 처리해야 할 커맨드가 없으면(S16의 "아니오"), 가장 긴급성이 낮은 큐(도 3의 통상 우선도의 판독 큐(56))에 커맨드가 저장되어 있는지 여부를 확인한다(S22).
저장되어 있는 경우(S22의 "예"), 커맨드 처리부(46)는 당해 큐에 최우선으로 저장된 커맨드를 판독하고, 상술한 바와 마찬가지로 데이터를 판독한다(S24). 이에 의해서도 설정된 처리 상한수에 도달하지 않으면(S20의 "예"), 커맨드 처리부(46)는 커맨드를 하나 처리할 때마다, 가장 긴급성이 높은 큐에 커맨드가 저장되어 있는지 여부를 다시 확인하고, 저장되어 있으면 그것을 처리한다(S10의 "예", S12). 이러한 사이클에 있어서 어느 처리에 의해 커맨드의 처리수가 상한에 도달하거나(S14의 "아니오" 또는 S20의 "아니오"), 처리해야 할 커맨드가 없어지거나 하면(S22의 "아니오"), 당해 페이즈를 종료시키고 다음 페이즈로 이행한다.
이러한 처리 수순에 의해, 긴급성이 높은 큐일수록 고빈도로 감시할 수 있음과 함께 커맨드를 우선 처리할 수 있고, 커맨드의 저장부터 처리까지의 지연 시간을 최소한으로 억제할 수 있다. 또한, 비교적 긴급성이 낮은 커맨드에 대해서는, 처리수의 상한을 구속 조건으로 하여 처리를 뒤로 미루고, 다른 페이즈로 넘김으로써, 페이즈 전체로서의 소요 시간이나 대역폭을 제어할 수 있다.
도 6은, 페이즈 2에 있어서, 커맨드 처리부(46)가 NSIDa 내지 NSIDc에 대하여 데이터의 판독 혹은 기입을 행하는 처리 수순을 도시하는 흐름도이다. 커맨드 처리부(46)는 우선, NSIDc에 대한 고속 기입을 위한 큐(도 3의 고속 기입 큐(60))에 커맨드가 저장되어 있는지 여부를 확인한다(S30). 저장되어 있는 경우(S30의 "예"), 커맨드 처리부(46)는 당해 큐에 최우선으로 저장된 커맨드를 판독하고, 논리 어드레스를 물리 어드레스로 변환함과 함께, 시스템 메모리(14)로부터 판독한 데이터를 해당 영역에 기입한다(S32).
이 시점에서 처리한 커맨드수가 설정된 기입 처리의 상한에 도달하였으면, 당해 페이즈를 종료시키고 다음 페이즈로 이행한다(S34의 "아니오"). 도 4에서 도시한 처리 상한수의 설정에 따르면, 페이즈 2에 있어서의 기입은 1커맨드를 상한으로 하기 때문에, S32의 처리를 한번 실시하면 본 페이즈는 종료하게 된다. 그 이외의 설정이며, 처리한 커맨드수가 설정된 기입 처리의 상한 미만이면(S34의 "예"), 다시, 고속 기입을 위한 큐에 커맨드가 저장되어 있는지 여부를 확인하고, 저장되어 있으면 그것을 처리한다(S30의 "예", S32).
그것을 반복하는 과정에서 기입 처리의 상한에 도달하면, 당해 페이즈를 종료시키고 다음 페이즈로 이행한다(S34의 "아니오"). 고속 기입을 위한 큐에 처리해야 할 커맨드가 없으면(S30의 "아니오"), NSIDa 내지 NSIDc에 대한 표준적인 판독 혹은 기입을 위한 큐(도 3의 표준 판독/기입 큐(51 및 62), 표준 기입 큐(58)) 중 어느 것에 커맨드가 저장되어 있는지 여부를 확인한다(S36).
저장되어 있는 경우(S36의 "예"), 커맨드 처리부(46)는 당해 큐에 최우선으로 저장된 커맨드를 판독하고, 상술한 바와 마찬가지로 데이터를 기입하거나 판독하거나 한다(S38). 페이즈 2에서는, 판독 처리와 기입 처리의 각각에 대하여 처리 상한이 설정되기 때문에, 1커맨드를 처리할 때마다, 그 처리 내용별로, 커맨드수와 상한을 비교한다. 처리 상한수에 도달하지 않았으면(S34의 "예"), 다시, 고속 기입을 위한 큐에 커맨드가 저장되어 있는지 여부를 확인하고, 저장되어 있으면 그것을 처리한다(S30의 "예", S32).
당해 큐에 처리해야 할 커맨드가 없으면(S30의 "아니오"), 표준적인 판독 혹은 기입을 위한 큐에 커맨드가 저장되어 있는지 여부를 확인하고, 저장되어 있으면 그것을 처리한다(S36의 "예", S38). 당해 사이클에 있어서 처리한 커맨드수가 상한에 도달하거나, 처리해야 할 커맨드가 없어지거나 하면, 당해 페이즈를 종료시키고 다음 페이즈로 이행한다(S34의 "아니오" 또는 S36의 "아니오"). 이러한 처리 수순에 의해, 고속 기입을 우선적으로 처리할 수 있다. 또한 S36에 있어서 확인 처리의 대상으로 되는 큐는 도 3의 예에서는 3개 있지만, 기본적으로는 그것들을 차례차례 확인하고, 커맨드가 있으면 처리하는 라운드 로빈 방식이어도 된다.
도 7은, 페이즈 3에 있어서, 커맨드 처리부(46)가 관리 처리 중 판독 처리를 행하는 처리 수순을 도시하는 흐름도이다. 커맨드 처리부(46)는, 관리 처리에 대하여 마련한 큐(도 3의 SLC→TLC 카피의 큐(64), 판독 디스터브 회피용 데이터 카피의 큐(66), 가비지 컬렉션의 큐(68)) 중 어느 것에 커맨드가 저장되어 있는지 여부를 확인한다(S40). 저장되어 있는 경우(S40의 "예"), 커맨드 처리부(46)는 당해 큐에 최우선으로 저장된 커맨드를 판독하고, 그 중 데이터를 판독하는 처리만을 실시한다(S42).
처리한 커맨드수가 페이즈 3에서 설정되어 있는 상한 미만이면, 큐에 커맨드가 있는 한, 그 중 판독 처리를 반복한다(S44의 "예", S40의 "예", S42). 처리의 상한에 도달하였을 때(S44의 "아니오"), 혹은 처리해야 할 커맨드가 어느 큐에도 없을 때(S40의 "아니오"), 당해 페이즈를 종료시키고 다음 페이즈로 이행한다. 또한 S40에 있어서 확인 처리의 대상으로 되는 큐는 복수(도 3의 예에서는 3개) 있지만, 그것들을 라운드 로빈 방식으로 차례차례 확인하고, 커맨드가 존재하면 처리하는 것을 기본으로 한다.
또한 페이즈 3에 대해서는, 처리수의 상한을 절댓값으로 설정하는 대신에, 페이즈 5에서 기입을 실시하는 분만큼 판독하도록 해도 된다. 또한 SLC의 빈 영역이 소정 사이즈보다 적어진 경우, 페이즈 2에 있어서의 SLC에 대한 기입 처리의 커맨드를 스킵하고 페이즈 3으로 이행함으로써, TLC에 대한 데이터 카피가 우선 이루어지도록 한다. 이 경우에도 페이즈 1이나 4는 순서대로 행함으로써 필요한 데이터 판독은 수행된다.
도 8은, 페이즈 5에 있어서, 커맨드 처리부(46)가 관리 처리 중 기입 처리 및 데이터 소거를 행하는 처리 수순을 도시하는 흐름도이다. 또한 페이즈 3에 있어서 판독 처리만 실시한 관리 처리의 커맨드는, 플래그를 세트하거나 하여 다른 것과 구별한 후에 큐에 남겨 둔다. 혹은 관리 처리의 커맨드를 판독 커맨드, 기입 커맨드, 소거 커맨드로 나누어 저장하고, 페이즈 3에서 처리된 판독 커맨드를 큐로부터 삭제해도 된다.
우선 커맨드 처리부(46)는, 그 이전의 페이즈 5의 타이밍에 처리를 중단한 커맨드가 없는지 확인한다(S50). 상술한 바와 같이 페이즈 5에 있어서의 처리는 비교적 시간을 요하기 때문에, 긴급 판독 큐에 커맨드가 저장되거나, 페이즈 5의 제한 시간이 만료되거나 한 경우에 처리를 중단하고 페이즈 1로 이행한다. 처리를 중단한 커맨드는 도시하지 않은 다른 큐에 저장하거나, 그것이 식별되는 상태에서 원래의 큐에 남겨 둔다.
중단된 커맨드가 있으면(S50의 "예"), 당해 커맨드를 중단한 시점부터 재개한다(S54). 중단된 커맨드가 없으면(S50의 "아니오"), 커맨드 처리부(46)는 관리 처리에 대하여 마련한 큐 중 어느 것에 커맨드가 저장되어 있는지 여부를 확인한다(S52). 단 여기서 대상으로 하는 커맨드는, 페이즈 3에 있어서 데이터의 판독만이 실시되어 있는 커맨드이다. 그러한 커맨드가 없으면, 당해 페이즈를 종료시키고 다음 페이즈로 이행한다(S52의 "아니오"). 커맨드가 있으면(S52의 "예"), 당해 커맨드의 기입 처리와, 필요에 따른 데이터 소거 처리를 개시한다(S54).
그리고, NSIDb에 대한 긴급성이 가장 높은 판독 큐에 커맨드가 저장되지 않는지, 또는 페이즈 5에 설정되어 있는 제한 시간에 도달하지 않는지를 확인하면서 처리를 속행한다(S56의 "아니오", S58의 "아니오", S60의 "아니오"). 긴급 큐에 대한 커맨드의 저장 및 제한 시간의 만료 중 어느 쪽이 발생하면(S56의 "예" 또는 S58의 "예"), 개시된 처리를 중단하고 다음 페이즈로 이행한다(S62). 이 경우, 페이즈 1, 페이즈 4로 이행하고 페이즈 5로 다시 복귀하고, 중단된 처리를 재개한다.
긴급 큐에 대한 커맨드의 저장 및 제한 시간의 만료 중 어느 쪽도 발생하지 않고 처리가 완료되면(S60의 "예"), 커맨드의 처리수가 상한에 도달하지 않았는지 확인하고, 도달한 경우, 당해 페이즈를 종료시키고 다음 페이즈로 이행한다(S64의 "아니오"). 도 4에서 도시한 처리 상한수의 설정에 따르면, 페이즈 5에 있어서의 기입은 1커맨드를 상한으로 하기 때문에, S60에 있어서 기입 처리가 완료된 시점에서 본 페이즈는 종료하게 된다. 또한 데이터 소거 처리는 장시간에 걸치기 때문에, 처리가 완료된 시점에서 페이즈를 종료시킨다.
그 이외의 설정이며, 처리한 커맨드수가 설정된 기입 처리의 상한 미만이면(S64의 "예"), 각 큐에 커맨드가 저장되어 있는지 여부를 확인하고, 저장되어 있으면 그것을 처리한다(S52의 "예", S54 내지 S60). 이 경우에도 당연히, 긴급 큐에 대한 커맨드의 저장 및 제한 시간의 만료 중 어느 쪽이 발생하면(S56의 "예" 또는 S58의 "예"), 개시된 처리를 중단하고 다음 페이즈로 이행한다(S62). 한편, 처리가 완료되고, 커맨드의 처리수가 상한에 도달하면 당해 페이즈를 종료시키고 다음 페이즈로 이행한다(S64의 "아니오").
그런데 페이즈 3 및 페이즈 5에서 실시되는 관리 처리의 발생 빈도는, 페이즈 1, 페이즈 2 및 페이즈 4에서 실시되는 커맨드의 수에 영향을 받는다. 예를 들어 SLC를 TLC로 카피하는 처리는 3페이지 단위로 이루어진다. 여기서 페이즈 2에 있어서 매회, 1페이지분의 SLC에 대한 기입이 이루어진 경우, 3주기에 1회, SLC로부터 TLC로의 카피를 행함으로써 매듭지을 수 있다. 따라서 남은 66%의 시간이 다른 관리 처리에 할당된다.
또한 1블록이 768페이지이고, 페이즈 3 및 페이즈 5에 있어서 1주기당 3페이지의 카피를 완료시키면, 256주기로 1블록의 카피가 완료된다. 판독 디스터브를 회피하기 위해, 동일 블록이 평균 1,000,000회 판독되면 해당 블록을 카피하는 경우, 페이즈 1 및 페이즈 4에 있어서 1주기당 최대 100회의 판독이 이루어지면, 10,000주기에 1회, 블록 카피의 필요가 생긴다. 1블록의 카피에 상술한 바와 같이 256주기를 요한다고 한다면, 판독 디스터브 회피를 위한 관리 처리에 필요한 시간 비율은 최대 256/10000≒2.5%이다.
이와 같이 호스트 유닛(12)으로부터 발행되는 커맨드수와 관리 처리의 발생의 인과 관계를 고려하여, 적절한 밸런스로 각 페이즈에 있어서의 커맨드의 처리 상한수를 설정함으로써, 관리 처리를 파탄시키지 않고 모두를 원활하게 처리할 수 있다. 또한 각 페이즈에서 처리 대상으로 하는 큐를, 상술한 바와 같이 처리 내용이나 우선도에 따라 적절하게 전환함으로써, 각 커맨드의 발행부터 처리까지의 지연 시간을 제어할 수 있다.
예를 들어 도 4의 설정에 따르면, NSIDb의 큐에 저장된 선두 커맨드의 처리가 다른 처리에 의해 지연되는 시간은, 최대라도 페이즈 5의 제한 시간인 3.0msec 정도로 억제할 수 있다. 이에 의해, NSIDb로부터 판독한 데이터를 사용하여 표시 화상을 묘화하는 경우에, 화면의 프리즈나 코마 드롭의 문제를 최소한으로 억제할 수 있다.
이제까지 설명한 바와 같이 본 실시 형태에서는, 커맨드의 내용에 따라 페이즈, 나아가 큐의 전환 규칙을 독립적으로 설정한다. 그래서, 보다 정보 처리의 특성에 입각한 규칙을 특정 페이즈에 부과할 수도 있다. 도 9는 그 일례로서, 호스트 유닛(12)으로부터의 통지에 따라 페이즈를 전환하는 규칙을 도입하는 형태를 설명하기 위한 도면이다. 이 예에 있어서 정보 처리 장치는, 플래시 메모리(20)에 저장된 데이터를 사용하여 직후에 표시해야 할 화상을 묘화하는 처리를, 표시 장치의 프레임 표시 주기에 맞추어 반복한다.
플래시 메모리(20)로부터, 묘화에 필요한 데이터를 그 자리에서 판독하도록 하면, 미리 많은 데이터를 판독해 두는 것보다 시스템 메모리(14)의 용량을 절약할 수 있다. 도면은 횡방향을 시간축으로 하며, 상단으로부터, 프레임 n, 프레임 n+1, 프레임 n+2, …를 표시 장치에 표시하는 기간, 각 프레임을 묘화하는 기간, 및 플래시 컨트롤러(18)에 의한 메모리 액세스의 각 페이즈를 직사각형으로 나타내고 있다.
최상단의 표시 처리에 있어서의 흑색으로 칠한 기간은 수직 귀선 기간에 대응한다. 이러한 주기적인 표시 처리에 대하여, 정보 처리 장치(주로 호스트 유닛(12))는, 표시가 개시되기 전에 동일 프레임의 묘화를 완성시킬 필요가 있다. 화상의 내용에 따라, 각 프레임의 묘화 기간 및 플래시 메모리(20)로부터 판독해야 할 데이터의 사이즈나 그 요구 빈도도 상이하다. 묘화 기간의 직사각형으로부터 하향으로 나와 있는 백색 화살표(예를 들어 화살표(80))는, 호스트 유닛(12)으로부터의 판독 커맨드의 발행 타이밍을 예시하고 있다.
도시하는 바와 같이, 어떤 프레임의 묘화가 완료되고 나서 다음 프레임의 묘화가 개시될 때까지는, 프레임의 묘화 기간에 따른 빈 시간 Tn+1, Tn+2, Tn+3, …이 발생한다. 그래서 이 시간을 이용하여, 관리 처리 중 시간을 요하는 처리를 통합하여 행함으로써, 묘화 기간에 있어서는 판독 처리의 지연이 보다 억제되도록 한다. 구체적으로는, 1프레임분의 묘화 처리가 완료될 때마다, 호스트 유닛(12)으로부터 플래시 컨트롤러(18)로 그 취지를 통지한다. 동일 도면에서는 이 타이밍을 화살표(82a, 82b, 82c, 82d)로 나타내고 있다.
플래시 컨트롤러(18)는, 당해 통지를 받는 것을 조건으로, 페이즈 4로부터 페이즈 5로 이행한다. 동일 도면에서는 이 타이밍을 화살표(84a, 84b, 84c, 84d)로 나타내고 있다. 이와 같이 호스트 유닛(12)에 있어서의 처리의 진척 상황에 맞추어, 플래시 컨트롤러(18)가 처리하는 커맨드의 종류를 전환함으로써, 호스트 유닛(12)이 필요로 하는 처리와, 플래시 메모리(20) 자체가 필요로 하는 처리를, 각각에 적합한 타이밍에 실시할 수 있다.
동일 도면의 예에서는, 호스트 유닛(12)으로부터 묘화 데이터의 판독 커맨드가 발행되는 기간, 즉 프레임의 묘화 기간에는, 페이즈 1 내지 4에 한정하여 커맨드 처리가 이루어지기 때문에, 판독 처리의 지연 시간은 최대라도 페이즈 2 및 페이즈 3의 기간분으로 끝나게 된다. 도 4에서 도시한 바와 같은 처리 상한수를 설정한 경우, 당해 지연 시간은 최대 0.9msec로 된다.
도 10은, 커맨드 조정부(50)에 의한 조정에 주안을 둔 플래시 컨트롤러(18)의 처리 수순을 도시하는 흐름도이다. 플래시 컨트롤러(18)의 커맨드 접수부(40), 관리 커맨드 생성부(42) 및 커맨드 처리부(46)는, 이제까지 설명한 바와 같이 하여, 호스트 유닛(12)으로부터 발행된 커맨드를 접수하거나 관리 처리를 위한 커맨드를 생성하거나 하여, 순차적으로 처리한다(S70). 이 스텝에는 상세하게는 상술한 바와 같이, 페이즈 1 내지 5나, 각 페이즈에서 처리 대상으로 하는 큐를, 전환 규칙 기억부(48)에 설정된 규칙에 따라 전환하는 처리가 포함된다.
또한, 도 9에서 도시한 바와 같이 호스트 유닛(12)으로부터의 통지를 조건으로 하여 페이즈 5로 이행하는 동작이 포함되어도 된다. 이러한 커맨드 처리와 병행하여, 커맨드 조정부(50)는, 플래시 메모리(20) 중 동일 블록에 대한 판독의 횟수가 소정의 역치를 초과하였는지 여부를 감시한다(S72). 또한 새롭게 기입이 가능한 블록의 수가 소정의 역치 이하로 되었는지 여부를 감시한다(S74). 전자는 판독 디스터브를 회피하기 위한 데이터 카피 커맨드의 발행 타이밍의 도래를 사전에 예측하는 것이다.
후자는 가비지 컬렉션 커맨드의 발행 타이밍의 도래를 사전에 예측하는 것이다. 어느 감시 결과도 "아니오"라면, 커맨드 조정부(50)에 의한 조정은 이루어지지 않고, 커맨드 처리가 속행된다(S72의 "아니오", S74의 "아니오", S70). 동일 블록에 대한 판독의 횟수가 소정의 역치를 초과하거나(S72의 "예"), 새롭게 기입이 가능한 블록의 수가 소정의 역치 이하로 되면(S74의 "예"), 커맨드 조정부(50)는 전환 규칙 기억부(48)에 저장된 전환 규칙 중 어느 것을 조정한다(S76).
예를 들어 페이즈 1, 페이즈 2, 페이즈 4에 있어서, 통상 우선도의 판독 큐나 표준 기입, 판독 큐에 저장된 커맨드를 일시적으로 처리하지 않도록 하거나, 처리수를 제한하거나 하는 한편, 페이즈 3이나 페이즈 5의 처리 상한수나 제한 시간을 증가시킨다. 이에 의해, 1주기에 대하여 관리 처리에 사용할 수 있는 시간의 비율이 증가한다.
또한 커맨드 조정부(50)는, 동일 블록에 대한 판독의 횟수가 소정의 역치를 초과하였다는 취지나, 새롭게 기입이 가능한 블록의 수가 소정의 역치 이하로 되었다는 취지를, 호스트 유닛(12)에 통지한다(S78). 이에 따라 호스트 유닛(12)은, 통상 우선도의 판독 처리나 표준 기입 처리, 판독 처리의 커맨드의 발행수를 일시적으로 저하시킨다. 이와 같이 해도, 전환 규칙의 변경과 마찬가지로, 1주기에 대하여 관리 처리에 사용할 수 있는 시간의 비율이 증가한다. 또한 호스트 유닛(12)에는, 동일 블록에 대한 판독 횟수나 기입 가능한 블록수를 수시로 통지하여, 호스트 유닛(12)측에서 커맨드의 발행수를 조정해도 된다.
결과로서, 호스트 유닛(12)으로부터의 요구 중 긴급성이 높은 커맨드의 처리를 보장하는 데다가, 관리 처리가 지연없이 정확한 데이터를 판독할 수 없게 되거나 기입이 불가능하게 되거나 하는 일도 없어진다. 또한 S72와 S74의 감시 항목은 어느 한쪽만 해도 되고, 관리 처리가 필요함을 예측할 수 있는 다른 감시 항목을 채용하거나 조합하거나 해도 된다. 예를 들어 관리 처리의 큐에 실제로 저장되어 있는 커맨드의 수에 역치를 마련하거나, 그때까지의 커맨드의 저장 상황으로부터 이후의 저장수를 예측하거나 하여 조정의 필요성을 판정해도 된다.
또한 S76의 전환 규칙의 변경과 S78의 호스트 유닛(12)에 대한 통지는 어느 한쪽만 실시해도 된다. 또한 도시를 생략하고 있지만, 감시 항목이 타깃으로 하는 관리 처리가 완료되면, 커맨드 조정부(50)는 전환 규칙을 원상태로 되돌리거나, 그 취지를 호스트 유닛에 통지하여 커맨드의 발행수를 통상 상태로 되돌리게 하거나 한다.
이상 설명한 본 실시 형태에 따르면, 플래시 메모리에 대한 액세스 요구를, 판독, 기입과 같은 처리의 내용과 그 중에서의 우선도에 따른 상이한 큐에 저장한다. 그리고 큐별로 설정한 규칙에 따라, 대상 큐를 전환하여 커맨드를 판독하고, 처리한다. 이에 의해 정보 처리의 특성, 예를 들어 데이터 판독 및 기입 중 어느 쪽이 지배적이거나, 어느 쪽이 시간에 대한 구속 조건이 엄격하거나, 양자가 대등하거나 등의 특성에 적합한 순서나 빈도로 액세스 요구를 처리할 수 있다.
또한 복수의 큐를 분류하고, 종류별로 처리하는 기간(페이즈)을 마련한다. 이에 의해 개개의 큐에 대해서는, 동일 페이즈에서 처리되는 큐간의 전환 규칙과 페이즈간의 전환 규칙을 2중으로 부과하게 되어, 그들 조합에 의해 치밀한 설정, 나아가 실태에 입각한 유연한 운용이 가능하게 된다.
이러한 시스템에, 가비지 컬렉션, 판독 디스터브 회피를 위한 데이터 카피, SLC로부터 TLC로의 데이터 카피와 같은 관리 처리용 큐도 마찬가지로 도입된다. 이에 의해, 호스트 유닛으로부터의 긴급성이 높은 액세스 요구의 처리가, 관리 처리에 의해 지연되는 것을 방지할 수 있다. 특히 상기와 같은 관리 처리는, 호스트 유닛으로부터의 액세스 요구의 내용이나 빈도에 의존하여 발생하기 때문에, 커맨드 처리수의 상한이나 제한 시간 등, 큐별로 절대적인 지표를 사용한 규칙을 설정함으로써, 양쪽의 밸런스를 최적화하고, 파탄시키지 않고 필요한 처리를 저지연으로 행할 수 있다. 또한 페이즈를 순환시킴으로써, 처리 주기의 예측이 용이하게 되고, 대역폭의 제어가 가능하게 된다.
또한 상기 관리 처리에는, 빈도는 높지 않지만, 일단 필요성이 생기면 많은 시간을 요하는 독특한 성질을 갖는 것이 있다. 그러한 처리가 개시되는 타이밍을 사전에 예측하여, 일시적으로 전환 규칙을 변화시키거나 호스트 유닛에 의한 요구 중 긴급성이 낮은 것의 발행을 억제하거나 한다. 이에 의해, 관리 처리에 할당하는 시간을 일시적으로 증가시켜 촉진시키는 한편, 호스트 유닛의 처리에 최저한 필요한 액세스 처리를 담보하는 등의 임기 응변의 대응을 용이하게 실현할 수 있다.
이상, 본 발명을 실시 형태를 바탕으로 설명하였다. 상기 실시 형태는 예시이며, 그들 각 구성 요소나 각 처리 프로세스의 조합에 여러 변형예가 가능하다는 것, 또한 그러한 변형예도 본 발명의 범위에 있다는 것은 당업자에게 이해되는 바이다.
<산업상 이용가능성>
이상과 같이 본 발명은, 메모리 액세스를 행하는 정보 처리 장치나 메모리 컨트롤러에 이용 가능하다.
10: 정보 처리 장치
12: 호스트 유닛
14: 시스템 메모리
18: 플래시 컨트롤러
20: 플래시 메모리
22: 호스트 컨트롤러
24: SRAM
28: 메모리 컨트롤러
30: 커맨드 발행부
32: 정보 처리부
34: 데이터 입출력부
36: 큐
40: 커맨드 접수부
42: 관리 커맨드 생성부
44: 큐
46: 커맨드 처리부
48: 전환 규칙 기억부
50: 커맨드 조정부
12: 호스트 유닛
14: 시스템 메모리
18: 플래시 컨트롤러
20: 플래시 메모리
22: 호스트 컨트롤러
24: SRAM
28: 메모리 컨트롤러
30: 커맨드 발행부
32: 정보 처리부
34: 데이터 입출력부
36: 큐
40: 커맨드 접수부
42: 관리 커맨드 생성부
44: 큐
46: 커맨드 처리부
48: 전환 규칙 기억부
50: 커맨드 조정부
Claims (17)
- 호스트 프로세서로부터 메모리로의 액세스 요구를 접수하는 커맨드 접수부와,
상기 액세스 요구가 분류되어 저장된 복수의 큐 중 어느 것으로부터 상기 액세스 요구를 판독하여, 실행하는 커맨드 처리부
를 포함하는 메모리 컨트롤러를 구비하고,
상기 커맨드 처리부는, 상기 큐별로 설정된 규칙에 따른 타이밍에, 상기 복수의 큐 중 요구 판독처의 큐를 다음으로 전환하는 것을 특징으로 하는 정보 처리 장치. - 제1항에 있어서,
상기 복수의 큐는, 액세스의 내용 및 우선도에 따라 분류된 상기 액세스 요구를 각각 저장하고,
상기 커맨드 처리부는, 당해 액세스의 내용 및 우선도에 따라 설정된 규칙에 따른 타이밍에, 판독처의 큐를 전환하는 것을 특징으로 하는 정보 처리 장치. - 제1항 또는 제2항에 있어서,
상기 메모리 컨트롤러는, 상기 메모리의 관리에 필요한 처리의 요구를 발행하는 관리 커맨드 생성부를 더 구비하고,
상기 복수의 큐는, 추가로 상기 관리 커맨드 생성부가 발행한 관리용 처리의 요구를 저장하는 큐를 포함하고,
상기 커맨드 처리부는, 상기 큐로부터, 상기 관리용 처리의 요구를 판독하여 추가로 실행하는 것을 특징으로 하는 정보 처리 장치. - 제3항에 있어서,
상기 커맨드 처리부는, 상기 관리용 처리의 요구를 저장하는 큐를 판독처로 하고 있을 때, 설정된 제한 시간을 경과한 타이밍에, 요구 판독처를 다음 큐로 전환하는 것을 특징으로 하는 정보 처리 장치. - 제3항 또는 제4항에 있어서,
상기 커맨드 처리부는, 상기 관리용 처리의 요구를 저장하는 큐를 판독처로 하고 있을 때, 다른 큐에 소정의 우선도를 갖는 액세스 요구가 저장된 타이밍에, 요구 판독처를 당해 다른 큐로 전환하는 것을 특징으로 하는 정보 처리 장치. - 제3항 내지 제5항 중 어느 한 항에 있어서,
상기 커맨드 처리부는, 상기 호스트 프로세서가 통지한 타이밍에, 상기 관리용 처리의 요구를 저장하는 큐를 요구 판독처로 하는 것을 특징으로 하는 정보 처리 장치. - 제3항 내지 제6항 중 어느 한 항에 있어서,
상기 커맨드 처리부는, 상기 관리용 처리 중 판독 처리의 요구를 판독하는 기간과, 기입 처리의 요구를 판독하는 기간을 분리하는 것을 특징으로 하는 정보 처리 장치. - 제3항 내지 제7항 중 어느 한 항에 있어서,
상기 관리용 처리는, 어떤 블록에 저장된 데이터를 다른 블록에 대피시킨 후에 원래 블록의 데이터를 소거하는 처리를 포함하는 것을 특징으로 하는 정보 처리 장치. - 제3항 내지 제7항 중 어느 한 항에 있어서,
상기 관리용 처리는, 1메모리 셀당 1비트를 기록하는 SLC(Single Level Cell) 영역에 기입된 데이터를, 1메모리 셀당 3비트를 기록하는 TLC(Triple Level Cell) 영역으로 카피하는 처리를 포함하는 것을 특징으로 하는 정보 처리 장치. - 제3항 내지 제9항 중 어느 한 항에 있어서,
상기 메모리 컨트롤러는, 상기 큐에 저장 완료된 상기 관리용 처리의 요구량, 및 상기 관리용 처리의 요구가 발행되는 타이밍의 예측 결과 중 적어도 어느 것에 기초하여, 상기 큐별로 설정된 규칙 중 적어도 어느 것을 변경하는 커맨드 조정부를 더 구비한 것을 특징으로 하는 정보 처리 장치. - 제3항 내지 제9항 중 어느 한 항에 있어서,
상기 메모리 컨트롤러는, 상기 큐에 저장 완료된 상기 관리용 처리의 요구량, 및 상기 관리용 처리의 요구가 발행되는 타이밍의 예측 결과 중 적어도 어느 것에 기초하여, 상기 호스트 프로세서에 액세스 요구의 발행 제어를 의뢰하는 커맨드 조정부를 더 구비한 것을 특징으로 하는 정보 처리 장치. - 제1항 내지 제11항 중 어느 한 항에 있어서,
상기 커맨드 처리부는, 소정의 기준 이상의 우선도를 갖는 판독 요구를 통합하여 저장하는 큐로부터, 당해 판독 요구를 순차적으로 판독하여, 실행하는 것을 특징으로 하는 정보 처리 장치. - 제1항 내지 제12항 중 어느 한 항에 있어서,
상기 커맨드 처리부는, 상기 복수의 큐를 분류하여 이루어지는 큐의 그룹별로 처리 시간을 할당하여, 당해 그룹별로 설정된 규칙에 따라, 처리 대상으로 하는 그룹을 전환하는 것을 특징으로 하는 정보 처리 장치. - 제1항 내지 제13항 중 어느 한 항에 있어서,
상기 호스트 프로세서로부터의 액세스 요구의 대상으로 되는 데이터를 저장하는 NAND형 플래시 메모리를 더 구비한 것을 특징으로 하는 정보 처리 장치. - 제1항 내지 제14항 중 어느 한 항에 있어서,
정보 처리를 실시하고, 상기 메모리 컨트롤러에 상기 메모리에 대한 액세스 요구를 발행하는 호스트 프로세서를 더 구비한 것을 특징으로 하는 정보 처리 장치. - 호스트 프로세서로부터 메모리로의 액세스 요구를 접수하는 스텝과,
상기 액세스 요구를 분류하여 저장하는 복수의 큐 중 어느 것으로부터 상기 액세스 요구를 판독하는 스텝과,
판독한 액세스 요구를 실행하는 스텝
을 포함하고,
상기 판독하는 스텝은, 상기 큐별로 설정된 규칙에 따른 타이밍에, 상기 복수의 큐 중 요구 판독처의 큐를 다음으로 전환하는 것을 특징으로 하는 메모리 컨트롤러에 의한 메모리 액세스 방법. - 호스트 프로세서로부터 메모리로의 액세스 요구를 접수하는 기능과,
상기 액세스 요구가 분류되어 저장된 복수의 큐 중 어느 것으로부터 상기 액세스 요구를 판독하여, 실행하는 기능
을 메모리 컨트롤러에 실현시키는 컴퓨터 프로그램이며,
상기 실행하는 기능은, 상기 큐별로 설정된 규칙에 따른 타이밍에, 상기 복수의 큐 중 요구 판독처의 큐를 다음으로 전환하는 것을 특징으로 하는 컴퓨터 프로그램.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016247049A JP6677627B2 (ja) | 2016-12-20 | 2016-12-20 | 情報処理装置およびメモリアクセス方法 |
JPJP-P-2016-247049 | 2016-12-20 | ||
PCT/JP2017/044777 WO2018116937A1 (ja) | 2016-12-20 | 2017-12-13 | 情報処理装置およびメモリアクセス方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190079672A true KR20190079672A (ko) | 2019-07-05 |
KR102246840B1 KR102246840B1 (ko) | 2021-04-30 |
Family
ID=62626406
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020197016557A KR102246840B1 (ko) | 2016-12-20 | 2017-12-13 | 정보 처리 장치, 메모리 액세스 방법 및 컴퓨터 프로그램 |
Country Status (7)
Country | Link |
---|---|
US (1) | US11281572B2 (ko) |
EP (1) | EP3561678B1 (ko) |
JP (1) | JP6677627B2 (ko) |
KR (1) | KR102246840B1 (ko) |
CN (1) | CN110073337B (ko) |
TW (1) | TWI662418B (ko) |
WO (1) | WO2018116937A1 (ko) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11061822B2 (en) * | 2018-08-27 | 2021-07-13 | Qualcomm Incorporated | Method, apparatus, and system for reducing pipeline stalls due to address translation misses |
CN111124254B (zh) * | 2018-10-30 | 2023-09-29 | 伊姆西Ip控股有限责任公司 | 调度存储空间回收请求的方法、电子设备和程序产品 |
KR102686435B1 (ko) * | 2019-06-28 | 2024-07-19 | 에스케이하이닉스 주식회사 | 메모리 시스템, 메모리 컨트롤러 및 그 저장 방법 |
CN110362275B (zh) * | 2019-07-10 | 2021-09-07 | 深圳大普微电子科技有限公司 | 提升固态硬盘服务质量的方法及固态硬盘 |
US11029874B2 (en) | 2019-07-30 | 2021-06-08 | Western Digital Technologies, Inc. | Rolling XOR protection in efficient pipeline |
JP2021086583A (ja) * | 2019-11-29 | 2021-06-03 | キヤノン株式会社 | 情報処理装置、制御装置および制御装置の制御方法 |
US20220004337A1 (en) * | 2020-07-06 | 2022-01-06 | Micron Technology, Inc. | Command prioritization in a command queue |
CN114168495A (zh) * | 2020-09-10 | 2022-03-11 | 西部数据技术公司 | 存储设备的增强的预读能力 |
JP2022172698A (ja) * | 2021-05-06 | 2022-11-17 | 株式会社ソニー・インタラクティブエンタテインメント | 情報処理装置、情報処理システム、および情報処理方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000285082A (ja) * | 1999-03-31 | 2000-10-13 | Toshiba Corp | 中央演算装置及びコンパイル方法 |
US20120066435A1 (en) * | 2010-09-15 | 2012-03-15 | John Colgrove | Scheduling of i/o writes in a storage environment |
US20120246385A1 (en) * | 2011-03-22 | 2012-09-27 | American Megatrends, Inc. | Emulating spi or 12c prom/eprom/eeprom using flash memory of microcontroller |
US20130254454A1 (en) * | 2012-03-23 | 2013-09-26 | Kabushiki Kaisha Toshiba | Memory system and bank interleaving method |
US20140137128A1 (en) * | 2012-11-12 | 2014-05-15 | Skymedi Corporation | Method of Scheduling Tasks for Memories and Memory System Thereof |
WO2014132346A1 (ja) | 2013-02-27 | 2014-09-04 | 株式会社日立製作所 | 半導体ストレージ |
US20140281050A1 (en) * | 2013-03-15 | 2014-09-18 | Apple Inc. | Managing i/o priorities |
US20160266934A1 (en) * | 2015-03-11 | 2016-09-15 | Sandisk Technologies Inc. | Task queues |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6570876B1 (en) * | 1998-04-01 | 2003-05-27 | Hitachi, Ltd. | Packet switch and switching method for switching variable length packets |
JP4327081B2 (ja) * | 2004-12-28 | 2009-09-09 | 京セラミタ株式会社 | メモリアクセス制御回路 |
US20060184718A1 (en) * | 2005-02-16 | 2006-08-17 | Sinclair Alan W | Direct file data programming and deletion in flash memories |
JP4419868B2 (ja) | 2005-02-25 | 2010-02-24 | ソニー株式会社 | 情報処理装置および方法、メモリ制御装置および方法、記録媒体、並びにプログラム |
JP4142068B2 (ja) * | 2006-06-16 | 2008-08-27 | 株式会社ソニー・コンピュータエンタテインメント | 情報処理装置およびアクセス制御方法 |
US8208406B1 (en) * | 2008-03-25 | 2012-06-26 | Juniper Networks, Inc. | Packet forwarding using feedback controlled weighted queues dynamically adjusted based on processor utilization |
JP5147584B2 (ja) * | 2008-07-23 | 2013-02-20 | 株式会社日立製作所 | ストレージサブシステム及びコントローラによるコマンド実行方法 |
JP2010176646A (ja) * | 2009-02-02 | 2010-08-12 | Toshiba Information Systems (Japan) Corp | メモリシステムおよびメモリシステムのインターリーブ制御方法 |
CN101498994B (zh) * | 2009-02-16 | 2011-04-20 | 华中科技大学 | 一种固态硬盘控制器 |
US8688894B2 (en) | 2009-09-03 | 2014-04-01 | Pioneer Chip Technology Ltd. | Page based management of flash storage |
US8595411B2 (en) * | 2009-12-30 | 2013-11-26 | Sandisk Technologies Inc. | Method and controller for performing a sequence of commands |
US8838853B2 (en) * | 2010-01-18 | 2014-09-16 | Marvell International Ltd. | Access buffer |
US8271692B1 (en) * | 2010-10-01 | 2012-09-18 | Western Digital Technologies, Inc. | Throttled command completion time |
US8700834B2 (en) * | 2011-09-06 | 2014-04-15 | Western Digital Technologies, Inc. | Systems and methods for an enhanced controller architecture in data storage systems |
JP2013200692A (ja) * | 2012-03-23 | 2013-10-03 | Toshiba Corp | メモリシステム |
CN103488578B (zh) * | 2012-12-28 | 2016-05-25 | 晶天电子(深圳)有限公司 | 虚拟存储设备(vmd)应用/驱动器 |
US8959263B2 (en) * | 2013-01-08 | 2015-02-17 | Apple Inc. | Maintaining I/O priority and I/O sorting |
US9898201B2 (en) * | 2014-03-24 | 2018-02-20 | Hitachi, Ltd. | Non-volatile memory device, and storage apparatus to reduce a read retry occurrence frequency and prevent read performance from lowering |
TWI588652B (zh) * | 2015-09-01 | 2017-06-21 | 慧榮科技股份有限公司 | 讀取及寫入命令排程方法以及使用該方法的裝置 |
US10866910B2 (en) * | 2015-09-28 | 2020-12-15 | Sandisk Technologies Llc | Systems, methods, and computer-readable media for managing instruction fetch in virtual computing environments |
US9910772B2 (en) * | 2016-04-27 | 2018-03-06 | Silicon Motion Inc. | Flash memory apparatus and storage management method for flash memory |
JP6783645B2 (ja) * | 2016-12-21 | 2020-11-11 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US10831403B2 (en) * | 2017-05-19 | 2020-11-10 | Seagate Technology Llc | Probabalistic command aging and selection |
-
2016
- 2016-12-20 JP JP2016247049A patent/JP6677627B2/ja active Active
-
2017
- 2017-10-26 TW TW106136823A patent/TWI662418B/zh active
- 2017-12-13 KR KR1020197016557A patent/KR102246840B1/ko active IP Right Grant
- 2017-12-13 US US16/346,717 patent/US11281572B2/en active Active
- 2017-12-13 WO PCT/JP2017/044777 patent/WO2018116937A1/ja unknown
- 2017-12-13 CN CN201780077153.8A patent/CN110073337B/zh active Active
- 2017-12-13 EP EP17883337.2A patent/EP3561678B1/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000285082A (ja) * | 1999-03-31 | 2000-10-13 | Toshiba Corp | 中央演算装置及びコンパイル方法 |
US20120066435A1 (en) * | 2010-09-15 | 2012-03-15 | John Colgrove | Scheduling of i/o writes in a storage environment |
US20120246385A1 (en) * | 2011-03-22 | 2012-09-27 | American Megatrends, Inc. | Emulating spi or 12c prom/eprom/eeprom using flash memory of microcontroller |
US20130254454A1 (en) * | 2012-03-23 | 2013-09-26 | Kabushiki Kaisha Toshiba | Memory system and bank interleaving method |
US20140137128A1 (en) * | 2012-11-12 | 2014-05-15 | Skymedi Corporation | Method of Scheduling Tasks for Memories and Memory System Thereof |
WO2014132346A1 (ja) | 2013-02-27 | 2014-09-04 | 株式会社日立製作所 | 半導体ストレージ |
US20140281050A1 (en) * | 2013-03-15 | 2014-09-18 | Apple Inc. | Managing i/o priorities |
US20160266934A1 (en) * | 2015-03-11 | 2016-09-15 | Sandisk Technologies Inc. | Task queues |
Non-Patent Citations (1)
Title |
---|
컴퓨터 공부방."TLC의 한계 TurboWrite와 Rapid로 개선, 삼성 SSD 840 EVO 리뷰",[online]2013.09.05.,[2020.10.16.검색],<URL: http://blog.daum.net/csb2042/16897167> * |
Also Published As
Publication number | Publication date |
---|---|
US20200073793A1 (en) | 2020-03-05 |
JP6677627B2 (ja) | 2020-04-08 |
EP3561678A4 (en) | 2020-08-05 |
KR102246840B1 (ko) | 2021-04-30 |
TWI662418B (zh) | 2019-06-11 |
US11281572B2 (en) | 2022-03-22 |
CN110073337A (zh) | 2019-07-30 |
CN110073337B (zh) | 2023-06-02 |
EP3561678A1 (en) | 2019-10-30 |
JP2018101301A (ja) | 2018-06-28 |
WO2018116937A1 (ja) | 2018-06-28 |
TW201824010A (zh) | 2018-07-01 |
EP3561678B1 (en) | 2023-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20190079672A (ko) | 정보 처리 장치, 메모리 액세스 방법 및 컴퓨터 프로그램 | |
US9251055B2 (en) | Memory system and control method of memory system | |
KR101563875B1 (ko) | 호스트 기록 작업과 캐시 플러싱을 균형화하기 위한 방법과 시스템 | |
US8171239B2 (en) | Storage management method and system using the same | |
US11704239B2 (en) | Garbage collection method for storage medium, storage medium, and program product | |
JP4429780B2 (ja) | 記憶制御装置、制御方法、および制御プログラム。 | |
JPH0816482A (ja) | フラッシュメモリを用いた記憶装置およびその記憶制御方法 | |
US10310766B2 (en) | Memory system and data relocating method | |
JP6697410B2 (ja) | メモリシステムおよび制御方法 | |
US20170003911A1 (en) | Information processing device | |
US10817186B2 (en) | Memory system | |
CN106598504B (zh) | 数据存储方法及装置 | |
US8271721B2 (en) | Data writing method and data storage device | |
JP5687649B2 (ja) | 半導体記憶装置の制御方法 | |
US10872015B2 (en) | Data storage system with strategic contention avoidance | |
US20190034121A1 (en) | Information processing apparatus, method and non-transitory computer-readable storage medium | |
JP6194875B2 (ja) | キャッシュ装置、キャッシュシステム、キャッシュ方法、及びキャッシュプログラム | |
KR100908637B1 (ko) | 플래시 메모리의 데이터 관리방법 | |
WO2024232225A1 (ja) | 情報処理装置およびメモリ管理方法 | |
JP2005174468A (ja) | フラッシュメモリのアクセス制御方法 | |
JP2007156846A (ja) | メモリコントローラ及びフラッシュメモリシステム | |
JP2017134446A (ja) | メモリ制御装置、記憶装置、メモリ制御方法およびコンピュータプログラム | |
JP2016115081A (ja) | 不揮発メモリストレージ制御装置、不揮発メモリストレージの書き込み制御方法およびプログラム | |
JP2010079860A (ja) | 記憶装置およびメモリ制御方法 | |
JP2007249689A (ja) | ファイルシステム、ファイル最適配置方法及びプログラム |
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 |