KR20220073306A - 스토리지 장치 및 그 동작 방법 - Google Patents

스토리지 장치 및 그 동작 방법 Download PDF

Info

Publication number
KR20220073306A
KR20220073306A KR1020200161252A KR20200161252A KR20220073306A KR 20220073306 A KR20220073306 A KR 20220073306A KR 1020200161252 A KR1020200161252 A KR 1020200161252A KR 20200161252 A KR20200161252 A KR 20200161252A KR 20220073306 A KR20220073306 A KR 20220073306A
Authority
KR
South Korea
Prior art keywords
result
memory device
memory
result values
page
Prior art date
Application number
KR1020200161252A
Other languages
English (en)
Inventor
이승용
임의철
김명서
Original Assignee
에스케이하이닉스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이하이닉스 주식회사 filed Critical 에스케이하이닉스 주식회사
Priority to KR1020200161252A priority Critical patent/KR20220073306A/ko
Priority to US17/339,491 priority patent/US11734168B2/en
Priority to CN202110746342.8A priority patent/CN114546901A/zh
Publication of KR20220073306A publication Critical patent/KR20220073306A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1621Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by maintaining request order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/17Function evaluation by approximation methods, e.g. inter- or extrapolation, smoothing, least mean square method
    • 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
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computing Systems (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Neurology (AREA)
  • Memory System (AREA)

Abstract

본 기술은 전자 장치에 관한 것으로, 본 기술에 따른, 리드 동작 시 레이턴시(latency)를 줄일 수 있는 스토리지 장치는, 복수의 메모리 셀들을 각각 포함하는 복수의 페이지들을 포함하는 메모리 장치 및 복수의 입력 값들에 대한 함수의 결과 값들을 상기 복수의 메모리 셀들에 순차적으로 저장하고, 상기 복수의 페이지들 중 제1 페이지의 마지막 영역에 저장된 결과 값을 상기 복수의 페이지들 중 상기 제1 페이지와 상이한 제2 페이지의 시작 영역에 저장하도록 상기 메모리 장치를 제어하는 메모리 컨트롤러를 포함한다.

Description

스토리지 장치 및 그 동작 방법{STORAGE DEVICE AND OPERATING METHOD THEREOF}
본 발명은 전자 장치에 관한 것으로, 보다 구체적으로 본 발명은 스토리지 장치 및 그 동작 방법에 관한 것이다.
스토리지 장치는 컴퓨터나 스마트폰 등과 같은 호스트 장치의 제어에 따라 데이터를 저장하는 장치이다. 스토리지 장치는 데이터를 저장하는 메모리 장치와 메모리 장치를 제어하는 메모리 컨트롤러를 포함할 수 있다. 메모리 장치는 휘발성 메모리 장치 (Volatile Memory)와 비휘발성 메모리 장치 (Non Volatile Memory)로 구분될 수 있다.
휘발성 메모리 장치는 전원이 공급되는 동안에만 데이터를 저장하고, 전원 공급이 차단되면 저장된 데이터가 소멸되는 메모리 장치일 수 있다. 휘발성 메모리 장치에는 정적 랜덤 액세스 메모리 (Static Random Access Memory; SRAM), 동적 랜덤 액세스 메모리 (Dynamic Random Access Memory; DRAM) 등이 포함될 수 있다.
비휘발성 메모리 장치는 전원이 차단되어도 데이터가 소멸되지 않는 메모리 장치로서, 롬(Read Only Memory; ROM), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM) 및 플래시 메모리(Flash Memory) 등이 있다.
본 발명의 실시 예는 리드 동작 시 레이턴시(latency)를 줄일 수 있는 스토리지 장치 및 그 동작 방법을 제공한다.
본 발명의 실시 예에 따른 스토리지 장치는, 복수의 메모리 셀들을 각각 포함하는 복수의 페이지들을 포함하는 메모리 장치 및 복수의 입력 값들에 대한 함수의 결과 값들을 상기 복수의 메모리 셀들에 순차적으로 저장하고, 상기 복수의 페이지들 중 제1 페이지의 마지막 영역에 저장된 결과 값을 상기 복수의 페이지들 중 상기 제1 페이지와 상이한 제2 페이지의 시작 영역에 저장하도록 상기 메모리 장치를 제어하는 메모리 컨트롤러를 포함한다.
본 발명의 실시 예에 따른, 복수의 메모리 셀들을 각각 포함하는 복수의 페이지들을 포함하는 메모리 장치를 제어하는 메모리 컨트롤러는, 복수의 입력 값들에 대한 함수의 결과 값들을 상기 복수의 메모리 셀들에 순차적으로 저장하면서, 상기 복수의 페이지들 각각에 저장된 결과 값들 중 마지막 영역에 저장된 결과 값을 상기 복수의 페이지들 각각의 다음 페이지에 저장하도록 상기 메모리 장치를 제어하는 메모리 장치 제어부 및 상기 결과 값들을 이용하여 타겟 입력 값에 대한 상기 함수의 결과 값을 산출하는 연산 제어부를 포함한다.
본 발명의 실시 예에 따른 스토리지 장치는, 복수의 메모리 셀들을 각각 포함하는 복수의 페이지들을 포함하는 메모리 장치 및 복수의 입력 값들에 대한 함수의 결과 값들을 상기 복수의 메모리 셀들에 순차적으로 저장하고, 상기 복수의 페이지들 각각에 저장된 결과 값들 중 연속되어 저장된 일부의 결과 값들을 상기 복수의 페이지들 각각의 다음 페이지에 저장하도록 상기 메모리 장치를 제어하는 메모리 컨트롤러를 포함한다.
본 기술에 따르면, 리드 동작 시 레이턴시를 줄일 수 있는 스토리지 장치 및 그 동작 방법이 제공된다.
도 1은 본 발명의 일 실시 예에 따른 스토리지 장치를 설명하기 위한 도면이다.
도 2는 본 발명의 일 실시 예에 따른 신경망(Neural Network) 연산을 설명하기 위한 도면이다.
도 3은 본 발명의 일 실시 예에 따른 보간법(interpolation)을 이용하여 활성화 함수의 결과 값을 산출하는 예를 설명하기 위한 도면이다.
도 4는 본 발명의 일 실시 예에 따른 룩업 테이블의 일 예를 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시 예에 따른 룩업 테이블의 다른 예를 설명하기 위한 도면이다.
도 6은 본 발명의 일 실시 예에 따른 활성화 함수의 결과 값을 산출하는 동작의 일 예를 설명하기 위한 도면이다.
도 7은 본 발명의 일 실시 예에 따른 활성화 함수의 결과 값을 산출하는 동작의 다른 예를 설명하기 위한 도면이다.
도 8은 본 발명의 일 실시 예에 따른 스토리지 장치의 동작 방법을 설명하기 위한 도면이다.
도 9는 도 1의 메모리 컨트롤러를 설명하기 위한 도면이다.
본 명세서 또는 출원에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 개념에 따른 실시 예들은 다양한 형태로 실시될 수 있으며 본 명세서 또는 출원에 설명된 실시 예들에 한정되는 것으로 해석되어서는 아니 된다.
도 1은 본 발명의 일 실시예에 따른 스토리지 장치를 설명하기 위한 도면이다.
도 1을 참조하면, 스토리지 장치(50)는 메모리 장치(100) 및 메모리 장치(100)의 동작을 제어하는 메모리 컨트롤러(200)를 포함할 수 있다. 스토리지 장치(50)는 휴대폰, 스마트폰, MP3 플레이어, 랩탑 컴퓨터, 데스크탑 컴퓨터, 게임기, TV, 테블릿 PC 또는 차량용 인포테인먼트(in-vehicle infotainment) 시스템 등과 같은 호스트(300)의 제어에 따라 데이터를 저장하는 장치일 수 있다.
스토리지 장치(50)는 호스트(300)와의 통신 방식인 호스트 인터페이스에 따라서 다양한 종류의 스토리지 장치들 중 어느 하나로 제조될 수 있다. 예를 들면, 스토리지 장치(50)는 SSD, MMC, eMMC, RS-MMC, micro-MMC 형태의 멀티 미디어 카드(multimedia card), SD, mini-SD, micro-SD 형태의 시큐어 디지털(secure digital) 카드, USB(universal storage bus) 저장 장치, UFS(universal flash storage) 장치, PCMCIA(personal computer memory card international association) 카드 형태의 저장 장치, PCI(peripheral component interconnection) 카드 형태의 저장 장치, PCI-E(PCI express) 카드 형태의 저장 장치, CF(compact flash) 카드, 스마트 미디어(smart media) 카드, 메모리 스틱(memory stick) 등과 같은 다양한 종류의 저장 장치들 중 어느 하나로 구성될 수 있다.
스토리지 장치(50)는 다양한 종류의 패키지(package) 형태들 중 어느 하나로 제조될 수 있다. 예를 들면, 스토리지 장치(50)는 POP(package on package), SIP(system in package), SOC(system on chip), MCP(multi-chip package), COB(chip on board), WFP(wafer-level fabricated package), WSP(wafer-level stack package) 등과 같은 다양한 종류의 패키지 형태들 중 어느 하나로 제조될 수 있다.
스토리지 장치(50)는 메모리 장치(100) 및 메모리 장치(100)의 동작을 제어하는 메모리 컨트롤러(200)를 포함할 수 있다. 스토리지 장치(50)는 휴대폰, 스마트폰, MP3 플레이어, 랩탑 컴퓨터, 데스크탑 컴퓨터, 게임기, TV, 테블릿 PC 또는 차량용 인포테인먼트(in-vehicle infotainment) 시스템 등과 같은 호스트(300)의 제어에 따라 데이터를 저장하는 장치일 수 있다.
메모리 장치(100)는 데이터를 저장할 수 있다. 메모리 장치(100)는 메모리 컨트롤러(200)의 제어에 응답하여 동작한다. 메모리 장치(100)는 데이터를 저장하는 복수의 메모리 셀들을 포함하는 메모리 셀 어레이(미도시)를 포함할 수 있다.
메모리 장치(100)는 데이터를 저장하는 복수의 뱅크들을 포함할 수 있다. 복수의 뱅크들은 각각 복수의 메모리 셀들을 포함하는 메모리 셀 어레이(미도시)를 포함할 수 있다.
메모리 셀들은 각각 하나의 데이터 비트를 저장하는 싱글 레벨 셀(Single Level Cell; SLC), 두 개의 데이터 비트들을 저장하는 멀티 레벨 셀(Multi Level Cell; MLC), 세 개의 데이터 비트들을 저장하는 트리플 레벨 셀(Triple Level Cell; TLC) 또는 네 개의 데이터 비트를 저장할 수 있는 쿼드 레벨 셀(Quad Level Cell; QLC)로 구성될 수 있다.
메모리 셀 어레이(미도시)는 복수의 메모리 블록들을 포함할 수 있다. 각 메모리 블록은 복수의 메모리 셀들을 포함할 수 있다. 하나의 메모리 블록은 복수의 페이지들을 포함할 수 있다. 실시 예에서, 페이지는 메모리 장치(100)에 데이터를 저장하거나, 메모리 장치(100)에 저장된 데이터를 리드하는 단위일 수 있다. 메모리 블록은 데이터를 지우는 단위일 수 있다.
일 실시 예에서, 메모리 장치(100)는 휘발성 메모리 장치일 수 있다. 예를 들어, 메모리 장치(100)은 DRAM(Dynamic Random Access Memory), SDRAM, DDR SDRAM, DDR2 SDRAM, DDR3 SDRAM, LPDDR SDARM, LPDDR2 SDRAM, LPDDR3 SDRAM 등과 같은 휘발성 랜덤 액세스 메모리일 수 있다.
또한, 일 실시 예에서, 메모리 장치(100)는 비휘발성 메모리 장치일 수 있다. 예를 들어, 메모리 장치(100)는 DDR SDRAM(Double Data Rate Synchronous Dynamic Random Access Memory), LPDDR4(Low Power Double Data Rate4) SDRAM, GDDR(Graphics Double Data Rate) SDRAM, LPDDR(Low Power DDR), RDRAM(Rambus Dynamic Random Access Memory), 낸드 플래시 메모리(NAND flash memory), 수직형 낸드 플래시 메모리(Vertical NAND flash memory), 노아 플래시 메모리(NOR flash memory), 저항성 램(resistive random access memory: RRAM), 상변화 메모리(phase-change random access memory: PRAM), 자기저항 메모리(magnetoresistive random access memory: MRAM), 강유전체 메모리(ferroelectric random access memory: FRAM), 스핀주입 자화반전 메모리(spin transfer torque random access memory: STT-RAM) 등이 될 수 있다.
본 명세서에서는 설명의 편의를 위해, 메모리 장치(100)가 DRAM인 경우를 가정하여 설명한다.
메모리 장치(100)는 메모리 컨트롤러(200)로부터 커맨드(CMD) 및 어드레스(ADDR)를 수신하고, 메모리 셀 어레이 중 어드레스에 의해 선택된 영역을 액세스하도록 구성된다. 메모리 장치(100)는 어드레스(ADDR)에 의해 선택된 영역에 대해 커맨드(CMD)가 지시하는 동작을 수행할 수 있다. 예를 들면, 메모리 장치(100)는 쓰기 동작 (프로그램 동작), 리드 동작 및 소거 동작을 수행할 수 있다. 프로그램 동작 시에, 메모리 장치(100)는 어드레스(ADDR)에 의해 선택된 영역에 데이터를 프로그램 할 것이다. 리드 동작 시에, 메모리 장치(100)는 어드레스(ADDR)에 의해 선택된 영역으로부터 데이터를 읽을 것이다. 소거 동작 시에, 메모리 장치(100)는 어드레스(ADDR)에 의해 선택된 영역에 저장된 데이터를 소거할 것이다.
메모리 컨트롤러(200)는 스토리지 장치(50)의 전반적인 동작을 제어할 수 있다.
스토리지 장치(50)에 전원이 인가되면, 메모리 컨트롤러(200)는 펌웨어(firmware, FW)를 실행할 수 있다.
실시 예에서, 메모리 컨트롤러(200)는 호스트(300)로부터 데이터와 논리 블록 어드레스(Logical Block Address, LBA)를 입력 받고, 논리 블록 어드레스를 메모리 장치(100)에 포함된 데이터가 저장될 메모리 셀들의 주소를 나타내는 물리 블록 어드레스(Physical Block Address, PBA)로 변환할 수 있다. 본 명세서에서 논리 블록 어드레스(LBA)와 “논리 어드레스” 또는 “논리적 어드레스”는 같은 의미로 사용될 수 있다. 본 명세서에서 물리 블록 어드레스(PBA)와 “물리 어드레스” 또는 “물리적 어드레스”는 같은 의미로 사용될 수 있다.
메모리 컨트롤러(200)는 호스트(300)의 요청(request)에 따라 프로그램 동작, 리드 동작 또는 소거 동작 등을 수행하도록 메모리 장치(100)를 제어할 수 있다. 프로그램 동작 시, 메모리 컨트롤러(200)는 쓰기 커맨드, 물리 블록 어드레스 및 데이터를 메모리 장치(100)에 제공할 수 있다. 리드 동작 시, 메모리 컨트롤러(200)는 리드 커맨드 및 물리 블록 어드레스를 메모리 장치(100)에 제공할 수 있다. 소거 동작 시, 메모리 컨트롤러(200)는 소거 커맨드 및 물리 블록 어드레스를 메모리 장치(100)에 제공할 수 있다.
실시 예에서, 메모리 컨트롤러(200)가 적어도 둘 이상의 메모리 장치(100)들을 제어할 수 있다. 이 경우, 메모리 컨트롤러(200)는 동작 성능의 향상을 위해 메모리 장치(100)들을 인터리빙 방식에 따라 제어할 수 있다. 인터리빙 방식은 적어도 둘 이상의 메모리 장치(100)들에 대한 동작이 중첩되도록 제어하는 방식일 수 있다.
일 실시 예에서, 메모리 컨트롤러(200)는 메모리 장치 제어부(210) 및 연산 제어부(220)를 포함할 수 있다.
메모리 장치 제어부(210)는 호스트(300)의 요청에 따라 메모리 장치(100)를 제어할 수 있다.
일 실시 예에서, 메모리 장치 제어부(210)는 함수 결과 룩업 테이블을 복수의 페이지들에 저장하도록 메모리 장치(100)를 제어할 수 있다. 또한, 메모리 장치 제어부(210)는 복수의 페이지들로부터 함수 결과 룩업 테이블에 포함된 결과 값들을 리드하도록 메모리 장치(100)를 제어할 수 있다. 이때, 함수 결과 룩업 테이블은 복수의 입력 값들에 대한 함수의 결과 값들을 나타내는 정보일 수 있다. 일 실시 예에서, 입력 값들은 연속되는 값들일 수 있다. 함수는 신경망(neural network)의 활성화 함수(activation function)를 예시할 수 있으나, 반드시 이에 한정되는 것은 아니고, 실시 예에 따라 다양한 함수를 포함할 수 있다.
일 실시 예에서, 메모리 장치 제어부(210)는 복수의 입력 값들에 대한 함수의 결과 값들을 복수의 메모리 셀들에 순차적으로 저장하도록 메모리 장치(100)를 제어할 수 있다. 또한, 메모리 장치 제어부(210)는 복수의 메모리 셀들로부터 함수의 결과 값들을 리드하도록 메모리 장치(100)를 제어할 수 있다.
일 실시 예에서, 메모리 장치 제어부(210)는 복수의 페이지들 각각에 저장된 결과 값들 중 연속되어 저장된 일부의 결과 값들을 복수의 페이지들 각각의 다음 페이지에 저장하도록 메모리 장치(100)를 제어할 수 있다.
예를 들어, 메모리 장치 제어부(210)는 복수의 페이지들 각각에 저장된 결과 값들 중 복수의 페이지들 각각의 마지막 영역에 저장된 결과 값을 복수의 페이지들 각각의 다음 페이지에 저장하도록 메모리 장치(100)를 제어할 수 있다. 또한, 메모리 장치 제어부(210)는 복수의 페이지들 각각의 마지막 영역에 저장된 결과 값을 복수의 페이지들 각각의 다음 페이지의 시작 영역에 저장하도록 메모리 장치(100)를 제어할 수 있다. 일 실시 예에서, 복수의 페이지들 각각의 마지막 영역 및 시작 영역은 각각 적어도 하나 이상의 메모리 셀들을 포함할 수 있다. 예를 들어, 페이지의 마지막 영역은 페이지 내 메모리 셀들에 데이터가 순차적으로 저장될 때 데이터가 마지막으로 저장되는 위치에 대응되는 하나 이상의 메모리 셀들을 포함하는 영역일 수 있다. 또한, 페이지의 시작 영역은 페이지 내 메모리 셀들에 데이터가 순차적으로 저장될 때 데이터가 최초로 저장되는 위치에 대응되는 하나 이상의 메모리 셀들을 포함하는 영역일 수 있다.
일 실시 예에서, 메모리 장치 제어부(210)는 복수의 페이지들에 저장된 결과 값들 중 타겟 입력 값에 대응되는 적어도 둘의 결과 값들이 저장된 위치를 나타내는 어드레스를 결정할 수 있다. 이때, 타겟 입력 값은 함수의 결과 값을 획득하기 위한 대상 값일 수 있다. 예를 들어, 타겟 입력 값은 호스트(300)로부터 제공된 입력 데이터, 입력 데이터에 대응되는 가중치 및 바이어스(bias)를 이용하여 산출될 수 있다. 일 실시 예에서, 가중치 및 바이어스는 학습 데이터 셋을 이용하여 스토리지 장치(50)를 포함하는 학습 모델을 사전 학습하여 획득된 것으로, 스토리지 장치(50) 내 메모리 장치(100)에 저장된 정보일 수 있다.
또한, 메모리 장치 제어부(210)는 복수의 페이지들 중 결정된 어드레스에 대응되는 페이지로부터 타겟 입력 값에 대응되는 적어도 둘의 결과 값들을 리드하도록 메모리 장치(100)를 제어할 수 있다. 이때, 결정된 어드레스에 대응되는 페이지는 타겟 입력 값에 대응되는 적어도 둘의 결과 값들이 저장된 페이지일 수 있다. 또한, 적어도 둘의 결과 값들은 해당 페이지에 순차적으로 저장된 것일 수 있다. 메모리 장치 제어부(210)는 리드된 적어도 둘의 결과 값들을 연산 제어부(220)로 제공할 수 있다.
연산 제어부(220)는 신경망을 구성하는 하나 이상의 레이어(layer)들에서 신경망 연산을 수행할 수 있다. 예를 들어, 연산 제어부(220)는 입력 데이터, 입력 데이터에 대응되는 가중치 및 바이어스를 이용한 가중치 합을 수행할 수 있다. 또한, 연산 제어부(220)는 활성화 함수에 대한 연산을 수행하여 특정 입력 값에 대한 결과 값을 산출할 수 있다. 이때, 활성화 함수의 결과 값에 따라, 각 레이어에 포함된 노드(node)들은 활성화되거나 활성화되지 않을 수 있다.
일 실시 예에서, 연산 제어부(220)는 함수 결과 룩업 테이블을 이용하여 타겟 입력 값에 대한 함수의 결과 값을 산출할 수 있다. 구체적으로, 연산 제어부(220)는 메모리 장치(100)에 저장된 결과 값들을 이용하여 타겟 입력 값에 대한 함수의 결과 값을 산출할 수 있다. 예를 들어, 연산 제어부(220)는 메모리 장치(100)로부터 리드된 적어도 둘의 결과 값들을 이용하여 타겟 입력 값에 대한 함수의 결과 값을 산출할 수 있다.
호스트(300)는 USB (Universal Serial Bus), SATA (Serial AT Attachment), SAS (Serial Attached SCSI), HSIC (High Speed Interchip), SCSI (Small Computer System Interface), PCI (Peripheral Component Interconnection), PCIe (PCI express), NVMe (NonVolatile Memory express), UFS (Universal Flash Storage), SD (Secure Digital), MMC (MultiMedia Card), eMMC (embedded MMC), DIMM (Dual In-line Memory Module), RDIMM (Registered DIMM), LRDIMM (Load Reduced DIMM) 등과 같은 다양한 통신 방식들 중 적어도 하나를 이용하여 스토리지 장치(50)와 통신할 수 있다.
도 2는 본 발명의 일 실시 예에 따른 신경망(Neural Network) 연산을 설명하기 위한 도면이다.
도 2는 예를 들어, 순환 신경망(Recurrent Neural Network; RNN)의 레이어에서 수행되는 신경망 연산을 설명하기 위한 도면일 수 있다.
도 2를 참조하면, 스토리지 장치(50)는 신경망 연산을 수행할 수 있다. 일 실시 예에서, 스토리지 장치는 예를 들어, 지능형 반도체(Processor-In-Memory; PIM) 저장 장치로 구성될 수 있다.
일 실시 예에서, 연산 제어부(220)는 호스트(300)로부터 제공된 입력 데이터(xt)와 이전 레이어에서 산출된 상태 데이터(ht-1)를 각각의 가중치(Wxh, Whh)와 연산할 수 있다. 예를 들어, 연산 제어부(220)는 곱셈 누적(multiply-accumulation; mac) 연산을 이용하여, 입력 데이터(xt)와 가중치(Wxh)의 연산을 수행하고, 상태 데이터(ht-1)와 가중치(Wxh)의 연산을 수행할 수 있다. 또한, 연산 제어부(220)는 입력 데이터(xt), 상태 데이터(ht-1) 및 가중치(Wxh, Whh)를 이용한 연산 결과와 바이어스(bh)의 요소별 합(Element-wise Add) 연산을 수행할 수 있다.
일 실시 예에서, 연산 제어부(220)는 요소별 합 연산의 결과 값을 입력 값으로 하여 활성화 함수의 결과 값을 산출할 수 있다. 예를 들어, 연산 제어부(220)는 함수 결과 룩업 테이블을 이용하여 입력 값에 대한 활성화 함수의 결과 값을 산출할 수 있다. 구체적으로, 연산 제어부(220)는 메모리 장치(100)에 저장된 결과 값들을 이용하여 입력 값에 대한 활성화 함수의 결과 값을 산출할 수 있다. 이때, 함수 결과 룩업 테이블은 복수의 입력 값들에 대한 활성화 함수의 결과 값들을 포함할 수 있다. 일 실시 예에서, 입력 값들은 연속되는 값들일 수 있다. 함수 결과 룩업 테이블은 호스트(300), 스토리지 장치(50) 또는 다른 연산 장치에 의해 생성될 수 있다. 함수 결과 룩업 테이블은 메모리 장치(100)에 저장될 수 있다. 일 실시 예에서, 연산 제어부(220)에 의해 산출된 활성화 함수의 결과 값은 현재 레이어의 상태 데이터(ht)일 수 있다. 이때, 상태 데이터(ht)는 다음 레이어로 전달되어 다음 레이어의 신경망 연산에 이용될 수 있다.
일 실시 예에서, 연산 제어부(220)는 상태 데이터(ht)와 가중치(Why)의 곱셈 누적 연산을 수행할 수 있다. 또한, 연산 제어부(220)는 곱셈 누적 연산의 결과 값과 바이어스(by)의 요소별 합 연산을 수행하여 출력 데이터(yt)를 산출할 수 있다. 이때, 출력 데이터(yt)는 현재 레이어의 출력 값일 수 있다. 출력 데이터(yt)는 호스트(300)로 제공될 수 있다.
도 3은 본 발명의 일 실시 예에 따른 보간법(interpolation)을 이용하여 활성화 함수의 결과 값을 산출하는 예를 설명하기 위한 도면이다.
도 3에 도시된 그래프의 가로 축은 변수를 의미하고, 세로 축은 변수에 대한 활성화 함수의 결과 값을 의미한다.
도 3을 참조하여 설명되는 보간법은 예를 들어, 선형 보간법(linear interpolation)일 수 있다. 다만, 본 발명의 실시 예에서 이용되는 보간법은 선형 보간법에 한정되는 것은 아니고, 선형 보간법 이외에 다양한 보간법을 포함할 수 있다.
활성화 함수는 종류에 따라 지수 변수 연산, 삼각 함수 연산 등과 같이 연산 부하가 큰 연산들을 포함할 수 있다. 이 경우, 가속기, 그래픽 처리 장치(Graphic Processing Unit; GPU) 등과 같은 장치는 산술 연산 장치(Arithmetic Logic Unit; ALU)를 이용하여 활성화 함수에 대한 연산을 수행한다. 하지만, 지능형 반도체 저장 장치는 공간적, 전력 제약으로 인하여 산술 연산 장치를 사용하기 어렵기 때문에 룩업 테이블을 이용하여 활성화 함수에 대한 연산을 수행할 수 있다.
일 실시 예에서, 연산 제어부(220)는 보간법을 이용하여 메모리 장치(100)로부터 리드된 적어도 둘의 결과 값들로부터 타겟 입력 값에 대한 함수의 결과 값을 산출할 수 있다.
예를 들어, 타겟 입력 값(x)에 대한 활성화 함수의 결과 값(f(x))은 보간법을 이용한 활성화 함수의 결과 값(f'(x))으로 추정할 수 있다. 따라서, 연산 제어부(220)는 함수 결과 룩업 테이블에 포함된 결과 값들 중 타겟 입력 값(x)에 대응되는 2개의 결과 값들(f(A), f(A+1))을 이용하여 타겟 입력 값(x)에 대한 함수의 결과 값(f'(x))을 산출할 수 있다.
예를 들어, 타겟 입력 값(x)에 대한 함수의 결과 값(f'(x))은 아래의 수학식 1을 이용하여 산출될 수 있다.
[수학식 1]
Figure pat00001
상기 수학식 1에서, A 및 A+1은 2개의 결과 값들(f(A), f(A+1)) 각각에 대응되는 입력 값들을 의미한다. 일 실시 예에서, 입력 값들(A, A+1)은 함수 결과 룩업 테이블을 생성하는데 이용된 복수의 입력 값들 중 타겟 입력 값(x)과 인접한 입력 값들일 수 있다.
상술한 바와 같이, 함수 결과 룩업 테이블을 이용하여 함수의 결과 값을 산출하기 위해서는 적어도 둘의 결과 값들이 필요하다. 이때, 적어도 둘의 결과 값들이 각각 별도의 페이지에 저장된 경우, 스토리지 장치(50)는 적어도 두번의 리드 동작을 수행해야하는 문제점이 있다.
따라서, 본 발명의 실시 예에 따르면, 복수의 페이지들 중 제1 페이지의 마지막 영역에 저장된 결과 값을 복수의 페이지들 중 제1 페이지와 상이한 제2 페이지의 시작 영역에 중복하여 저장함으로써, 한 번의 리드 동작을 통해 활성화 함수의 결과 값을 산출할 수 있다. 이에 따라, 스토리지 장치(50)는 리드 동작에 따른 레이턴시(latency)를 줄일 수 있다.
도 4는 본 발명의 일 실시 예에 따른 룩업 테이블의 일 예를 설명하기 위한 도면이다.
도 4는 메모리 장치에 포함된 복수의 뱅크들 중 어느 하나의 뱅크(Bank)를 나타낸 것일 수 있다.
도 4를 참조하면, 메모리 장치(100)는 함수 결과 룩업 테이블(LUT)을 저장할 수 있다. 예를 들어, 함수 결과 룩업 테이블(LUT)은 뱅크(Bank)에 포함된 복수의 페이지들 중 일부에 저장될 수 있다. 구체적으로, 함수 결과 룩업 테이블(LUT)에 포함된 결과 값들은 복수의 페이지들에 포함된 복수의 메모리 셀들에 저장될 수 있다. 일 실시 예에서, 함수 결과 룩업 테이블(LUT)은 활성화 함수에 대한 룩업 테이블일 수 있다.
일 실시 예에서, 복수의 페이지들 각각은 함수 결과 룩업 테이블(LUT)에 포함된 결과 값들 중 복수의 페이지들 각각에 저장될 수 있는 데이터의 크기 및 정밀도(precision)에 따라 결정되는 개수만큼의 결과 값들을 저장할 수 있다. 예를 들어, 각 페이지에 저장될 수 있는 데이터의 크기가 1KB이고, 정밀도가 부동 소수점 32(Floating Point 32)인 경우, 하나의 페이지에 256개의 결과 값들이 저장될 수 있다.
또한, 함수 결과 룩업 테이블이 저장되는 페이지의 개수는 함수 결과 룩업 테이블의 크기에 따라 상이할 수 있다. 예를 들어, 함수 결과 룩업 테이블(LUT)에 포함된 결과 값들의 개수가 1001개인 경우, 함수 결과 룩업 테이블(LUT)은 4개의 페이지들(Page 1~Page4)에 저장될 수 있다.
일 실시 예에서, 메모리 장치 제어부(210)는 복수의 입력 값들에 대한 함수의 결과 값들을 복수의 페이지들에 포함된 복수의 메모리 셀들에 순차적으로 저장하도록 메모리 장치(100)를 제어할 수 있다. 예를 들어, 함수 결과 룩업 테이블(LUT)이 연속되는 입력 값인 0부터 1000에 대한 함수의 결과 값들(f(0)~f(1000))을 포함하는 경우, 메모리 장치 제어부(210)는 복수의 페이지들(Page 1~Page4)에 포함된 복수의 메모리 셀들에 입력 값 0에 대응되는 결과 값(f(0))에서부터 입력 값 1000에 대응되는 결과 값(f(1000)) 순으로 저장하도록 메모리 장치(100)를 제어할 수 있다. 즉, 결과 값에 대응되는 입력 값이 낮을수록 결과 값이 저장되는 순서는 빠를 수 있다.
일 실시 예에서, 메모리 장치 제어부(210)는 복수의 페이지들 중 제1 페이지의 마지막 영역에 저장된 결과 값을 복수의 페이지들 중 제1 페이지와 상이한 제2 페이지의 시작 영역에 저장하도록 메모리 장치(100)를 제어할 수 있다. 일 실시 예에서, 제2 페이지는 제1 페이지의 다음 페이지일 수 있다. 제1 페이지의 마지막 영역 및 제2 페이지의 시작 영역 각각은 적어도 하나 이상의 메모리 셀들을 포함할 수 있다. 구체적으로, 제1 페이지의 마지막 영역은 제1 페이지에 포함된 메모리 셀들 중 하나 이상의 메모리 셀들을 포함할 수 있다. 제2 페이지의 시작 영역은 제2 페이지에 포함된 메모리 셀들 중 하나 이상의 메모리 셀들을 포함할 수 있다.
일 실시 예에서, 메모리 장치 제어부(210)는 제1 페이지(Page 1)의 마지막 영역에 저장된 결과 값(f(255))을 제2 페이지(Page 2)의 시작 영역에 중복하여 저장하도록 메모리 장치(100)를 제어할 수 있다. 또한, 메모리 장치 제어부(210)는 제2 페이지(Page 2)의 마지막 영역에 저장된 결과 값(f(510))을 제3 페이지(Page 3)의 시작 영역에 중복하여 저장하도록 메모리 장치(100)를 제어할 수 있다. 또한, 메모리 장치 제어부(210)는 제3 페이지(Page 3)의 마지막 영역에 저장된 결과 값(f(765))을 제4 페이지(Page 4)의 시작 영역에 중복하여 저장하도록 메모리 장치(100)를 제어할 수 있다. 따라서, 함수 결과 룩업 테이블(LUT)이 저장된 복수의 페이지들(Page 1~Page 3) 각각의 마지막 영역에 저장된 결과 값과 복수의 페이지들(Page 1~Page 3) 각각의 다음 페이지들(Page2~Page4)의 시작 영역에 저장된 결과 값은 동일할 수 있다.
도 5는 본 발명의 일 실시 예에 따른 룩업 테이블의 다른 예를 설명하기 위한 도면이다.
도 5를 참조하면, 함수 결과 룩업 테이블(LUT)은 활성화 함수에 대한 룩업 테이블일 수 있다. 도 5에 도시된 함수 결과 룩업 테이블(LUT)은 도 4에 도시된 함수 결과 룩업 테이블(LUT)과 비교하여 각 페이지에 중복 저장된 결과 값의 개수가 2개 이상인 경우를 나타낸 것이다.
일 실시 예에서, 메모리 장치 제어부(210)는 복수의 입력 값들에 대한 함수의 결과 값들을 복수의 페이지들에 포함된 복수의 메모리 셀들에 순차적으로 저장하도록 메모리 장치(100)를 제어할 수 있다. 예를 들어, 함수 결과 룩업 테이블(LUT)이 연속되는 입력 값인 0부터 1000에 대한 함수의 결과 값들(f(0)~f(1000))을 포함하는 경우, 메모리 장치 제어부(210)는 복수의 페이지들(Page 1~Page4)에 포함된 복수의 메모리 셀들에 입력 값 0에 대응되는 결과 값(f(0))에서부터 입력 값 1000에 대응되는 결과 값(f(1000)) 순으로 저장하도록 메모리 장치(100)를 제어할 수 있다. 즉, 결과 값에 대응되는 입력 값이 낮을수록 결과 값이 저장되는 순서는 빠를 수 있다.
일 실시 예에서, 메모리 장치 제어부(210)는 복수의 페이지들 각각에 저장된 결과 값들 중 연속되어 저장된 일부의 결과 값들을 복수의 페이지들 각각의 다음 페이지에 저장하도록 메모리 장치(100)를 제어할 수 있다.
일 실시 예에서, 메모리 장치 제어부(210)는 제1 페이지(Page 1)에 연속되어 저장된 결과 값들(f(254), f(255))을 제2 페이지(Page 2)에 중복하여 저장하도록 메모리 장치(100)를 제어할 수 있다. 또한, 메모리 장치 제어부(210)는 제2 페이지(Page 2)에 연속되어 저장된 결과 값들(f(509), f(510))을 제3 페이지(Page 3)에 중복하여 저장하도록 메모리 장치(100)를 제어할 수 있다. 또한, 메모리 장치 제어부(210)는 제3 페이지(Page 3)에 연속되어 저장된 결과 값들(f(509), f(510))을 제4 페이지(Page 4)에 중복하여 저장하도록 메모리 장치(100)를 제어할 수 있다. 따라서, 함수 결과 룩업 테이블(LUT)이 저장된 복수의 페이지들(Page 1~Page 3) 각각에 저장된 결과 값들 일부와 복수의 페이지들(Page 1~Page 3) 각각의 다음 페이지들(Page2~Page4) 각각에 저장된 결과 값들 일부는 동일할 수 있다.
일 실시 예에서, 복수의 페이지들 각각의 다음 페이지에 중복 저장되는 결과 값들은 각 페이지에서 저장되는 순서가 늦은 결과 값들일 수 있다. 즉, 중복 저장되는 결과 값들은 각 페이지에서 대응되는 입력 값이 큰 결과 값들일 수 있다.
한편, 상술한 예에서는 결과 값들이 복수의 메모리 셀들에 순차적으로 저장되고, 중복 저장되는 결과 값들은 다음 페이지의 시작 영역에 저장되는 것으로 예시하였으나, 반드시 이에 한정되는 것은 아니다. 예를 들어, 메모리 장치 제어부(210)는 결과 값들을 복수의 메모리 셀들에 순차적으로 저장하되, 각 페이지에서 결과 값들을 무작위로 저장하도록 메모리 장치(100)를 제어할 수 있다. 또한, 메모리 장치 제어부(210)는 중복 저장되는 결과 값들을 다음 페이지의 시작 영역이 아닌 무작위 순서로 저장할 수 있다.
또한, 상술한 예에서는 복수의 페이지들에 중복 저장된 결과 값의 개수가 2개인 것으로 설명하였으나, 반드시 이에 한정되는 것은 아니고, 실시 예에 따라 복수의 페이지들에 중복 저장된 결과 값의 개수는 2개 이상일 수 있다.
도 6은 본 발명의 일 실시 예에 따른 활성화 함수의 결과 값을 산출하는 동작의 일 예를 설명하기 위한 도면이다.
도 6에 도시된 함수 결과 룩업 테이블(LUT)은 예를 들어, 도 4에 도시된 함수 결과 룩업 테이블(LUT)일 수 있다. 다만, 도 6을 참조하여 설명되는 동작은 도 5에 도시된 함수 결과 룩업 테이블(LUT)에도 적용될 수 있다.
일 실시 예에서, 메모리 장치 제어부(210)는 호스트(300)의 요청에 따라 함수 결과 룩업 테이블(LUT)을 저장하도록 메모리 장치(100)를 제어할 수 있다. 메모리 장치(100)는 함수의 결과 값들을 복수의 메모리 셀들에 저장할 수 있다.
일 실시 예에서, 연산 제어부(220)는 함수 결과 룩업 테이블(LUT)을 이용하여 타겟 입력 값(target input)에 대한 함수의 결과 값을 산출할 수 있다. 구체적으로, 연산 제어부(220)는 메모리 장치(100)에 저장된 결과 값들을 이용하여 타겟 입력 값(target input)에 대한 함수의 결과 값을 산출할 수 있다.
일 실시 예에서, 연산 제어부(220)는 호스트(300)로부터 제공된 입력 데이터, 입력 데이터에 대응되는 가중치 및 바이어스를 이용하여 타겟 입력 값(target input)을 산출할 수 있다. 예를 들어, 연산 제어부(220)는 입력 데이터, 입력 데이터에 대응되는 가중치 및 바이어스를 이용한 가중치 합을 이용하여 타겟 입력 값(target input)을 산출할 수 있다. 이후, 연산 제어부(220)는 타겟 입력 값(target input)을 메모리 장치 제어부(210)로 제공할 수 있다. 한편, 도 6에서, 타겟 입력 값(target input)은 254.5인 것으로 가정한다.
일 실시 예에서, 메모리 장치 제어부(210)는 복수의 페이지들 중 어느 하나의 페이지로부터 결과 값들 중 타겟 입력 값(target input)에 대응되는 적어도 둘의 결과 값들을 리드하도록 메모리 장치(100)를 제어할 수 있다. 이때, 타겟 입력 값(target input)에 대응되는 적어도 둘의 결과 값들은 입력 값(target input)에 대한 함수의 결과 값을 산출하기 위해 이용되는 결과 값들일 수 있다. 또한, 타겟 입력 값(target input)에 대응되는 적어도 둘의 결과 값들은 연속되어 저장된 결과 값들일 수 있다. 일 실시 예에서, 어느 하나의 페이지는 복수의 페이지들 중 타겟 입력 값(target input)에 대응되는 적어도 둘의 결과 값들을 모두 저장하는 페이지일 수 있다.
일 실시 예에서, 메모리 장치 제어부(210)는 함수 결과 룩업 테이블(LUT)에 포함된 결과 값들 중 타겟 입력 값(target input)에 대응되는 적어도 둘의 결과 값들이 저장된 위치를 나타내는 어드레스를 결정할 수 있다. 일 실시 예에서, 결과 값들을 나타내는 어드레스는 사인 비트(sign bit), 정수 비트(integer bit) 및 팩션 비트(faction bit)로 구성될 수 있다. 구체적으로, 메모리 장치 제어부(210)는 타겟 입력 값(target input)의 크기에 따라 어드레스를 결정할 수 있다. 예를 들어, 메모리 장치 제어부(210)는 타겟 입력 값(target input)과 인접한 입력 값들이 254 및 255인 것으로 결정하고, 입력 값 254 및 255에 대응되는 결과 값들(f(254), f(255))이 저장된 위치가 제1 페이지(Page 1)인 것으로 결정할 수 있다.
일 실시 예에서, 메모리 장치 제어부(210)는 복수의 페이지들 중 결정된 어드레스에 대응되는 페이지로부터 적어도 둘의 결과 값들을 리드하도록 메모리 장치(100)를 제어할 수 있다. 이후, 메모리 장치 제어부(210)는 제1 페이지(Page 1)에 대응되는 어드레스와 제1 페이지(Page 1)에 대한 리드 커맨드(read cmd_Page 1)를 메모리 장치(100)로 제공할 수 있다. 메모리 장치 제어부(210)는 메모리 장치(100)로부터 리드된 데이터(read data_Page 1)를 수신할 수 있다. 이때, 리드된 데이터(read data_Page 1)는 타겟 입력 값(target input)에 대한 함수의 결과 값을 산출하기 위해 이용되는 결과 값들(f(254), f(255))을 포함할 수 있다. 메모리 장치 제어부(210)는 리드된 데이터(read data_Page 1)를 연산 제어부(220)로 제공할 수 있다.
일 실시 예에서, 연산 제어부(220)는 메모리 장치(100)로부터 적어도 둘의 결과 값들(f(254), f(255))을 이용하여 타겟 입력 값(target input)에 대한 함수의 결과 값을 산출할 수 있다. 예를 들어, 연산 제어부(220)는 보간법을 이용하여 타겟 입력 값(target input)에 대한 함수의 결과 값을 산출할 수 있다. 구체적으로, 연산 제어부(220)는 적어도 둘의 결과 값들(f(254), f(255))을 보간법의 변수로 이용하여 타겟 입력 값(target input)에 대한 함수의 결과 값을 산출할 수 있다.
도 7은 본 발명의 일 실시 예에 따른 활성화 함수의 결과 값을 산출하는 동작의 다른 예를 설명하기 위한 도면이다.
도 7에 도시된 함수 결과 룩업 테이블(LUT)은 예를 들어, 도 4에 도시된 함수 결과 룩업 테이블(LUT)일 수 있다. 다만, 도 7을 참조하여 설명되는 동작은 도 5에 도시된 함수 결과 룩업 테이블(LUT)에도 적용될 수 있다.
일 실시 예에서, 메모리 장치 제어부(210)는 호스트(300)의 요청에 따라 함수 결과 룩업 테이블(LUT)을 저장하도록 메모리 장치(100)를 제어할 수 있다. 메모리 장치(100)는 함수의 결과 값들을 복수의 메모리 셀들에 저장할 수 있다.
일 실시 예에서, 연산 제어부(220)는 함수 결과 룩업 테이블(LUT)을 이용하여 타겟 입력 값(target input)에 대한 함수의 결과 값을 산출할 수 있다. 구체적으로, 연산 제어부(220)는 메모리 장치(100)에 저장된 결과 값들을 이용하여 타겟 입력 값(target input)에 대한 함수의 결과 값을 산출할 수 있다.
일 실시 예에서, 연산 제어부(220)는 호스트(300)로부터 제공된 입력 데이터, 입력 데이터에 대응되는 가중치 및 바이어스를 이용하여 타겟 입력 값(target input)을 산출할 수 있다. 예를 들어, 연산 제어부(220)는 입력 데이터, 입력 데이터에 대응되는 가중치 및 바이어스를 이용한 가중치 합을 이용하여 타겟 입력 값(target input)을 산출할 수 있다. 이후, 연산 제어부(220)는 타겟 입력 값(target input)을 메모리 장치 제어부(210)로 제공할 수 있다. 한편, 도 6에서, 타겟 입력 값(target input)은 255.5인 것으로 가정한다.
일 실시 예에서, 메모리 장치 제어부(210)는 복수의 페이지들 중 어느 하나의 페이지로부터 결과 값들 중 타겟 입력 값(target input)에 대응되는 적어도 둘의 결과 값들을 리드하도록 메모리 장치(100)를 제어할 수 있다. 이때, 타겟 입력 값(target input)에 대응되는 적어도 둘의 결과 값들은 입력 값(target input)에 대한 함수의 결과 값을 산출하기 위해 이용되는 결과 값들일 수 있다. 또한, 타겟 입력 값(target input)에 대응되는 적어도 둘의 결과 값들은 연속되어 저장된 결과 값들일 수 있다. 일 실시 예에서, 어느 하나의 페이지는 복수의 페이지들 중 타겟 입력 값(target input)에 대응되는 적어도 둘의 결과 값들을 모두 저장하는 페이지일 수 있다.
일 실시 예에서, 메모리 장치 제어부(210)는 함수 결과 룩업 테이블(LUT)에 포함된 결과 값들 중 타겟 입력 값(target input)에 대응되는 적어도 둘의 결과 값들이 저장된 위치를 나타내는 어드레스를 결정할 수 있다. 일 실시 예에서, 결과 값들을 나타내는 어드레스는 사인 비트(sign bit), 정수 비트(integer bit) 및 팩션 비트(faction bit)로 구성될 수 있다. 일 실시 예에서, 메모리 장치 제어부(210)는 적어도 둘의 결과 값들 중 가장 먼저 저장된 결과 값이 제1 페이지의 마지막 영역에 저장된 경우, 제2 페이지로부터 적어도 둘의 결과 값들을 리드하도록 메모리 장치(100)를 제어할 수 있다. 구체적으로, 메모리 장치 제어부(210)는 타겟 입력 값(target input)의 크기에 따라 어드레스를 결정할 수 있다. 예를 들어, 메모리 장치 제어부(210)는 타겟 입력 값(target input)과 인접한 입력 값들이 255 및 256인 것으로 결정할 수 있다. 이때, 입력 값 255 및 256에 대응되는 결과 값들(f(255), f(256)) 중 입력 값 255에 대응되는 결과 값(f(255))이 제1 페이지(Page 1)의 마지막 영역에 저장되어 있으므로, 메모리 장치 제어부(210)는 입력 값 255 및 256에 대응되는 결과 값들(f(255), f(256))이 저장된 위치를 제2 페이지(page 2)로 결정할 수 있다.
일 실시 예에서, 메모리 장치 제어부(210)는 복수의 페이지들 중 결정된 어드레스에 대응되는 페이지로부터 적어도 둘의 결과 값들을 리드하도록 메모리 장치(100)를 제어할 수 있다. 이후, 메모리 장치 제어부(210)는 제2 페이지(Page 2)에 대응되는 어드레스와 제2 페이지(Page 2)에 대한 리드 커맨드(read cmd_Page 2)를 메모리 장치(100)로 제공할 수 있다. 메모리 장치 제어부(210)는 메모리 장치(100)로부터 리드된 데이터(read data_Page 2)를 수신할 수 있다. 이때, 리드된 데이터(read data_Page 2)는 타겟 입력 값(target input)에 대한 함수의 결과 값을 산출하기 위해 이용되는 결과 값들(f(255), f(256))을 포함할 수 있다. 메모리 장치 제어부(210)는 리드된 데이터(read data_Page 2)를 연산 제어부(220)로 제공할 수 있다.
일 실시 예에서, 연산 제어부(220)는 메모리 장치(100)로부터 적어도 둘의 결과 값들(f(255), f(256))을 이용하여 타겟 입력 값(target input)에 대한 함수의 결과 값을 산출할 수 있다. 예를 들어, 연산 제어부(220)는 보간법을 이용하여 타겟 입력 값(target input)에 대한 함수의 결과 값을 산출할 수 있다. 구체적으로, 연산 제어부(220)는 적어도 둘의 결과 값들(f(255), f(256))을 보간법의 변수로 이용하여 타겟 입력 값(target input)에 대한 함수의 결과 값을 산출할 수 있다.
이에 따라, 본 발명의 일 실시 예에 따르면, 복수의 페이지들 중 제1 페이지의 마지막 영역에 저장된 결과 값을 복수의 페이지들 중 제1 페이지와 상이한 제2 페이지의 시작 영역에 중복하여 저장함으로써, 한 번의 리드 동작을 통해 활성화 함수의 결과 값을 산출하여 리드 동작에 따른 레이턴시(latency)를 줄일 수 있다.
도 8은 본 발명의 일 실시 예에 따른 스토리지 장치의 동작 방법을 설명하기 위한 도면이다.
도 8에 도시된 방법은 예를 들어, 도 1에 도시된 스토리지 장치(50)에 의해 수행될 수 있다.
도 8을 참조하면, 단계 S801에서, 스토리지 장치(50)는 복수의 입력 값들에 대한 함수의 결과 값들을 복수의 메모리 셀들에 저장할 수 있다.
이때, 스토리지 장치(50)는 함수 결과 룩업 테이블에 포함된 결과 값들을 복수의 메모리 셀들에 순차적으로 저장할 수 있다. 또한, 스토리지 장치(50)는 복수의 페이지들 중 제1 페이지의 마지막 영역에 저장된 결과 값을 복수의 페이지들 중 제1 페이지와 상이한 제2 페이지의 시작 영역에 중복하여 저장할 수 있다.
단계 S803에서, 스토리지 장치(50)는 호스트(300)로부터 제공된 입력 데이터, 입력 데이터에 대응되는 가중치 및 바이어스를 이용하여 타겟 입력 값을 산출할 수 있다.
단계 S805에서, 스토리지 장치(50)는 결과 값들 중 타겟 입력 값에 대응되는 적어도 둘의 결과 값들이 저장된 위치를 나타내는 어드레스를 결정할 수 있다.
단계 S807에서, 스토리지 장치(50)는 복수의 페이지들 중 결정된 어드레스에 대응되는 페이지로부터 적어도 둘의 결과 값들을 리드할 수 있다.
단계 S809에서, 스토리지 장치(50)는 적어도 둘의 결과 값들을 이용하여 타겟 입력 값에 대한 함수의 결과 값을 산출할 수 있다.
도 9는 도 1의 메모리 컨트롤러를 설명하기 위한 도면이다.
도 1 및 도 9를 참조하면, 메모리 컨트롤러(200)는 프로세서(230), RAM(240), 에러 정정 회로(250), ROM(260), 호스트 인터페이스(270), 및 메모리 인터페이스(280)를 포함할 수 있다.
프로세서(230)는 메모리 컨트롤러(200)의 제반 동작을 제어할 수 있다. RAM(240)은 메모리 컨트롤러(200)의 버퍼 메모리, 캐시 메모리, 동작 메모리 등으로 사용될 수 있다.
에러 정정 회로(250)는 에러 정정을 수행할 수 있다. 에러 정정 회로(250)는 메모리 인터페이스(280)를 통해 메모리 장치(100)에 기입될 데이터에 기반하여 에러 정정 인코딩(ECC encoding)을 수행할 수 있다. 에러 정정 인코딩 된 데이터는 메모리 인터페이스(280)를 통해 메모리 장치(100)로 전달될 수 있다. 에러 정정 회로(250)는 메모리 장치(100)로부터 메모리 인터페이스(280)를 통해 수신되는 데이터에 대해 에러 정정 디코딩(ECC decoding)을 수행할 수 있다. 예시적으로, 에러 정정 회로(250)는 메모리 인터페이스(280)의 구성 요소로서 메모리 인터페이스(280)에 포함될 수 있다.
ROM(260)은 메모리 컨트롤러(200)가 동작하는데 요구되는 다양한 정보들을 펌웨어 형태로 저장할 수 있다. 일 실시 예에서, 도 1의 메모리 장치 제어부(210) 및 연산 제어부(220)는 ROM(260)에 포함되는 펌웨어일 수 있다.
메모리 컨트롤러(200)는 호스트 인터페이스(270)를 통해 외부 장치(예를 들어, 호스트(300), 애플리케이션 프로세서 등)와 통신할 수 있다.
메모리 컨트롤러(200)는 메모리 인터페이스(280)를 통해 메모리 장치(100)와 통신할 수 있다. 메모리 컨트롤러(200)는 메모리 인터페이스(280)를 통해 커맨드, 어드레스, 및 제어 신호 등을 메모리 장치(100)로 전송할 수 있고, 데이터를 수신할 수 있다.
50: 스토리지 장치
100: 메모리 장치
200: 메모리 컨트롤러
210: 메모리 장치 제어부
220: 연산 제어부
300: 호스트

Claims (20)

  1. 복수의 메모리 셀들을 각각 포함하는 복수의 페이지들을 포함하는 메모리 장치; 및
    복수의 입력 값들에 대한 함수의 결과 값들을 상기 복수의 메모리 셀들에 순차적으로 저장하고, 상기 복수의 페이지들 중 제1 페이지의 마지막 영역에 저장된 결과 값을 상기 복수의 페이지들 중 상기 제1 페이지와 상이한 제2 페이지의 시작 영역에 저장하도록 상기 메모리 장치를 제어하는 메모리 컨트롤러;를 포함하는, 스토리지 장치.
  2. 제1 항에 있어서, 상기 함수는,
    신경망(neural network)의 활성화 함수(activation function)인, 스토리지 장치.
  3. 제1 항에 있어서, 상기 제2 페이지는,
    상기 제1 페이지의 다음 페이지인, 스토리지 장치.
  4. 제1 항에 있어서, 상기 마지막 영역 및 상기 시작 영역 각각은,
    적어도 하나 이상의 메모리 셀들을 포함하는, 스토리지 장치.
  5. 제1 항에 있어서, 상기 메모리 컨트롤러는,
    호스트의 요청에 따라, 상기 복수의 메모리 셀들에 상기 결과 값들을 저장하고, 상기 복수의 메모리 셀들로부터 상기 결과 값들을 리드하도록 상기 메모리 장치를 제어하는 메모리 장치 제어부; 및
    상기 결과 값들을 이용하여 타겟 입력 값에 대한 상기 함수의 결과 값을 산출하는 연산 제어부;를 포함하는, 스토리지 장치.
  6. 제5 항에 있어서, 상기 연산 제어부는,
    상기 호스트로부터 제공된 입력 데이터, 상기 입력 데이터에 대응되는 가중치 및 바이어스(bias)를 이용하여 상기 타겟 입력 값을 산출하는, 스토리지 장치.
  7. 제5 항에 있어서, 상기 메모리 장치 제어부는,
    상기 결과 값들 중 상기 타겟 입력 값에 대응되는 적어도 둘의 결과 값들이 저장된 위치를 나타내는 어드레스를 결정하고, 상기 복수의 페이지들 중 상기 결정된 어드레스에 대응되는 페이지로부터 상기 적어도 둘의 결과 값들을 리드하도록 상기 메모리 장치를 제어하는, 스토리지 장치.
  8. 제7 항에 있어서, 상기 메모리 장치 제어부는,
    상기 적어도 둘의 결과 값들 중 가장 먼저 저장된 결과 값이 상기 제1 페이지의 마지막 영역에 저장된 경우, 상기 제2 페이지로부터 상기 적어도 둘의 결과 값들을 리드하도록 상기 메모리 장치를 제어하는, 스토리지 장치.
  9. 제7 항에 있어서, 상기 연산 제어부는,
    상기 적어도 둘의 결과 값들을 이용하여 상기 타겟 입력 값에 대한 상기 함수의 결과 값을 산출하는, 스토리지 장치.
  10. 제9 항에 있어서, 상기 함수 결과 산출 제어부는,
    보간법(interpolation)을 이용하여 상기 타겟 입력 값에 대한 상기 함수의 결과 값을 산출하는, 스토리지 장치.
  11. 제1 항에 있어서, 상기 복수의 페이지들 각각은,
    상기 결과 값들 중 상기 복수의 페이지들 각각에 저장될 수 있는 데이터의 크기 및 정밀도(precision)에 따라 결정되는 개수만큼의 결과 값들을 저장하는, 스토리지 장치.
  12. 복수의 메모리 셀들을 각각 포함하는 복수의 페이지들을 포함하는 메모리 장치를 제어하는 메모리 컨트롤러에 있어서,
    복수의 입력 값들에 대한 함수의 결과 값들을 상기 복수의 메모리 셀들에 순차적으로 저장하면서, 상기 복수의 페이지들 각각에 저장된 결과 값들 중 마지막 영역에 저장된 결과 값을 상기 복수의 페이지들 각각의 다음 페이지에 저장하도록 상기 메모리 장치를 제어하는 메모리 장치 제어부; 및
    상기 결과 값들을 이용하여 타겟 입력 값에 대한 상기 함수의 결과 값을 산출하는 연산 제어부;를 포함하는, 메모리 컨트롤러.
  13. 제12 항에 있어서, 상기 메모리 장치 제어부는,
    상기 마지막 영역에 저장된 결과 값을 상기 다음 페이지의 시작 영역에 저장하도록 상기 메모리 장치를 제어하는, 메모리 컨트롤러.
  14. 제13 항에 있어서, 상기 마지막 영역 및 상기 시작 영역 각각은,
    적어도 하나 이상의 메모리 셀들을 포함하는, 메모리 컨트롤러.
  15. 제12 항에 있어서, 상기 메모리 장치 제어부는,
    상기 결과 값들 중 상기 타겟 입력 값에 대응되는 적어도 둘의 결과 값들이 저장된 위치를 나타내는 어드레스를 결정하고, 상기 복수의 페이지들 중 상기 결정된 어드레스에 대응되는 페이지로부터 상기 적어도 둘의 결과 값들을 리드하도록 상기 메모리 장치를 제어하는, 메모리 컨트롤러.
  16. 제15 항에 있어서, 상기 연산 제어부는,
    상기 적어도 둘의 결과 값들을 이용하여 상기 타겟 입력 값에 대한 상기 함수의 결과 값을 산출하는, 메모리 컨트롤러.
  17. 복수의 메모리 셀들을 각각 포함하는 복수의 페이지들을 포함하는 메모리 장치; 및
    복수의 입력 값들에 대한 함수의 결과 값들을 상기 복수의 메모리 셀들에 순차적으로 저장하고, 상기 복수의 페이지들 각각에 저장된 결과 값들 중 연속되어 저장된 일부의 결과 값들을 상기 복수의 페이지들 각각의 다음 페이지에 저장하도록 상기 메모리 장치를 제어하는 메모리 컨트롤러;를 포함하는, 스토리지 장치.
  18. 제17 항에 있어서, 상기 메모리 컨트롤러는,
    호스트의 요청에 따라, 상기 복수의 메모리 셀들에 상기 결과 값들을 저장하고, 상기 복수의 메모리 셀들로부터 상기 결과 값들을 리드하도록 상기 메모리 장치를 제어하는 메모리 장치 제어부; 및
    상기 결과 값들을 이용하여 타겟 입력 값에 대한 상기 함수의 결과 값을 산출하는 연산 제어부;를 포함하는, 스토리지 장치.
  19. 제18 항에 있어서, 상기 메모리 장치 제어부는,
    상기 복수의 페이지들 중 어느 하나의 페이지로부터 상기 결과 값들 중 상기 타겟 입력 값에 대응되는 적어도 둘의 결과 값들을 리드하도록 상기 메모리 장치를 제어하는, 스토리지 장치.
  20. 제19 항에 있어서, 상기 연산 제어부는,
    상기 적어도 둘의 결과 값들을 이용하여 상기 타겟 입력 값에 대한 상기 함수의 결과 값을 산출하는, 스토리지 장치.
KR1020200161252A 2020-11-26 2020-11-26 스토리지 장치 및 그 동작 방법 KR20220073306A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020200161252A KR20220073306A (ko) 2020-11-26 2020-11-26 스토리지 장치 및 그 동작 방법
US17/339,491 US11734168B2 (en) 2020-11-26 2021-06-04 Storage device and operating method thereof
CN202110746342.8A CN114546901A (zh) 2020-11-26 2021-07-01 存储装置及其操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200161252A KR20220073306A (ko) 2020-11-26 2020-11-26 스토리지 장치 및 그 동작 방법

Publications (1)

Publication Number Publication Date
KR20220073306A true KR20220073306A (ko) 2022-06-03

Family

ID=81657053

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200161252A KR20220073306A (ko) 2020-11-26 2020-11-26 스토리지 장치 및 그 동작 방법

Country Status (3)

Country Link
US (1) US11734168B2 (ko)
KR (1) KR20220073306A (ko)
CN (1) CN114546901A (ko)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110252187A1 (en) * 2010-04-07 2011-10-13 Avigdor Segal System and method for operating a non-volatile memory including a portion operating as a single-level cell memory and a portion operating as a multi-level cell memory
KR101041837B1 (ko) 2010-04-09 2011-06-17 (주)다윈텍 파일저장 제어장치 및 방법
JP5983019B2 (ja) * 2012-05-17 2016-08-31 ソニー株式会社 制御装置、記憶装置、記憶制御方法
WO2017162129A1 (zh) 2016-03-21 2017-09-28 成都海存艾匹科技有限公司 含有三维存储阵列的集成神经处理器
CN109034383B (zh) * 2017-10-30 2021-09-21 上海寒武纪信息科技有限公司 神经网络处理器及使用处理器执行矩阵相乘指令的方法
US12026604B2 (en) * 2019-11-11 2024-07-02 NextVPU (Shanghai) Co., Ltd. Memory pre-allocation for forward calculation in a neural network
EP3985570A1 (en) * 2020-10-13 2022-04-20 Imagination Technologies Limited Implementation of a neural network in multicore hardware
US11442666B2 (en) * 2020-11-17 2022-09-13 Western Digital Technologies, Inc. Storage system and dual-write programming method with reverse order for secondary block

Also Published As

Publication number Publication date
CN114546901A (zh) 2022-05-27
US20220164280A1 (en) 2022-05-26
US11734168B2 (en) 2023-08-22

Similar Documents

Publication Publication Date Title
KR102362229B1 (ko) 메모리 컨트롤러, 메모리 시스템 및 메모리 컨트롤러를 포함하는 어플리케이션 프로세서
KR20210070054A (ko) 저장 장치 및 그 동작 방법
US11599268B2 (en) Storage device and method of operating the same
KR20210123884A (ko) 스토리지 장치 및 그 동작 방법
KR102694952B1 (ko) 메모리 시스템 및 그것의 동작방법
KR20220021796A (ko) 스토리지 장치 및 그 동작 방법
CN114078543A (zh) 存储器控制器及其操作方法
KR20220023598A (ko) 메모리 컨트롤러 및 그 동작 방법
KR20200066893A (ko) 메모리 컨트롤러 및 그 동작 방법
US20220197540A1 (en) Storage device and method of operating the same
US20220291872A1 (en) Storage device accessible on a cell-by-cell basis and method of operating the same
KR20200072261A (ko) 저장 장치 및 그 동작 방법
US11586379B2 (en) Memory system and method of operating the same
US11625178B2 (en) Storage device and method of operating the same
US20220171542A1 (en) Memory controller and method of operating the same
US11734168B2 (en) Storage device and operating method thereof
CN115469798A (zh) 存储装置及操作存储装置的方法
CN114398295A (zh) 存储装置及其操作方法
KR20210049619A (ko) 분산 저장 시스템의 스토리지 노드 및 그 동작 방법
US20240160384A1 (en) Controller of storage device adaptively adjusting operation performance and method of operating the controller
US20240177751A1 (en) Storage device and operating method thereof
KR102565920B1 (ko) 저장 장치 및 그 동작 방법
KR20240049864A (ko) 메모리 시스템 및 그 동작 방법
KR20230048769A (ko) 메모리 컨트롤러 및 그 동작 방법
TW202349203A (zh) 計算系統及其操作方法