KR102695127B1 - 재구성 가능한 스토리지 컨트롤러, 스토리지 시스템 및 그 동작 방법 - Google Patents
재구성 가능한 스토리지 컨트롤러, 스토리지 시스템 및 그 동작 방법 Download PDFInfo
- Publication number
- KR102695127B1 KR102695127B1 KR1020190126908A KR20190126908A KR102695127B1 KR 102695127 B1 KR102695127 B1 KR 102695127B1 KR 1020190126908 A KR1020190126908 A KR 1020190126908A KR 20190126908 A KR20190126908 A KR 20190126908A KR 102695127 B1 KR102695127 B1 KR 102695127B1
- Authority
- KR
- South Korea
- Prior art keywords
- storage device
- nonvolatile memory
- storage
- paragraph
- storage controller
- Prior art date
Links
- 238000011017 operating method Methods 0.000 title claims abstract description 7
- 230000015654 memory Effects 0.000 claims description 94
- 238000000034 method Methods 0.000 claims description 11
- 238000012937 correction Methods 0.000 claims description 7
- 230000006835 compression Effects 0.000 claims description 5
- 238000007906 compression Methods 0.000 claims description 5
- 238000004458 analytical method Methods 0.000 claims description 2
- 230000003044 adaptive effect Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 12
- 238000012545 processing Methods 0.000 description 6
- 238000003491 array Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000003936 working memory Effects 0.000 description 1
Images
Classifications
-
- 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/1668—Details of memory controller
-
- 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/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3206—Monitoring of events, devices or parameters that trigger a change in power modality
- G06F1/3215—Monitoring of peripheral devices
- G06F1/3225—Monitoring of peripheral devices of memory devices
-
- 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/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- 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/0604—Improving or facilitating administration, e.g. storage 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0632—Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
-
- 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/0653—Monitoring storage devices or systems
-
- 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
-
- 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]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Techniques For Improving Reliability Of Storages (AREA)
- Logic Circuits (AREA)
Abstract
재구성가능한 스토리지 컨트롤러, 스토리지 장치 및 그 동작방법이 개시된다. 본 발명의 스토리지 장치는 복수의 비휘발성 메모리 장치 및 비휘발성 메모리 장치의 동작을 제어하고, 호스트로부터 수신된 명령에 따라 동적으로 전력을 관리하는 스토리지 컨트롤러를 포함하고, 스토리지 컨트롤러는 명령을 수신하고 패턴을 분석하여 복수의 이미지 중 최적 이미지를 선택하며, 최적 이미지를 로딩하여 동작하는 프로그래머블 로직부를 포함할 수 있다.
Description
본 발명은 스토리지 컨트롤러 및 스토리지 시스템에 관한 것이다. 보다 구체적으로, 본 발명은 프로그램가능한 로직을 포함하는 스토리지 컨트롤러 및 스토리지 시스템에 관한 것이다.
스토리지 장치는 컴퓨터, 스마트 폰, 스마트 패드 등과 같은 호스트 장치의 제어에 따라 데이터를 저장하는 장치이다. 스토리지 장치는 하드 디스크 드라이브(HDD, Hard Disk Drive)와 같이 자기 디스크에 데이터를 저장하는 장치, 솔리드 스테이트 드라이브(SSD, Solid State Drive), 메모리 카드 등과 같이 반도체 메모리, 특히 비휘발성 메모리에 데이터를 저장하는 장치를 포함한다.
비휘발성 메모리는 ROM (Read Only Memory), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM), 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등을 포함한다.
반도체 제조 기술이 발전되면서, 스토리지 장치와 통신하는 컴퓨터, 스마트폰, 스마트패드 등과 같은 호스트 장치의 동작 속도가 향상되고 있다. 또한, 스토리지 장치 및 스토리지 장치의 호스트 장치에서 사용되는 콘텐츠의 용량이 증가하고 있다. 이에 따라, 하드웨어 리소스가 적합하게 투입되도록 재구성하는 스토리지 장치에 대한 요구가 지속적으로 제기되고 있다.
본 발명이 해결하고자 하는 기술적 과제는 호스트의 간섭 없이 명령에 적응적으로 구성된 프로그래머블 로직에 따라 스토리지 장치의 내부 리소스를 효율적으로 사용하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 몇몇 실시예에 따른 스토리지 컨트롤러는 호스트로부터 수신한 명령을 실시간으로 분석하는 호스트 인터페이스, 복수의 이미지 중 명령에 적응적인 최적 이미지를 로딩하는 프로그래머블 로직부(Programmable Logic) 및 프로그래머블 로직부의 동작에 따라 제어 동작을 수행하는 프로세서를 포함하고, 제어 동작은 스토리지 컨트롤러 또는 비휘발성 메모리 장치에 대해 동적으로(Dynamic)으로 전력을 관리할 수 있다.
상기 기술적 과제를 달성하기 위한 몇몇 실시예에 따른 스토리지 컨트롤러의 동작방법은 호스트로부터 수신된 명령을 실시간으로 분석하는 단계, 분석 결과에 따라 복수의 이미지 중 최적 이미지를 적응적으로 선택하는 단계 및 최적 이미지를 로딩하여, 동적으로 전력을 관리하는 단계를 포함할 수 있다.
상기 기술적 과제를 달성하기 위한 몇몇 실시예에 따른 스토리지 장치는 복수의 비휘발성 메모리 장치 및 비휘발성 메모리 장치의 동작을 제어하고, 호스트로부터 수신된 명령에 따라 동적으로 전력을 관리하는 스토리지 컨트롤러를 포함하고, 스토리지 컨트롤러는 명령을 수신하고 패턴을 분석하여 복수의 이미지 중 최적 이미지를 선택하며, 최적 이미지를 로딩하여 동작하는 프로그래머블 로직부를 포함할 수 있다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 몇몇 실시예에 따른 스토리지 시스템을 설명하기 위한 블록도이다.
도 2는 몇몇 실시예에 따른 스토리지 컨트롤러를 설명하기 위한 블록도이다.
도 3은 몇몇 실시예에 따른 스토리지 컨트롤러의 동작방법을 설명하기 위한 흐름도이다.
도 4는 몇몇 실시예에 따른 스토리지 컨트롤러의 동작방법을 설명하기 위한 흐름도이다.
도 5는 몇몇 실시예에 따른 스토리지 컨트롤러의 동작방법을 설명하기 위한 흐름도이다.
도 6은 몇몇 실시예에 따른 스토리지 컨트롤러를 설명하기 위한 블록도이다.
도 7은 몇몇 실시예에 따른 스토리지 컨트롤러를 설명하기 위한 블록도이다.
도 8은 몇몇 실시예에 따른 스토리지 컨트롤러를 설명하기 위한 블록도이다.
도 9는 몇몇 실시예에 따른 스토리지 컨트롤러를 설명하기 위한 블록도이다.
도 2는 몇몇 실시예에 따른 스토리지 컨트롤러를 설명하기 위한 블록도이다.
도 3은 몇몇 실시예에 따른 스토리지 컨트롤러의 동작방법을 설명하기 위한 흐름도이다.
도 4는 몇몇 실시예에 따른 스토리지 컨트롤러의 동작방법을 설명하기 위한 흐름도이다.
도 5는 몇몇 실시예에 따른 스토리지 컨트롤러의 동작방법을 설명하기 위한 흐름도이다.
도 6은 몇몇 실시예에 따른 스토리지 컨트롤러를 설명하기 위한 블록도이다.
도 7은 몇몇 실시예에 따른 스토리지 컨트롤러를 설명하기 위한 블록도이다.
도 8은 몇몇 실시예에 따른 스토리지 컨트롤러를 설명하기 위한 블록도이다.
도 9는 몇몇 실시예에 따른 스토리지 컨트롤러를 설명하기 위한 블록도이다.
이하에서, 도 1 내지 도 9를 참조하여 몇몇 실시예에 따른 스토리지 컨트롤러, 스토리지 시스템 및 그 동작방법을 설명한다.
도 1은 몇몇 실시예에 따른 스토리지 시스템을 설명하기 위한 블록도이고, 도 2는 몇몇 실시예에 따른 스토리지 컨트롤러를 설명하기 위한 블록도이다.
도 1 및 도 2를 참조하면, 몇몇 실시예에 따른 스토리지 시스템은 호스트(10) 및 호스트(10)와 다양한 인터페이스를 통해 명령 및/또는 데이터를 송수신할 수 있는 스토리지 장치(20)를 포함할 수 있다.
호스트(10)는 스토리지 장치(20)로 명령(CMD) 및 데이터(DATA)를 전송하고, 스토리지 장치(20)의 데이터 처리 동작, 예를 들어, 데이터 독출 동작 또는 데이터 기록 동작 등을 요청할 수 있다. 다만, 이에 한정되는 것은 아니며, 데이터 독출 동작 또는 데이터 기록 동작이 아닌 동작에 대해서도 호스트(10)가 요청할 수 있다.
몇몇 실시예에서, 호스트(10)는 CPU, 프로세서, 마이크로프로세서 또는 어플리케이션 프로세서(Application Processor, AP) 등에 해당할 수 있다. 몇몇 실시예에 따라, 호스트(10)는 시스템 온 칩(System-On-a-Chip, SoC)으로 구현될 수 있다.
스토리지 장치(20)와 호스트(10) 사이의 통신을 위한 인터페이스의 일 예로서, ATA(advanced technology attachment), SATA(serial ATA), e-SATA(external SATA), SCSI(small computer small interface), SAS(serial attached SCSI), PCI(peripheral component interconnection), PCI-E(PCI express), IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi media card), eMMC(embedded multi media card), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스 방식이 적용될 수 있다.
몇몇 실시예에 따라 스토리지 시스템은 솔리드 스테이트 드라이브(Solid State Drive, SSD)일 수 있다. 그러나, 본 발명은 이에 한정되지 않고, 스토리지 장치(10)는 임베디드 멀티미디어 카드(embedded multimedia card, eMMC), 유니버셜 플래시 스토리지(universal flash storage, UFS), 또는 CF(Compact Flash), SD(Secure Digital), Micro-SD(Micro Secure Digital), Mini-SD(Mini Secure Digital), xD(extreme Digital) 또는 메모리 스틱(Memory Stick) 등 다양한 종류의 장치로 구현될 수 있다.
호스트(10)는 인터페이스를 통해, 스토리지 장치(20)의 데이터 처리 동작을 제어할 수 있다.
스토리지 장치(20)는 스토리지 컨트롤러(100)와 비휘발성 메모리 장치(200)를 포함한다. 몇몇 실시예에서, 비휘발성 메모리 장치(200)는 플래시(Flash) 메모리, 또는 ReRAM(resistive RAM), PRAM(phase change RAM), MRAM(magnetic RAM)과 같은 저항형 메모리를 포함할 수 있다. 또한, 비휘발성 메모리 장치(200)는 프로세서 및 RAM을 포함하는 집적 회로, 예를 들어, 스토리지 장치 또는 PIM(Processing in Memory)를 포함할 수 있다.
몇몇 실시예에서, 비휘발성 메모리 장치(200)에 포함된 플래시 메모리는 2차원(2D) 또는 3 차원(3D) 메모리 어레이일 수 있다. 3D 메모리 어레이는 실리콘 기판 위에 배치되는 활성 영역과, 메모리 셀들의 동작과 관련된 회로로서 상기 기판 상에 또는 상기 기판 내에 형성된 회로를 가지는 메모리 셀 어레이들의 적어도 하나의 물리적 레벨에 모놀리식으로 형성된다. 상기 용어 "모놀리식"은 상기 어레이를 구성하는 각 레벨의 층들이 상기 어레이 중 각 하부 레벨의 층들의 바로 위에 적층되어 있음을 의미한다. 상기 3D 메모리 어레이는 적어도 하나의 메모리 셀이 다른 메모리 셀의 위에 위치하도록 수직 방향으로 배치된 버티칼 NAND 스트링들을 포함한다. 상기 적어도 하나의 메모리 셀은 전하 트랩층을 포함할 수 있다.
스토리지 컨트롤러(100)는 비휘발성 메모리 장치(200)에 대한 동작을 제어할 수 있다. 몇몇 실시예에서, 스토리지 컨트롤러(100)는 적어도 하나의 채널을 통해 비휘발성 메모리 장치(200)에 연결되어 데이터를 기록하거나 독출할 수 있다. 몇몇 실시예에 따라 스토리지 컨트롤러(100)는 SSD나 메모리 카드 등의 스토리지 장치 내에 구비되는 구성일 수 있다.
도 2를 참조하면, 스토리지 컨트롤러(100)는 호스트 인터페이스(110), 프로그래머블 로직부(120), 프로세서(130), 메모리 컨트롤러(140), RAM(150), 비휘발성메모리 컨트롤러(160)를 포함할 수 있다.
호스트(10)는 데이터 및 메모리 관리와 관련된 하나 이상의 명령(CMD)을 제공한다.
호스트 인터페이스(110)는 명령어 처리 시스템이, 적어도 하나의 명령어가 처리를 위해 수집되는 호스트와 연결하기 위한 적어도 하나의 옵션을 제공하도록 설정될 수 있다.
몇몇 실시예에서, 호스트 인터페이스(110)는 호스트로부터 수신한 명령 자체를 실시간으로 분석할 수 있다. 또한 호스트 인터페이스(110)는 스토리지 장치(20)의 동작 상태를 호스트(10)로 실시간으로 전송할 수 있다.
몇몇 실시예에서, 호스트 인터페이스(110)는 호스트(10)로부터 수신되는 명령의 패턴을 분석할 수 있다. 명령의 패턴은 스토리지 장치(20)의 동작 상태에 기초한 명령이 변경되는 일정한 양상을 의미할 수 있다.
몇몇 실시예에서 프로그래머블 로직부(120)는 스토리지 컨트롤러(100)에 임베디드된 FPGA(embedded-Field Programmable Gate Arrays; eFPGA)일 수 있다. 프로그래머블 로직부(120)는 CLB(Configurable Logic Block)와 IOB(Input Output Block) 및 둘 사이를 연결하는 구성 가능한 연결 회로를 포함할 수 있다.
프로그래머블 로직부(120)는 로딩되는 이미지(I)에 따라 특정 동작을 수행한다. 프로그래머블 로직부(120)는 이미지를 통해 특정 동작을 수행하는 디지털 회로를 설계하는데 널리 사용되는 PLD(Programmable Logic Device)일 수 있다.
본 명세서에서의 이미지는 프로그래머블 로직부(120)가 수행하는 특정 동작에 대한 하드웨어/소프트웨어 이미지로서, 다양한 실시예에 따라 비트 스트림, 커널(kernel) 또는 룩업테이블 등으로도 호칭될 수 있다.
스토리지 장치(20)는 복수의 이미지를 포함할 수 있다. 각각의 이미지는 스토리지 장치(20)의 동작 상태 또는 호스트(10)로부터의 명령에 기초하여 스토리지 장치(20)가 동작하는 다양한 상황들 각각에 대한 프로그램일 수 있다.
프로세서(130)는 스토리지 컨트롤러(100)의 전반적인 동작을 제어한다. 몇몇 실시예에 따라 프로세서(130)는 스토리지 컨트롤러(100)의 비휘발성 메모리 장치(200)에 대한 액세스 동작, 스토리지 컨트롤러(100)의 호스트(10)에 대한 액세스 동작 및 스토리지 컨트롤러(100) 자체에 대한 동작을 제어한다. 즉, 프로세서(130)는 호스트 인터페이스(110), 프로그래머블 로직부(120), 메모리 컨트롤러(140), RAM(150) 또는 비휘발성 메모리 컨트롤러(160) 각각의 동작을 제어할 수 있다.
프로세서(130)는 프로그래머블 로직부(120)의 동작에 따라 제어 동작을 수행할 수도 있다. 몇몇 실시예에 따라 프로세서(130)는 프로그래머블 로직부(120)의 동작에 따라 스토리지 컨트롤러(100) 자체에 대한 전력을 동적으로 관리할 수 있고, 비휘발성 메모리 장치(200)에 대한 전력을 동적으로 관리할 수도 있다.
메모리 컨트롤러(140)는 메모리(300)와 연결되고, 스토리지 컨트롤러(300)는 호스트(10)로부터 수신한 데이터를 메모리(300)에 일시 저장하였다가 비휘발성 메모리 장치(200)로 제공할 수도 있고, 비휘발성 메모리 장치(200)로부터 독출된 데이터를 호스트(10)로 제공할 수도 있다.
몇몇 실시예에 따라 메모리(300)는 버퍼 메모리일 수 있으며, 몇몇 실시예에 따라 캐시(Cache), ROM(Read Only Memory), PROM(Programmable Read Only Memory), EPROM(Erasable PROM), EEPROM(Electrically Erasable Programmable Read-Only Memory), PRAM(Phase-change RAM), 플래시(Flash) 메모리, SRAM(Static RAM), 또는 DRAM(Dynamic RAM)을 포함할 수 있다. 메모리(300)는 몇몇 실시예에 따라 내부 메모리로 스토리지 컨트롤러(100) 내에 집적된 것일 수도 있고, 외부에 별개로 존재하는 것일 수도 있다. 메모리(300)에는 스토리지 컨트롤러(100)의 동작 또는 상태와 관련된 기설정된 정보들, 프로그램들, 또는 명령들이 저장될 수 있다.
RAM(150)은 내부의 동작 메모리(Working memory)로서 이용될 수 있고, 각종 메모리로 구현될 수 있다. 몇몇 실시예에 따라, RAM(150)은 휘발성 메모리 또는 비휘발성 메모리일 수 있다. 예를 들어 캐시(Cache), DRAM(Dynamic RAM), SRAM(Static RAM), PRAM(Phase-change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), 플래시(Flash) 메모리 장치들 중 적어도 하나로 구현될 수 있다.
비휘발성 메모리 컨트롤러(160)는 비휘발성 메모리 장치(200)에 각각 액세스하여 비휘발성 메모리 장치(200) 각각의 동작을 제어할 수 있다.
몇몇 실시예에 따라 비휘발성 메모리 컨트롤러(160)는 AES (Advanced Encryption Standard) 모듈을 포함할 수 있다. 비휘발성 메모리 장치(200)는 보안 데이터로서 AES 인코딩된 데이터를 저장할 수 있다. 프로세서(130)는 AES 디코딩된 데이터와 미리 정해진 데이터를 비교하고, 비교 결과에 따라 AES 디코딩의 성공 여부를 판별할 수 있다. 비휘발성 메모리(200)는 보안 디코딩(AES 디코딩)이 성공적으로 수행되었는지의 여부를 보안 디코딩의 결과 데이터로서 레지스터(미도시)에 저장할 수 있다.
몇몇 실시예에 따라 비휘발성 메모리 컨트롤러(160)는 데이터의 패턴 의존성(pattern dependency)를 제거하기 위한 랜덤화 회로(RND)를 포함할 수 있다. 랜덤화 회로는 기입 동작시 타겟 페이지에 상응하는 시드값 (seed value)들을 이용하여 랜더마이징을 수행하여 랜더마이징된 데이터를 제공할 수 있다. 또한 랜덤화 회로는 독출 동작시 소스 페이지에 상응하는 시드값들을 이용하여 디-랜더마이징을 수행하여 디-랜더마이징된 데이터를 제공할 수 있다.
몇몇 실시예에 따라 비휘발성 메모리 컨트롤러(160)는 ECC 엔진을 포함할 수 있다. ECC 엔진은 에러 비트 정정을 수행하고, ECC 인코더와 ECC 디코더를 포함할 수 있다. ECC 엔진은 ECC 섹터(sector)의 데이터 단위로 에러 비트 정정을 수행할 수 있다.
비휘발성 메모리 장치(200)는 메모리 셀 어레이, 행 선택 회로, 페이지 버퍼 회로, 열 선택 회로, 데이터 처리부, 입출력 인터페이스 및 제어 로직을 포함할 수 있다.
메모리 셀 어레이는 복수의 워드 라인들(WL)과 복수의 비트 라인들(BL)에 각각 연결되는 복수의 메모리 셀들을 포함한다. 상기 복수의 메모리 셀들은 몇몇 실시예에 따라 각각 NAND 또는 NOR 플래시 메모리 셀들일 수 있으며, 몇몇 실시예에 따라 2차원 어레이(array) 구조 또는 3차원 수직 어레이 구조로 배열될 수 있다. 몇몇 실시예에 따라, 상기 메모리 셀들은 다양한 타입의 저항성 메모리 셀들일 수 있다.
몇몇 실시예에 따라 상기 복수의 메모리 셀들은 각각 하나의 데이터 비트를 저장하는 싱글 레벨 메모리 셀(Single Level memory Cell; SLC)들 또는 복수의 데이터 비트들을 저장하는 멀티 레벨 메모리 셀(Multi Level memory Cell; MLC)들일 수 있다.
도 3은 몇몇 실시예에 따른 스토리지 컨트롤러의 동작방법을 설명하기 위한 흐름도이다.
도 2 및 도 3을 참고하면, 스토리지 컨트롤러(100)가 호스트(10)로부터 명령을 수신하면(S10), 스토리지 컨트롤러(100)는 명령을 분석한다(S11). 스토리지 컨트롤러(100)는 스토리지 장치(20) 내부의 현재 동작 상태(current state)를 실시간으로 모니터링한다(S12).
스토리지 장치(20)의 현재 동작 상태가 수신된 명령을 수행하기에 적합한 상태, 즉 적절한 리소스 배분 상태라면, 스토리지 컨트롤러(100)는 현재 상태를 유지한다(S14).
그러나 스토리지 장치(20)의 현재 동작 상태가 수신된 명령을 수행하기에 적합하지 않은 상태라면, 스토리지 컨트롤러(100)는 내부 하드웨어 모듈들의 리소스 재분배를 위한 동작을 수행한다(S13 내지 S15).
구체적으로, 스토리지 컨트롤러(100)는 스토리지 장치(20)의 현재 상태 및 호스트(10)로부터의 명령에 기초하여 복수의 이미지 중 최적 이미지를 적응적으로 선택한다. 다양한 실시예에 따라 복수의 이미지는 스토리지 컨트롤러(100) 내의 RAM(150), 메모리(300), 비휘발성 메모리 장치(200) 중 적어도 하나에 저장될 수 있다.
몇몇 실시예에 따르면, 스토리지 컨트롤러(100)는 복수의 이미지 중 명령을 수행하기에 가장 효율적인 리소스 투입 상태에 해당하는 최적 이미지를 선택하고, 프로그래머블 로직부(120)에 로딩한다. 다양한 실시예에 따라 복수의 이미지중 최적 이미지를 선택하는 것은 호스트 인터페이스(110)일 수도 있고, 프로그래머블 로직부(120)일 수도 있으며, 또는 프로세서(130)일 수도 있다.
프로그래머블 로직부(120)는 최적 이미지를 로딩하여, 스토리지 컨트롤러(100)의 동작을 제어할 수 있다. 몇몇 실시예에 따라 프로그래머블 로직부(120)는 최적 이미지에 따라 스토리지 컨트롤러(100)의 하드웨어 리소스를 재구성하여 동적으로 전력을 관리할 수 있다(S15). 몇몇 실시예에 따라 프로그래머블 로직부(120)는 스토리지 장치(20)에 포함된 복수의 하드웨어 모듈마다 독립적으로 동적 전력 관리할 수 있다.
스토리지 컨트롤러(100)는 최적 이미지에 따른 동작 수행 후의 상태 및/또는 수행결과(Output)를 호스트(10)로 전송할 수 있다(S16). 호스트(10)는 수행결과에 따른 후속 동작을 준비할 수 있다.
도 4는 몇몇 실시예에 따른 스토리지 컨트롤러의 동작방법을 설명하기 위한 흐름도이다.
도 4를 참고하면, S20 내지 S22단계는 도 3과 동일하므로 설명을 생략한다. 몇몇 실시예에 따라 스토리지 장치(20)의 현재 동작 상태가 수신된 명령을 수행하기에 적합한 상태라면, 스토리지 컨트롤러(100)는 현재 상태를 유지하며 명령을 수행한다(S14).
그러나 스토리지 장치(20)의 현재 동작 상태가 수신된 명령을 수행하기에 적합하지 않은 상태라면, 스토리지 컨트롤러(100)는 내부 하드웨어 모듈들의 리소스 재분배를 위한 동작을 수행한다(S23, S25 내지 S26).
구체적으로, 스토리지 컨트롤러(100)는 스토리지 장치(20)의 현재 상태 및 호스트(10)로부터의 명령에 기초하여 복수의 이미지 중 최적 이미지를 적응적으로 선택한다. 다양한 실시예에 따라 복수의 이미지는 스토리지 컨트롤러(100) 내의 RAM(150), 메모리(300), 비휘발성 메모리 장치(200) 중 적어도 하나에 저장될 수 있다.
몇몇 실시예에 따르면, 프로세서(120)는 복수의 이미지 중 명령을 수행하기에 가장 효율적인 리소스 투입 상태에 해당하는 최적 이미지를 선택하고, 프로그래머블 로직부(120)에 로딩한다.
프로그래머블 로직부(120)는 최적 이미지를 로딩하여, 스토리지 컨트롤러(100)의 동작을 제어할 수 있다(S25). 몇몇 실시예에 따라 프로세서(130)는 최적 이미지에 따라 프로세서(120)의 리소스를 재구성하여 동적으로 전력을 관리할 수 있다(S26).
몇몇 실시예에 따라, 프로그래머블 로직부(120)는 프로세서(120)의 동작 주파수를 조절할 수 있다. 즉, 호스트로부터의 명령에 기초하여 동작 주파수를 더 높이거나 낮출 수 있다.
호스트 인터페이스(110)는 최적 이미지에 따른 동작 수행 후의 상태 및/또는 수행결과(Output)를 호스트(10)로 전송할 수 있다(S27). 호스트(10)는 수행결과에 따른 후속 동작을 준비할 수 있다.
이와 같이 스토리지 컨트롤러(100)는 스토리지 장치의 상태 및 명령에 적응적으로 이미지를 변경하며 프로세서(120)의 동작을 제어하므로, 프로세서의 리소스 투입이 최적화되어 동작할 수 있다.
도 5는 몇몇 실시예에 따른 스토리지 컨트롤러의 동작방법을 설명하기 위한 흐름도이다.
도 5를 참고하면, S30 내지 S32, S34단계는 도 3과 동일하므로 설명을 생략한다. 도 5에 도시된 몇몇 실시예에서 스토리지 장치(20)의 현재 동작 상태가 수신된 명령을 수행하기에 적합하지 않은 상태인 경우, 스토리지 컨트롤러(100)는 비휘발성 메모리 장치(200)의 리소스 재분배를 위한 동작을 수행한다(S33, S35 내지 S36).
구체적으로, 스토리지 컨트롤러(100)는 스토리지 장치(20)의 현재 상태 및 호스트(10)로부터의 명령에 기초하여 복수의 이미지 중 최적 이미지를 적응적으로 선택한다. 다양한 실시예에 따라 복수의 이미지는 스토리지 컨트롤러(100) 내의 RAM(150), 메모리(300), 비휘발성 메모리 장치(200) 중 적어도 하나에 저장될 수 있다.
몇몇 실시예에 따르면, 스토리지 컨트롤러(100)는 복수의 이미지 중 명령을 수행하기에 가장 효율적인 리소스 투입 상태에 해당하는 최적 이미지를 선택하고, 프로그래머블 로직부(120)에 로딩한다(S33). 다양한 실시예에 따라 최적 이미지 선택은 호스트 인터페이스(110), 프로세서(130) 또는 프로그래머블 로직부(120) 중 어느 하나에 의해 수행될 수 있다.
프로그래머블 로직부(120)는 최적 이미지를 로딩하여, 스토리지 컨트롤러(100)의 동작을 제어할 수 있다(S35).
몇몇 실시예에 따라, 프로그래머블 로직부(120)는 비휘발성 메모리 컨트롤러(160)에 대한 전원 차단 동작, 전원전압 조절 동작, 동작 주파수 조절 동작, 랜더마이징 동작, 에러 정정 동작, 컴프레션(compression) 동작 중 적어도 하나의 동작을 동적으로 제어할 수 있다.
몇몇 실시예에 따라, 프로그래머블 로직부(120)는 프로세서(130)를 통해 비휘발성 메모리 컨트롤러(160)에 대한 제어 동작을 수행할 수 있다. 몇몇 실시예에 따라, 비휘발성 메모리 장치(200)의 에러 발생이 증가하면, 비휘발성 메모리 컨트롤러(160)가 에러 정정 동작을 수행하도록 할 수 있다. 몇몇 실시예에 따라, 비휘발성 메모리 장치(200)의 잔여 메모리 용량이 부족하면, 비휘발성 메모리 컨트롤러(160)가 데이터에 대한 컴프레션 동작을 수행하도록 할 수 있다. 몇몇 실시예에 따라, 비휘발성 메모리 장치(200)의 IOPS(input/output operations per second) 레벨이 떨어지면 비휘발성 메모리 컨트롤러(160)가 고성능 연산 동작을 수행하도록 할 수 있다. 몇몇 실시예에 따라, 복수의 비휘발성 메모리 장치(20) 중 어느 하나가 소정시간 동안 사용되지 않는 경우 해당 비휘발성 메모리 장치(200)에 대한 동작 주파수를 낮추거나 턴오프할 수 있다(반대의 경우로서 사용을 위해 비휘발성 메모리 장치를 턴온할 수도 있다). 또는 몇몇 실시예에 따라 복수의 비휘발성 메모리 장치(20)에 대한 전원전압을 조절할 수도 있다.
호스트 인터페이스(110)는 최적 이미지에 따른 동작 수행 후의 상태 및/또는 수행결과(Output)를 호스트(10)로 전송할 수 있다(S37). 호스트(10)는 수행결과에 따른 후속 동작을 준비할 수 있다.
이와 같이 스토리지 컨트롤러는 스토리지 장치의 상태 및 명령에 적응적으로 이미지를 변경하며 비휘발성 메모리 장치에 대한 동작을 제어하므로, 비휘발성 메모리의 리소스 투입이 최적화되어 동작할 수 있고, 전력 소모도 효율적으로 할 수 있다.
도 6은 몇몇 실시예에 따른 스토리지 컨트롤러를 설명하기 위한 블록도이다. 설명의 편의를 위해, 도 2와의 차이점을 위주로 설명하고, 나머지 동일한 구성요소에 대한 설명은 생략한다.
도 6을 참고하면, 프로그래머블 로직부(120)에 로딩되기 위한 복수의 이미지는 비휘발성 메모리 장치(210)에 저장될 수 있다.
비휘발성 메모리 장치(210,220)는 복수 개가 스토리지 컨트롤러(100)에 연결되어, 스토리지 컨트롤러(100)의 제어에 따라 액세스될 수 있다.
몇몇 실시예에 따라 비휘발성 메모리 장치(210,220)는 별개의 비휘발성 메모리 컨트롤러(160)에 의해 액세스될 수도 있고, 하나의 비휘발성 메모리 컨트롤러(160)에 의해 액세스될 수도 있다.
몇몇 실시예에 따라 복수의 이미지(I)는 복수의 비휘발성 메모리 장치 중 적어도 어느 하나(210)에 저장될 수 있다. 비휘발성 메모리 장치(210)에 저장된 이미지(I) 중 선택된 최적 이미지는 비휘발성 메모리 컨트롤러(160)가 채널CH1을 통해 최적 이미지에 액세스 하여, 프로그래머블 로직부(120)로 로딩할 수 있다. 이미지가 아닌 호스트(10)로부터 독출 요청되거나 쓰기 요청된 데이터는 채널 CH2 내지 CH k(k는 3 이상의 자연수)를 통해 비휘발성 메모리 장치(220)에 액세스될 수 있다.
몇몇 실시예에 따라, 복수의 이미지(I)는 복수의 비휘발성 메모리 장치 중 지정된 적어도 하나(210)에 저장될 수 있다. 지정된 적어도 하나의 비휘발성 메모리 장치(210)는 복수의 이미지(I)를 저장하는데에만 쓰이고, 다른 데이터를 저장하지 않을 수 있다. 지정된 적어도 하나의 비휘발성 메모리 장치(210)는 저장된 복수의 이미지(I)를 채널 CH1를 통해 연결되어, 읽기만 가능하고, 호스트에 의한 쓰기(write) 및 삭제(erase)는 되지 않을 수 있다. 이 경우 호스트에 의한 데이터 읽기,쓰기 및 삭제는 채널 CH2 내지 CH k를 통해 연결된 비휘발성 메모리 장치(220)에 대해서만 가능할 수 있다.
몇몇 실시예에 따라, 스토리지 컨트롤러(100)는 복수의 비휘발성 메모리 장치(200) 각각의 상태를 모니터링하고, 프로그래머블 로직부(120)는 호스트(10)로부터 수신된 명령을 수행할 때 선택된 최적 이미지에 따라 메모리 장치(200)에 대한 액세스 동작을 제어한다.
스토리지 컨트롤러(100)에 포함되는 나머지 110 내지 160의 구성은 도 2와 동일하므로, 설명을 생략한다.
도 7은 몇몇 실시예에 따른 스토리지 컨트롤러를 설명하기 위한 블록도이다.
도 7을 참고하면, 프로그래머블 로직부(120)에 로드되기 위한 이미지는 스토리지 컨트롤러(100)의 내부 메모리(150)에 저장될 수 있다. 몇몇 실시예에 따라 내부 메모리는 비휘발성 메모리 및 휘발성 메모리를 포함할 수 있고, 복수의 이미지는 비휘발성 메모리(NVRAM)에 저장될 수 있다. 몇몇 실시예에 따라 비휘발성 메모리(155)는 레지스터, MRAM, PRAM 등일 수 있다.
스토리지 컨트롤러(100)에 포함되는 나머지 110 내지 160의 구성은 도 2와 동일하므로, 설명을 생략한다.
도 8은 몇몇 실시예에 따른 스토리지 컨트롤러를 설명하기 위한 블록도이다.
도 8에 도시된 몇몇 실시예에 따르면, 프로그래머블 로직부(120)에 로드되기 위한 이미지는 제1종의 이미지와 제2종의 이미지를 포함할 수 있다. 몇몇 실시예에 따라 제1종의 이미지와 제2종의 이미지는 이미지의 데이터 사이즈를 기준으로 구분할 수도 있고, 몇몇 실시예에 따라 제1종의 이미지와 제2종의 이미지는 프로그래머블 로직부(120)의 동작상 분류에 따라 구분 할 수도 있고, 몇몇 실시예에 따라 제1종의 이미지(I1)와 제2종의 이미지(I2)는 프로그래머블 로직부(120)의 제어 동작의 피대상물에 따라 구분할 수도 있다.
스토리지 컨트롤러(100)는 몇몇 실시예에 따라 제1종의 이미지(I1)는 용량이 작은 비트 스트림으로써, 내부메모리(155)에 저장하고, 제2 종의 이미지(I2)는 기설정된 데이터 용량보다 큰 비트 스트림으로써 비휘발성 메모리 장치(200)에 저장할 수 있다.
또는 스토리지 컨트롤러(100)는 몇몇 실시예에 따라 제1종의 이미지(I1)는 스토리지 컨트롤러(100) 내부의 하드웨어 모듈들(예를 들어 110, 120, 130, 140, 160)에 대한 동작 제어를 위한 것으로, 내부메모리(155)에 저장하고, 몇몇 실시예에 따라 내부메모리(155)는 비휘발성 RAM으로서 레지스터, MRAM(Magnetic Random Access Memory), PRAM(Phase-change Random Access Memory) 등일 수 있다. 제2 종의 이미지(I2)는 비휘발성 메모리 장치(200) 각각 또는 비휘발성 메모리 컨트롤러(160)에 대한 동작 제어로서 비휘발성 메모리 장치(200)에 저장할 수 있다.
스토리지 컨트롤러(100)에 포함되는 나머지 110 내지 160의 구성은 도 2와 동일하므로, 설명을 생략한다.
도 9는 몇몇 실시예에 따른 스토리지 컨트롤러를 설명하기 위한 블록도이다.
도 9를 참고하면, 프로그래머블 로직부(120)에 로드되기 위한 이미지는 스토리지 컨트롤러(100)의 외부 메모리(400)에 저장될 수 있다. 외부 메모리(400)는 프로그래머블 로직부(120)에 직접적으로 연결될 수 있다.
외부 메모리(400)는 몇몇 실시예에 따라 비휘발성 메모리일 수도 있고, 버퍼 메모리 일수도 있으며, 레지스터일 수도 있다. 외부 메모리(400)는 프로그래머블 로직부(120)에 로딩되는 복수의 이미지들을 저장할 수 있다. 프로그래머블 로직부(120)는 외부 메모리(400)로부터 어느 하나의 이미지를 로딩하여, 동작할 수 있다.
스토리지 컨트롤러(100)에 포함되는 나머지 110 내지 160의 구성은 도 2와 동일하므로, 설명을 생략한다.
이와 같이 스토리지 컨트롤러(100)는 호스트(10)로부터의 명령에 따라 하드웨어 리소스(Resource)를 효율적으로 재배치할 수 있다. 이때 호스트의 개입없이 스토리지 컨트롤러(100) 자체적으로 명령을 분석하고 스토리지 컨트롤러(100)의 전력을 동적으로 관리할 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
10 : 호스트 20 : 스토리지 장치
100 : 스토리지 컨트롤러 110 : 호스트 인터페이스
120 : 프로그래머블 로직부 130 : 프로세서
140 : 메모리 컨트롤러 150 : RAM
160 : 비휘발성 메모리 컨트롤러 200 : 비휘발성 메모리 장치 300 : 메모리
100 : 스토리지 컨트롤러 110 : 호스트 인터페이스
120 : 프로그래머블 로직부 130 : 프로세서
140 : 메모리 컨트롤러 150 : RAM
160 : 비휘발성 메모리 컨트롤러 200 : 비휘발성 메모리 장치 300 : 메모리
Claims (20)
- 스토리지 컨트롤러에 있어서,
호스트로부터 수신한 명령을 실시간으로 분석하는 호스트 인터페이스;
복수의 이미지 중 상기 명령에 적응적인 최적 이미지를 로딩하는 프로그래머블 로직부(Programmable Logic); 및
상기 프로그래머블 로직부의 동작에 따라 제어 동작을 수행하는 프로세서를 포함하고,
상기 제어 동작은
상기 스토리지 컨트롤러 또는 비휘발성 메모리 장치에 대해 동적으로(Dynamic)으로 전력을 관리하는 스토리지 컨트롤러. - 제1항에 있어서, 상기 프로그래머블 로직부는
상기 명령의 패턴을 분석하여, 상기 복수의 이미지 중 상기 분석된 패턴에 상응하는 최적 이미지를 로딩하는, 스토리지 컨트롤러. - 제1항에 있어서,
상기 복수의 이미지는 상기 비휘발성 메모리 장치에 저장된 이미지인, 스토리지 컨트롤러. - 제1항에 있어서, 상기 스토리지 컨트롤러는
상기 비휘발성 메모리 장치에 대한 동작을 제어하는 비휘발성 메모리 컨트롤러를 포함하고,
상기 제어 동작은
상기 로딩된 이미지에 기초하여 상기 비휘발성 메모리 컨트롤러에 대한 전원 차단 동작, 전원전압 조절 동작, 동작 주파수 조절 동작, 랜더마이징 동작, 에러 정정 동작, 컴프레션(compression) 동작 중 적어도 하나의 동작을 동적으로 제어하는, 스토리지 컨트롤러. - 제1항에 있어서,
복수의 제1종 이미지는 내부 메모리에 저장되고, 복수의 제2종 이미지는 상기 비휘발성 메모리 장치에 저장되는, 스토리지 컨트롤러. - 호스트로부터 수신된 명령을 실시간으로 분석하는 단계;
상기 분석 결과에 따라 복수의 이미지 중 최적 이미지를 적응적으로 선택하는 단계; 및
상기 최적 이미지를 로딩하여, 동적으로 전력을 관리하는 단계를 포함하는 스토리지 장치의 동작방법. - 제6항에 있어서, 상기 스토리지 장치의 동작 상태를 상기 호스트로 전송하는 단계를 더 포함하는 스토리지 장치의 동작방법.
- 제6항에 있어서, 상기 스토리지 장치는
로딩되는 이미지에 따라 동작하는 프로그래머블 로직부를 포함하고,
상기 명령의 패턴을 분석하여, 상기 복수의 이미지 중 상기 분석된 패턴에 상응하는 최적 이미지를 상기 프로그래머블 로직부에 로딩시키는, 스토리지 장치의 동작방법. - 제6항에 있어서, 상기 스토리지 장치는
상기 복수의 이미지를 저장하는 적어도 하나의 비휘발성 메모리 장치; 및
상기 비휘발성 메모리 장치에 대한 동작을 제어하는 비휘발성 메모리 컨트롤러를 포함하고,
상기 선택하는 단계는
상기 명령의 패턴을 분석하여, 상기 비휘발성 메모리 컨트롤러를 통해 상기 비휘발성 메모리 장치로부터 상기 최적 이미지를 프로그래머블 로직부로 로딩하는 스토리지 장치의 동작방법. - 제9항에 있어서, 상기 관리하는 단계는
상기 최적 이미지에 기초하여 상기 비휘발성 메모리 장치에 대한 전원 차단 동작, 전원전압 조절 동작, 동작 주파수 조절 동작, 랜더마이징 동작, 에러 정정 동작, 컴프레션(compression) 동작 중 적어도 하나의 동작을 동적으로 제어하는, 스토리지 장치의 동작방법. - 제6항에 있어서, 상기 스토리지 장치는
상기 스토리지 장치의 동작을 제어하는 프로세서를 포함하고,
상기 관리하는 단계는 상기 최적 이미지에 기초하여 상기 프로세서의 전력 공급을 동적으로 조절하는, 스토리지 장치의 동작방법. - 제11항에 있어서,
상기 스토리지 장치의 동작 상태 및 상기 최적 이미지에 기초하여, 상기 스토리지 장치에 포함된 복수의 하드웨어 모듈마다 독립적으로 동적 전력 관리하는, 스토리지 장치의 동작방법. - 복수의 비휘발성 메모리 장치; 및
상기 비휘발성 메모리 장치의 동작을 제어하고, 호스트로부터 수신된 명령에 따라 동적으로 전력을 관리하는 스토리지 컨트롤러를 포함하고,
상기 스토리지 컨트롤러는
상기 명령을 수신하고 패턴을 분석하여 복수의 이미지 중 최적 이미지를 선택하는 선택부; 및
상기 최적 이미지를 로딩하여 동작하는 프로그래머블 로직부를 포함하는 스토리지 장치. - 제13항에 있어서, 상기 복수의 이미지는
상기 비휘발성 메모리 장치 또는 상기 스토리지 컨트롤러의 내부 메모리에 저장되는 이미지인, 스토리지 장치. - 제13항에 있어서, 상기 선택부는
상기 스토리지 컨트롤러의 동작 상태 및 상기 명령의 패턴에 기초하여 상기 최적 이미지를 실시간으로 변경하는, 스토리지 장치. - 제15항에 있어서, 상기 선택부는
상기 비휘발성 메모리 장치의 에러 발생이 증가하면, 에러 정정 동작에 대한 이미지를 상기 최적 이미지로 선택하는, 스토리지 장치. - 제15항에 있어서, 상기 선택부는
상기 비휘발성 메모리 장치의 잔여 메모리 용량이 부족하면, 컴프레션 동작에 대한 이미지를 상기 최적 이미지로 선택하는, 스토리지 장치. - 제15항에 있어서, 상기 선택부는
상기 비휘발성 메모리 장치의 IOPS(input/output operations per second) 레벨이 떨어지면 고성능 연산 동작에 대한 이미지를 상기 최적 이미지로 선택하는, 스토리지 장치. - 제15항에 있어서, 상기 선택부는
상기 비휘발성 메모리 장치를 소정시간동안 사용하지 않는 경우 상기 비휘발성 메모리 장치에 대한 동작 주파수 또는 전원전압을 조절하는 동작에 대한 이미지를 상기 최적 이미지로 선택하는, 스토리지 장치. - 제15항에 있어서, 상기 선택부는
상기 스토리지 컨트롤러의 동작 상태에 따라 상기 스토리지 컨트롤러에 포함된 프로세서의 동작 주파수를 동적으로 조절하는 동작에 대한 이미지를 상기 최적 이미지로 선택하는, 스토리지 장치.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190126908A KR102695127B1 (ko) | 2019-10-14 | 2019-10-14 | 재구성 가능한 스토리지 컨트롤러, 스토리지 시스템 및 그 동작 방법 |
US16/862,267 US11360666B2 (en) | 2019-10-14 | 2020-04-29 | Reconfigurable storage controller, storage device, and method of operating storage device |
DE102020116251.0A DE102020116251A1 (de) | 2019-10-14 | 2020-06-19 | Umkonfigurierbarer speichercontroller, speichervorrichtung und verfahren zum betreiben der speichervorrichtung |
CN202011088597.1A CN112732593A (zh) | 2019-10-14 | 2020-10-13 | 存储控制器、存储设备以及操作存储设备的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190126908A KR102695127B1 (ko) | 2019-10-14 | 2019-10-14 | 재구성 가능한 스토리지 컨트롤러, 스토리지 시스템 및 그 동작 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210043942A KR20210043942A (ko) | 2021-04-22 |
KR102695127B1 true KR102695127B1 (ko) | 2024-08-13 |
Family
ID=75155739
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190126908A KR102695127B1 (ko) | 2019-10-14 | 2019-10-14 | 재구성 가능한 스토리지 컨트롤러, 스토리지 시스템 및 그 동작 방법 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11360666B2 (ko) |
KR (1) | KR102695127B1 (ko) |
CN (1) | CN112732593A (ko) |
DE (1) | DE102020116251A1 (ko) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040236969A1 (en) | 2003-05-21 | 2004-11-25 | Lippert Kurt J. | Method and system for dynamically adjusting power consumption of an information handling system |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6078736A (en) | 1997-08-28 | 2000-06-20 | Xilinx, Inc. | Method of designing FPGAs for dynamically reconfigurable computing |
US6326806B1 (en) | 2000-03-29 | 2001-12-04 | Xilinx, Inc. | FPGA-based communications access point and system for reconfiguration |
US7272730B1 (en) * | 2003-07-31 | 2007-09-18 | Hewlett-Packard Development Company, L.P. | Application-driven method and apparatus for limiting power consumption in a processor-controlled hardware platform |
US7599299B2 (en) | 2004-04-30 | 2009-10-06 | Xilinx, Inc. | Dynamic reconfiguration of a system monitor (DRPORT) |
US7224184B1 (en) | 2004-11-05 | 2007-05-29 | Xilinx, Inc. | High bandwidth reconfigurable on-chip network for reconfigurable systems |
US8862854B2 (en) | 2006-08-18 | 2014-10-14 | Ramachandran Vaidyanathan | Configurable decoder with applications in FPGAs |
US9027027B2 (en) * | 2008-06-09 | 2015-05-05 | Microsoft Technology Licensing, Llc | Thread management based on device power state |
TWI403884B (zh) * | 2010-11-30 | 2013-08-01 | Inventec Corp | 機架伺服系統 |
WO2013016313A1 (en) | 2011-07-25 | 2013-01-31 | Servergy, Inc. | Method and system for building a low power computer system |
US20140089699A1 (en) * | 2012-09-27 | 2014-03-27 | Advanced Micro Devices | Power management system and method for a processor |
US9111059B2 (en) | 2012-11-01 | 2015-08-18 | Stc.Unm | System and methods for dynamic management of hardware resources |
US9411528B1 (en) | 2015-04-22 | 2016-08-09 | Ryft Systems, Inc. | Storage management systems and methods |
KR20190093400A (ko) * | 2018-02-01 | 2019-08-09 | 삼성전자주식회사 | 반도체 메모리 장치 및 반도체 메모리 장치를 포함하는 전자 장치 |
US11176017B2 (en) * | 2018-12-19 | 2021-11-16 | International Business Machines Corporation | Measurement of simulated mirroring in a data storage system |
-
2019
- 2019-10-14 KR KR1020190126908A patent/KR102695127B1/ko active IP Right Grant
-
2020
- 2020-04-29 US US16/862,267 patent/US11360666B2/en active Active
- 2020-06-19 DE DE102020116251.0A patent/DE102020116251A1/de active Pending
- 2020-10-13 CN CN202011088597.1A patent/CN112732593A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040236969A1 (en) | 2003-05-21 | 2004-11-25 | Lippert Kurt J. | Method and system for dynamically adjusting power consumption of an information handling system |
Also Published As
Publication number | Publication date |
---|---|
US20210109655A1 (en) | 2021-04-15 |
CN112732593A (zh) | 2021-04-30 |
US11360666B2 (en) | 2022-06-14 |
KR20210043942A (ko) | 2021-04-22 |
DE102020116251A1 (de) | 2021-04-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10802733B2 (en) | Methods and apparatus for configuring storage tiers within SSDs | |
US10042416B2 (en) | Memory system and method for adaptive auto-sleep and background operations | |
US9646705B2 (en) | Memory systems including nonvolatile memory devices and dynamic access methods thereof | |
US8843697B2 (en) | Operating method of data storage device | |
KR102596400B1 (ko) | 데이터 저장 장치 및 데이터 저장 장치의 동작 방법 | |
US10776268B2 (en) | Priority addresses for storage cache management | |
KR20170015708A (ko) | 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 프로그램 방법 | |
US11010057B2 (en) | Storage system and method for storage system calibration | |
CN111158579B (zh) | 固态硬盘及其数据存取的方法 | |
CN111309654B (zh) | 存储装置及操作存储装置的方法 | |
US20220164123A1 (en) | Storage controller and storage device including the same | |
KR20160097657A (ko) | 데이터 저장 장치 그리고 그것의 동작 방법 | |
KR20210146643A (ko) | 저장 장치 및 그 동작 방법 | |
KR20200132171A (ko) | 메모리 시스템, 메모리 컨트롤러 및 메모리 장치 | |
KR20220023598A (ko) | 메모리 컨트롤러 및 그 동작 방법 | |
US11829650B2 (en) | Memory sub-system data migration | |
US9652172B2 (en) | Data storage device performing merging process on groups of memory blocks and operation method thereof | |
KR20120017911A (ko) | 반도체 저장 장치의 성능 조절을 위한 반도체 저장장치와 호스트간 인터페이스 방법 및 그 장치 | |
KR102649169B1 (ko) | 저장 장치 및 그 동작 방법 | |
KR102695127B1 (ko) | 재구성 가능한 스토리지 컨트롤러, 스토리지 시스템 및 그 동작 방법 | |
KR20230086435A (ko) | 메모리 컨트롤러 및 그 동작 방법 | |
US10997081B2 (en) | Host and method for storage system calibration | |
KR20220052161A (ko) | 메모리 장치 및 그 동작 방법 | |
KR20210072990A (ko) | 가변 크기 맵핑 기반의 스토리지 장치의 데이터 관리 방법 및 이를 이용한 구동 방법 | |
US20240241642A1 (en) | Storage device including non-volatile memory device and operating method of storage device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |