KR20190115072A - 멀티코어 온-다이 메모리 마이크로컨트롤러 - Google Patents

멀티코어 온-다이 메모리 마이크로컨트롤러 Download PDF

Info

Publication number
KR20190115072A
KR20190115072A KR1020197026661A KR20197026661A KR20190115072A KR 20190115072 A KR20190115072 A KR 20190115072A KR 1020197026661 A KR1020197026661 A KR 1020197026661A KR 20197026661 A KR20197026661 A KR 20197026661A KR 20190115072 A KR20190115072 A KR 20190115072A
Authority
KR
South Korea
Prior art keywords
microcontroller
processing units
memory
tasks
processing unit
Prior art date
Application number
KR1020197026661A
Other languages
English (en)
Other versions
KR102238957B1 (ko
Inventor
이보 인
헨리 장
포-션 라이
비제이 친촐
스피리돈 게오르가키스
얀 리
히로유키 미즈코시
도루 미와
제이쉬 팍헤일
쯔-이 리우
Original Assignee
샌디스크 테크놀로지스 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 샌디스크 테크놀로지스 엘엘씨 filed Critical 샌디스크 테크놀로지스 엘엘씨
Priority claimed from PCT/US2018/024103 external-priority patent/WO2018231313A1/en
Publication of KR20190115072A publication Critical patent/KR20190115072A/ko
Application granted granted Critical
Publication of KR102238957B1 publication Critical patent/KR102238957B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/14Implementation of control logic, e.g. test mode decoders
    • G11C29/16Implementation of control logic, e.g. test mode decoders using microprogrammed units, e.g. state machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1016Error in accessing a memory location, i.e. addressing error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1064Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in cache or content addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • G06F15/7842Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
    • G06F15/785Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers) with decentralized control, e.g. smart memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/32Timing circuits

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Microcomputers (AREA)
  • Semiconductor Integrated Circuits (AREA)
  • Read Only Memory (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)

Abstract

멀티코어 온-다이 메모리 컨트롤러(150)를 위한 장치, 시스템, 방법, 및 컴퓨터 프로그램 제품이 개시된다. 집적 회로 디바이스(123, 212, 700)는 비휘발성 메모리 셀들의 어레이(200) 및 마이크로컨트롤러 유닛(150)을 포함한다. 마이크로컨트롤러 유닛(150)은 복수의 프로세싱 유닛(302, 402, 404)을 포함한다. 상이한 프로세싱 유닛들(302, 402, 404)이 비휘발성 메모리 셀들의 어레이(200)에 대해 상이한 카테고리의 작업들을 병렬로 수행한다.

Description

멀티코어 온-다이 메모리 마이크로컨트롤러
다양한 실시예에서, 본 발명은 비휘발성 및/또는 휘발성 메모리에 관한 것이며, 보다 구체적으로는 비휘발성 및/또는 휘발성 메모리를 위한 온-다이 메모리 마이크로컨트롤러에 관한 것이다.
메모리 디바이스는 메모리 디바이스의 소정 동작들을 제어하는 상태 머신을 가질 수 있다. 그러나, 일단 상태 머신이 "테이프-아웃"되고 생산 중에, 어드레스 에러 또는 설계 결함에 대해 만약에 있더라도 최소의 변경이 이루어질 수 있다면, 설계 주기를 크게 연장하지 않고도 개발 및 테스트 유연성이 제한된다.
멀티코어 온-다이 메모리 컨트롤러를 위한 장치, 시스템, 방법, 및 컴퓨터 프로그램 제품이 개시된다. 일 실시예에서, 장치는 집적 회로 디바이스 내에 비휘발성 메모리 셀들의 어레이를 포함한다. 추가 실시예에서, 장치는 집적 회로 디바이스 내에 마이크로컨트롤러 유닛을 포함한다. 소정 실시예에서, 장치는 마이크로컨트롤러 유닛의 복수의 프로세싱 유닛을 포함한다. 일부 실시예에서, 상이한 프로세싱 유닛들은 비휘발성 메모리 셀들의 어레이에 대해 상이한 카테고리의 작업들을 병렬로 수행한다.
일 실시예에서, 시스템은 각각이 하나 이상의 층을 포함하는 다수의 레벨을 포함하는 집적 회로 디바이스를 포함한다. 소정 실시예에서, 집적 회로 디바이스의 제1 레벨은 비휘발성 메모리 매체를 포함한다. 추가 실시예에서, 집적 회로 디바이스의 제2 레벨은 제1 레벨에 평행하고 그로부터 오프셋된다. 일 실시예에서, 집적 회로 디바이스의 제2 레벨은 복수의 프로세싱 유닛을 갖는 마이크로컨트롤러를 포함한다. 다양한 실시예에서, 상이한 프로세싱 유닛들은 비휘발성 메모리 매체에 대해 상이한 타입의 작업들을 병렬로 수행한다.
소정 실시예에서, 다른 장치는 데이터를 저장하기 위한 수단을 포함한다. 일 실시예에서, 장치는 작업의 카테고리에 의해 데이터를 저장하기 위한 수단에 대해 작업들을 분류하기 위한 수단을 포함한다. 일부 실시예에서, 장치는 데이터를 저장하기 위한 수단에 대해 상이한 프로세싱 유닛들을 이용하여 데이터를 저장하기 위한 수단에 대해 상이한 카테고리의 작업들을 병렬로 수행하기 위한 수단을 포함한다.
일 실시예에서, 방법은 메모리 동작에 대한 요청을 수신하는 단계를 포함한다. 소정 실시예에서, 방법은 메모리 동작을 완료하기 위한 복수의 작업을 결정하는 단계를 포함한다. 일 실시예에서, 복수의 작업 중 상이한 작업들은 상이한 명령어 세트들과 연관된다. 일부 실시예에서, 방법은 마이크로컨트롤러의 상이한 프로세싱 유닛들을 이용하여 복수의 작업 중 상이한 작업들을 병렬로 수행하는 단계를 포함한다. 일 실시예에서, 상이한 프로세싱 유닛들은 상이한 명령어 세트들을 지원한다.
일부 실시예에서, 추가 장치는 집적 회로 디바이스의 메모리 어레이를 위한 마이크로컨트롤러를 포함한다. 일 실시예에서, 마이크로컨트롤러는 제1 프로세싱 유닛을 이용하여 메모리 동작을 위한 복수의 작업을 선택하도록 구성된다. 추가 실시예에서, 마이크로컨트롤러는 제2 프로세싱 유닛을 이용하여 메모리 동작을 위한 복수의 작업의 타이밍을 제어하도록 구성된다. 소정 실시예에서, 마이크로컨트롤러는 제3 프로세싱 유닛을 이용하여 메모리 동작을 위한 복수의 작업에 대한 전압들을 설정하도록 구성된다.
첨부 도면에 도시된 특정 실시예를 참조하여 보다 구체적인 설명이 하기에 포함된다. 이러한 도면이 본 발명의 소정 실시예만을 도시하고 그에 따라 그의 범주의 제한인 것으로 간주되지 않아야 함을 이해한 상태로, 본 발명은 첨부 도면의 사용을 통해 추가적인 특이성 및 세부사항으로 기술되고 설명된다.
도 1은 온-다이 메모리 마이크로컨트롤러를 위한 시스템의 일 실시예를 도시한 개략적인 블록도이다.
도 2는 온-다이 메모리 마이크로컨트롤러를 위한 시스템의 다른 실시예를 도시한 개략적인 블록도이다.
도 3은 온-다이 메모리 마이크로컨트롤러의 일 실시예를 도시한 개략적인 블록도이다.
도 4는 온-다이 메모리 마이크로컨트롤러의 추가 실시예를 도시한 개략적인 블록도이다.
도 5는 다수의 온-다이 메모리 마이크로컨트롤러 코어들을 갖는 시스템의 일 실시예를 도시한 개략적인 블록도이다.
도 6은 다수의 온-다이 메모리 마이크로컨트롤러 코어들을 갖는 시스템의 다른 실시예를 도시한 개략적인 블록도이다.
도 7은 온-다이 메모리 마이크로컨트롤러를 갖는 집적 회로 디바이스의 일 실시예를 도시한 개략적인 블록도이다.
도 8은 온-다이 메모리 마이크로컨트롤러를 위한 방법의 일 실시예를 도시한 개략적인 흐름도이다.
도 9는 온-다이 메모리 마이크로컨트롤러를 위한 방법의 추가 실시예를 도시한 개략적인 흐름도이다.
본 발명의 태양은 장치, 시스템, 방법, 또는 컴퓨터 프로그램 제품으로서 구체화될 수 있다. 따라서, 본 발명의 태양은 전적으로 하드웨어 실시예, 전적으로 소프트웨어 실시예(펌웨어, 상주 소프트웨어, 마이크로코드 등을 포함함), 또는 소프트웨어 태양과 하드웨어 태양을 조합한 실시예의 형태를 취할 수 있는데, 이들은 모두 일반적으로 본 명세서에서 "회로", "모듈", "장치", 또는 "시스템"으로 지칭될 수 있다. 게다가, 본 발명의 태양은 컴퓨터 판독가능 및/또는 실행가능 프로그램 코드를 저장하는 하나 이상의 비일시적 컴퓨터 판독가능 저장 매체로 구체화되는 컴퓨터 프로그램 제품의 형태를 취할 수 있다.
본 명세서에 기술되는 기능 유닛들 중 많은 것이 그들의 구현 독립성을 보다 구체적으로 강조하기 위해 모듈로서 라벨링되었다. 예를 들어, 모듈은 맞춤형 VLSI 회로 또는 게이트 어레이, 기성(off-the-shelf) 반도체, 예컨대 로직 칩, 트랜지스터, 또는 다른 별개의 컴포넌트를 포함하는 하드웨어 회로로서 구현될 수 있다. 모듈은, 또한, 프로그램가능 하드웨어 디바이스, 예컨대 필드 프로그램가능 게이트 어레이, 프로그램가능 어레이 로직, 프로그램가능 로직 디바이스 등으로 구현될 수 있다.
모듈은, 또한, 다양한 타입의 프로세서에 의한 실행을 위해 적어도 부분적으로 소프트웨어로 구현될 수 있다. 실행가능 코드의 식별된 모듈은, 예를 들어, 컴퓨터 명령어의 하나 이상의 물리적 또는 로직 블록을 포함할 수 있는데, 이들은 예를 들어 객체, 절차, 또는 기능으로서 편성될 수 있다. 그럼에도 불구하고, 식별된 모듈의 실행가능 코드는 물리적으로 함께 위치될 필요가 없지만, 함께 논리적으로 연결될 때, 모듈을 포함하고 모듈에 대한 진술된 목적을 달성하는, 상이한 위치들에 저장된 이질적 명령어들을 포함할 수 있다.
실제로, 실행가능 코드의 모듈은 단일 명령어, 또는 많은 명령어들을 포함할 수 있고, 심지어, 여러 개의 메모리 디바이스 등에 걸쳐서, 상이한 프로그램들 중에서도, 여러 개의 상이한 코드 세그먼트를 통해 분배될 수 있다. 모듈 또는 모듈의 일부분이 소프트웨어로 구현되는 경우, 소프트웨어 부분은 하나 이상의 컴퓨터 판독가능 및/또는 실행가능 저장 매체에 저장될 수 있다. 하나 이상의 컴퓨터 판독가능 저장 매체들의 임의의 조합이 활용될 수 있다. 컴퓨터 판독가능 저장 매체는, 예를 들어, 전자, 자기, 광학, 전자기, 적외선, 또는 반도체 시스템, 장치, 또는 디바이스, 또는 전술한 것들의 임의의 적합한 조합을 포함할 수 있지만 이들로 제한되지 않으며, 전파 신호는 포함하지 않을 것이다. 본 명세서의 맥락에서, 컴퓨터 판독가능 및/또는 실행가능 저장 매체는 명령어 실행 시스템, 장치, 프로세서, 또는 디바이스에 의해 또는 그와 연결하여 사용하기 위한 프로그램을 포함하거나 저장할 수 있는 임의의 유형적(tangible) 및/또는 비일시적 매체일 수 있다.
본 발명의 태양을 위한 동작을 수행하기 위한 컴퓨터 프로그램 코드는 파이산(Python), 자바(Java), 스몰토크(Smalltalk), C++, C#, 오브젝티브 C(Objective C) 등과 같은 객체 지향 프로그래밍 언어, 종래의 절차형 프로그래밍 언어, 예컨대 "C" 프로그래밍 언어, 스크립팅 프로그래밍(scripting programming) 언어, 및/또는 다른 유사한 프로그래밍 언어를 포함한 하나 이상의 프로그래밍 언어들의 임의의 조합으로 기입될 수 있다. 프로그램 코드는 데이터 네트워크 등을 통해 사용자의 컴퓨터 및/또는 원격 컴퓨터 또는 서버 중 하나 이상에서 부분적으로 또는 전체적으로 실행될 수 있다.
본 명세서에서 사용되는 바와 같은 컴포넌트는 유형적, 물리적, 비일시적 디바이스를 포함한다. 예를 들어, 컴포넌트는 맞춤형 VLSI 회로, 게이트 어레이, 또는 다른 집적 회로를 포함한 하드웨어 로직 회로; 기성 반도체, 예컨대 로직 칩, 트랜지스터, 또는 다른 별개의 디바이스; 및/또는 다른 기계적 또는 전기적 디바이스로서 구현될 수 있다. 컴포넌트는, 또한, 프로그램가능 하드웨어 디바이스, 예컨대 필드 프로그램가능 게이트 어레이, 프로그램가능 어레이 로직, 프로그램가능 로직 디바이스 등으로 구현될 수 있다. 컴포넌트는 PCB(printed circuit board) 등의 전기 라인을 통해 하나 이상의 다른 컴포넌트와 전기적으로 통신하는 하나 이상의 실리콘 집적 회로 디바이스(예컨대, 칩, 다이, 다이 평면, 패키지) 또는 다른 별개의 전기 디바이스를 포함할 수 있다. 본 명세서에 기술되는 각각의 모듈은, 소정 실시예에서, 대안으로, 컴포넌트에 의해 구체화될 수 있거나 또는 컴포넌트로서 구현될 수 있다.
본 명세서에서 사용되는 바와 같은 회로는 전류를 위한 하나 이상의 경로를 제공하는 하나 이상의 전기 및/또는 전자 컴포넌트들의 세트를 포함한다. 소정 실시예에서, 회로는 전류를 위한 귀환 경로를 포함할 수 있어서, 회로는 폐루프이다. 그러나, 다른 실시예에서, 전류를 위한 귀환 경로를 포함하지 않는 컴포넌트들의 세트가 회로(예를 들어, 개루프)로 지칭될 수 있다. 예를 들어, 집적 회로는 집적 회로가 (전류를 위한 귀환 경로로서) 접지에 결합되는지 여부에 관계없이 회로로 지칭될 수 있다. 다양한 실시예에서, 회로는 집적 회로의 일부, 집적 회로, 집적 회로들의 세트, 집적 회로 디바이스를 갖거나 갖지 않는 비통합 전기 및/또는 전기 컴포넌트들의 세트 등을 포함할 수 있다. 일 실시예에서, 회로는 맞춤형 VLSI 회로, 게이트 어레이, 로직 회로, 또는 다른 집적 회로; 기성 반도체, 예컨대 로직 칩, 트랜지스터, 또는 다른 별개의 디바이스; 및/또는 다른 기계적 또는 전기적 디바이스를 포함할 수 있다. 회로는 또한 프로그램가능 하드웨어 디바이스, 예컨대 필드 프로그램가능 게이트 어레이, 프로그램가능 어레이 로직, 프로그램가능 로직 디바이스 등에서 합성 회로로서(예를 들어, 펌웨어, 넷리스트 등으로서) 구현될 수 있다. 회로는 PCB(printed circuit board) 등의 전기 라인을 통해 하나 이상의 다른 컴포넌트와 전기적으로 통신하는 하나 이상의 실리콘 집적 회로 디바이스(예컨대, 칩, 다이, 다이 평면, 패키지) 또는 다른 별개의 전기 디바이스를 포함할 수 있다. 본 명세서에 기술되는 각각의 모듈은, 소정 실시예에서, 회로에 의해 구체화될 수 있거나 또는 회로로서 구현될 수 있다.
본 명세서 전반에 걸친 "하나의 실시예", "실시예", 또는 유사한 언어에 대한 언급은 그 실시예와 관련하여 기술되는 특정한 특징, 구조, 또는 특성이 본 발명의 적어도 하나의 실시예에 포함됨을 의미한다. 따라서, 본 명세서 전반에 걸친 "하나의 실시예에서", "실시예에서", 그리고 유사한 언어의 문구의 등장은 모든 문구가 동일한 실시예를 지칭할 수 있지만 반드시 그러한 것은 아니며, 명시적으로 달리 특정되지 않는다면 "모든 실시예는 아니지만 하나 이상의 실시예"를 의미할 수 있다. 용어 "포함하는(including, comprising)", "갖는(having)" 및 이들의 변형은 명시적으로 달리 특정되지 않는다면 "~를 포함하지만 그로 제한되지 않음"을 의미한다. 아이템들의 열거된 목록은 명시적으로 달리 특정되지 않는다면 아이템들 중 임의의 것 또는 전부가 상호 배타적이고/이거나 상호 포괄적임을 암시하지 않는다. 단수형("a", "an", 및 "the")의 용어는, 또한, 명시적으로 달리 특정되지 않는다면, "하나 이상"을 지칭한다.
본 발명의 태양은 본 발명의 실시예에 따른 방법, 장치, 시스템, 및 컴퓨터 프로그램 제품의 개략적인 흐름도 및/또는 개략적인 블록도를 참조하여 하기에 기술된다. 개략적인 흐름도 및/또는 개략적인 블록도의 각각의 블록, 및 개략적인 흐름도 및/또는 개략적인 블록도 내의 블록들의 조합은 컴퓨터 프로그램 명령어에 의해 구현될 수 있음이 이해될 것이다. 이들 컴퓨터 프로그램 명령어는 머신을 생성하도록 컴퓨터의 프로세서 또는 다른 프로그램가능 데이터 프로세싱 장치에 제공되어, 프로세서 또는 다른 프로그램가능 데이터 프로세싱 장치를 통해 실행되는 명령어들이 개략적인 흐름도 및/또는 개략적인 블록도의 블록 또는 블록들에서 특정된 기능 및/또는 작용을 구현하기 위한 수단을 생성하게 할 수 있다.
또한, 일부 대안의 구현예에서, 블록에서 언급된 기능은 도면에서 언급된 순서를 벗어나서 발생할 수 있음에 유의해야 한다. 예를 들어, 연속으로 도시된 2개의 블록이 사실상 실질적으로 동시에 실행될 수 있거나, 또는 블록이, 때때로, 수반된 기능에 따라, 역순으로 실행될 수 있다. 도시된 도면의 하나 이상의 블록 또는 그들의 일부에 대해 함수, 로직, 또는 효과 면에서 등가인 다른 단계 및 방법이 고려될 수 있다. 다양한 화살표 타입 및 라인 타입이 흐름도 및/또는 블록도에서 채용될 수 있지만, 이들은 대응하는 실시예의 범주를 제한하지 않는 것으로 이해된다. 예를 들어, 화살표는 도시된 실시예의 열거된 단계들 사이의 특정되지 않은 지속기간의 대기 또는 모니터링 기간을 나타낼 수 있다.
하기의 상세한 설명에서, 그의 일부를 이루는 첨부 도면을 참조한다. 전술한 발명의 내용은 단지 예시적인 것이며, 어떠한 방식으로든 제한하는 것으로 의도되지 않는다. 전술된 예시적인 태양, 실시예, 및 특징 외에도, 추가의 태양, 실시예, 및 특징이 도면 및 하기의 상세한 설명을 참조하여 명백해질 것이다. 각각의 도면에서의 요소에 대한 설명은 선행 도면의 요소를 지칭할 수 있다. 유사한 도면 번호는 유사한 요소의 대안의 실시예를 포함하는 도면들 내의 유사한 요소를 지칭할 수 있다.
도 1은 온-다이 메모리 마이크로컨트롤러(150)를 위한 시스템(100)의 일 실시예의 블록도이다. 시스템(100)은 비휘발성 및/또는 휘발성 메모리 디바이스(120)의 메모리 매체(122)를 위한 하나 이상의 마이크로컨트롤러(150)를 포함한다. 마이크로컨트롤러(150)는 비휘발성 및/또는 휘발성 메모리 요소(123)의 일부일 수 있고, 비휘발성 및/또는 휘발성 메모리 매체 컨트롤러(126), 디바이스 드라이버 등과 통신할 수 있다. 일부 실시예에서, 마이크로컨트롤러(150)는 프로세서(111), 휘발성 메모리(112), 및 통신 인터페이스(113)를 포함할 수 있는, 컴퓨팅 디바이스(110)의 비휘발성 및/또는 휘발성 메모리 시스템(102) 상에서 적어도 부분적으로 동작하고/하거나 그와 통신할 수 있다. 프로세서(111)는 하나 이상의 중앙 프로세싱 유닛, 하나 이상의 범용 프로세서, 하나 이상의 특수 용도 프로세서, 하나 이상의 가상 프로세서(예컨대, 컴퓨팅 디바이스(110)가 호스트 내에서 동작하는 가상 머신일 수 있음), 하나 이상의 프로세서 코어 등을 포함할 수 있다. 통신 인터페이스(113)는 컴퓨팅 디바이스(110) 및/또는 메모리 컨트롤러(126)를 통신 네트워크(115), 예컨대 IP(Internet Protocol) 네트워크, SAN(Storage Area Network), 무선 네트워크, 유선 네트워크 등에 통신가능하게 결합하도록 구성된 하나 이상의 네트워크 인터페이스를 포함할 수 있다.
본 명세서에서 사용되는 바와 같은 마이크로컨트롤러(150)는 메모리 매체(122)(예를 들어, 메모리 요소(123) 또는 다른 집적 회로 디바이스)의 다이 및/또는 칩(123)과 같은, 집적 회로 디바이스의 하나 이상의 회로 또는 다른 로직 하드웨어를 포함한다. 예를 들어, 일 실시예에서, 마이크로컨트롤러(150)는 ASIC(application specific integrated circuit) 디바이스로서 제조된 FPGA(field programmable gate array)와 같은 프로그램가능 로직 디바이스 상에 배치 및/또는 라우팅된 합성가능한 로직(예를 들어, Verilog, VHDL(VHSIC hardware description language) 등과 같은 하드웨어 기술 언어; 게이트-레벨 넷리스트; 소프트 코어; 및/또는 다른 로직 설계에서 정의됨); 및/또는 다른 집적 회로 디바이스(123)를 포함할 수 있다. 추가 실시예에서, 마이크로컨트롤러(150)는 아날로그 및/또는 혼합 신호 로직(예를 들어, 트랜지스터-레이아웃 포맷, ASIC, 이산 로직 컴포넌트, 하드 코어, 및/또는 다른 집적 회로 디바이스(123)에서 정의 및/또는 설계됨)을 포함할 수 있다.
마이크로컨트롤러(150)는 관리 기능 등과 같은, 메모리 매체(122)의 메모리 요소(123)에 대한 하나 이상의 작업을 수행 및/또는 제어할 수 있다. 마이크로컨트롤러(150)는 작업 또는 동작을 수행하기 위해 마이크로코드 또는 다른 컴퓨터 실행가능 코드(예를 들어, 명령어 세트)를 프로세싱 및/또는 실행하는 하나 이상의 프로세싱 유닛, 프로세싱 코어 등을 포함할 수 있다. 이러한 방식으로, 새로운 집적 회로 디바이스를 제조하거나 펌웨어를 업그레이드하는 대신에 또는 그에 더하여, 마이크로컨트롤러(150)의 하나 이상의 기능 및/또는 작업은 마이크로컨트롤러(150)의 마이크로코드 또는 다른 컴퓨터 실행가능 코드를 변경 및/또는 업데이트함으로써 업데이트될 수 있다. 마이크로컨트롤러(150)는 휘발성 및/또는 비휘발성 메모리 또는 저장소를 포함할 수 있고, 마이크로컨트롤러(150)는 이를 이용하여 마이크로코드를 저장하거나, 메모리 매체(122)의 어레이에 대한 및/또는 그로부터의 데이터를 저장하거나, 설정 및/또는 구성 파라미터를 저장하거나, 등등을 할 수 있다.
소정 실시예에서, 메모리 디바이스(120) 및/또는 메모리 요소(123)는 다양한 애플리케이션 및/또는 환경에서 사용될 수 있다. 다양한 온도 및 다른 환경 조건에서 적절하게 기능하기 위해, 마이크로컨트롤러(150) 및/또는 메모리 요소(123)의 클록 레이트가 인위적으로 낮게 설정되어, 광범위한 동작 조건에서 안정성, 신뢰성 등을 개선할 수 있다. 예를 들어, 다양한 실시예에서, 마이크로컨트롤러(150)에 대한 클록 레이트는 약 50 ㎒ 미만, 약 40 ㎒ 미만, 약 30 ㎒ 미만, 약 20 ㎒ 미만, 약 15 ㎒ 미만, 약 14 ㎒, 약 13.5 ㎒, 약 13 ㎒, 약 12.5 ㎒, 약 12 ㎒, 약 12 ㎒ 미만 등으로 설정될 수 있다.
그러나, 소정 실시예에서, 마이크로컨트롤러(150)에 대한 그러한 낮은 클록 레이트는 마이크로컨트롤러(150)가 데이터 동작의 레이턴시를 증가시키지 않고 단일 프로세싱 유닛을 이용하여 메모리 매체(122)에 대해 데이터 동작을 수행할 수 있는 클록 레이트보다 낮게 설정될 수 있다(예를 들어, 단일 프로세싱 유닛 또는 코어는 판독 및/또는 기입 동작을 늦추지 않고 비휘발성 메모리 매체(123)로부터 데이터를 판독 및/또는 그에 데이터를 기입하기에는 클록 레이트 또는 주파수에서 충분히 빠르지 않아, 마이크로컨트롤러(150)가 병목 등이 되게 할 수 있다). 일 실시예에서, 마이크로컨트롤러(150)는 메모리 매체(122)의 어레이에 대해 상이한 카테고리 및/또는 부분의 작업들을 병렬로 수행하는 복수의 프로세싱 유닛 및/또는 코어를 포함하거나, 그와 연관되거나, 및/또는 그에 액세스할 수 있다(예를 들어, 메모리 매체(122) 등에 대한 액세스 레이턴시에 대한 느린 마이크로컨트롤러 클록 레이트의 영향을 감소시키고/시키거나 제거하기 위해).
본 명세서에서 사용되는 바와 같은 프로세싱 유닛은 하나 이상의 마이크로컨트롤러(150)와 연관되고 하나 이상의 커맨드 및/또는 명령어(예를 들어, 마이크로코드, 명령어 세트 등)를 실행 및/또는 프로세싱할 수 있는 서브-블록 및/또는 컴포넌트를 포함한다. 프로세싱 유닛은 마이크로컨트롤러(150)의 일부일 수 있거나, 다수의 마이크로컨트롤러(150)에 의해 공유될 수 있거나, 등등일 수 있다. 프로세싱 유닛은 프로세싱 코어, 소프트 코어, 하드 코어, 합성가능 로직, 아날로그 및/또는 혼합 신호 로직, 실행 유닛, 모듈, 서브-컴포넌트, 및/또는 명령어를 실행할 수 있는 마이크로컨트롤러(150)의 다른 부분을 포함할 수 있다. 일 실시예에서, 상이한 프로세싱 유닛들은 커맨드 및/또는 명령어를 독립적으로 수신하기 위해 별개의 논리적 및/또는 물리적 인터페이스(예를 들어, 버스, 제어 라인, 어드레스 및/또는 어드레스 공간 등)를 가질 수 있다. 다른 실시예들에서, 상이한 프로세싱 유닛들은 논리적 및/또는 물리적 인터페이스를 공유할 수 있고, 카테고리, 커맨드 타입, 명령어 세트, 플래그, 식별자 등에 의해 수신된 커맨드들 및/또는 명령어들을 동적으로 구별할 수 있다.
마이크로컨트롤러(150)의 상이한 프로세싱 유닛들 및/또는 코어들은 상이한 프로세싱 유닛들 및/또는 코어들에 할당된 작업들의 카테고리 및/또는 타입에 기초하여, 상이한 명령어 세트들(예를 들어, 상이한 마이크로코드 커맨드들 및/또는 명령어들)을 지원할 수 있다. 본 명세서에서 사용되는 바와 같은, 프로세싱 유닛에 대한 명령어 세트는 프로세싱 유닛에 의해 지원되고/되거나 그와 호환되는 하나 이상의 커맨드 및/또는 명령어를 포함할 수 있다. 다양한 실시예에서, 명령어 세트는 하나 이상의 마이크로코드 명령어, 어셈블리 코드 명령어, 기계 명령어, 메모리 명령어, 디바이스 명령어, 제어 및/또는 관리 명령어 등을 포함 및/또는 지원할 수 있다.
일 실시예에서, 하나 이상의 프로세싱 유닛은 흐름 제어 카테고리의 작업들(예를 들어, 흐름 제어 명령어 세트)을 수행할 수 있다. 소정 실시예에서, 하나 이상의 프로세싱 유닛은 타이밍 제어 카테고리의 작업들(예를 들어, 타이밍 제어 명령어 세트)을 수행할 수 있다. 추가 실시예에서, 하나 이상의 프로세싱 유닛은 데이터 래치 제어 카테고리의 작업들(예를 들어, 데이터 래치 제어 명령어 세트)을 수행할 수 있다. 일 실시예에서, 하나 이상의 프로세싱 유닛은 전압 제어 카테고리의 작업들(예를 들어, 전압 제어 명령어 세트)을 수행할 수 있다. 소정 실시예에서, 하나 이상의 프로세싱 유닛은 BIST(built-in self-test) 카테고리의 작업들(예를 들어, 자체 테스트 명령어 세트)을 수행할 수 있다. 일 실시예에서, 하나 이상의 프로세싱 유닛은 하나 이상의 다른 타입 및/또는 카테고리의 작업들, 명령어 세트들 등을 수행할 수 있다. 2개의 명령어 세트는, 소정 실시예에서, 다른 명령어 세트에 포함되지 않은 하나의 명령어 세트에 포함된 적어도 하나의 명령어 및/또는 커맨드에 응답하여 상이할 수 있다. 일 실시예에서, 마이크로컨트롤러(150)는 마이크로컨트롤러(150)와 연관되고/되거나 마이크로컨트롤러(150)가 이용할 수 있는 프로세싱 유닛들에 의해 지원되는 상이한 명령어 세트들의 조합된 합 및/또는 합계를 포함하는 명령어 세트를 포함하고/하거나 지원한다.
일 실시예에서, 마이크로컨트롤러(150)는 (예를 들어, 도 2에 도시된 바와 같이) 메모리 매체(122)의 어레이에 인접하여 및/또는 그 옆에, 메모리 요소(123)의 에지 및/또는 주변에 또는 그를 향해 배치될 수 있다. 추가 실시예에서, 마이크로컨트롤러(150)는 메모리 매체(122)의 어레이와는 상이한 집적 회로 디바이스(123)의 레벨, 층, 및/또는 평면 상에 배치될 수 있다(예를 들어, 어레이 아래에, 어레이와 평행하고 그로부터 오프셋되는 등의 CMOS 또는 다른 회로로서). 소정 실시예에서, 메모리 매체(122)의 어레이와는 상이한 집적 회로 디바이스(123)의 레벨 상에 마이크로컨트롤러(150)를 형성 및/또는 배치하는 것은, 집적 회로 디바이스(123)의 공간을 절약하여, 더 많은 회로(예를 들어, 더 많은 또는 더 큰 마이크로컨트롤러(150) 및/또는 마이크로컨트롤러 코어(150), 프로세싱 유닛, 메모리 매체(122)의 더 큰 어레이 등), 더 작은 집적 회로 디바이스(123) 등을 허용할 수 있다. 소정 실시예에서, 집적 회로 디바이스(123)의 상이한 레벨들 사이의 스루-실리콘 비아(예를 들어, TSV)는 하나 이상의 마이크로컨트롤러(150)와 메모리 매체(122)의 어레이 사이의 전기적 접속을 제공할 수 있다.
소정 실시예에서, 집적 회로 디바이스(123)는 하나 이상의 추가 마이크로컨트롤러(150), 마이크로컨트롤러 코어(150) 등을 포함할 수 있다. 상이한 마이크로컨트롤러들(150) 및/또는 마이크로컨트롤러 코어들(150)은 서로 동일한 레벨 및/또는 층 상에 있을 수 있거나(예를 들어, 메모리 어레이와는 상이한 레벨 및/또는 층, 메모리 어레이의 레벨에 평행하고 그로부터 오프셋되는 등), 다수의 상이한 레벨 및/또는 층 상에 있을 수 있거나(예를 들어, 메모리 어레이와는 상이한 다수의 레벨 및/또는 층, 메모리 어레이의 레벨에 평행하고 그로부터 그리고 서로 오프셋되는 등), 메모리 어레이와 동일한 하나 이상의 레벨 및/또는 층 상에 있을 수 있거나, 등등일 수 있다.
일 실시예에서, 집적 회로 디바이스(123)의 공간을 절약하기 위해, 하나 이상의 추가 마이크로컨트롤러(150) 및/또는 마이크로컨트롤러 코어(150)는 더 적은 프로세싱 유닛을 포함할 수 있고, 마이크로컨트롤러(150) 및/또는 마이크로컨트롤러 코어(150)보다 더 적은 타입 및/또는 카테고리의 작업 등을 수행하도록 구성된 프로세싱 유닛을 포함할 수 있다(예를 들어, 더 적은 프로세싱 유닛 등을 포함하는 하나 이상의 2차, 부분, 더 작은, 및/또는 축소된 마이크로컨트롤러 코어(150)를 갖는 1차, 주, 제어, 전체, 및/또는 완전한 마이크로컨트롤러 코어(150)).
예를 들어, 제1 마이크로컨트롤러(150) 및/또는 마이크로컨트롤러 코어(150)는 메모리 매체(122)의 어레이에 대해 자체 테스트 동작을 수행하도록 구성된 내장 자체 테스트 프로세싱 유닛을 포함하고/하거나 그와 통신할 수 있는 반면, 하나 이상의 추가 마이크로컨트롤러(150) 및/또는 마이크로컨트롤러 코어(150)는 내장 자체 테스트 프로세싱 유닛을 갖지 않을 수 있다. 추가 실시예에서, 제1 마이크로컨트롤러(150) 및/또는 마이크로컨트롤러 코어(150)는 메모리 어레이에 대해 프로그램/기입 및 판독 동작 둘 모두를 수행하도록 구성되는 반면, 하나 이상의 추가 마이크로컨트롤러(150) 및/또는 마이크로컨트롤러 코어(150)는 메모리 어레이에 대해 판독 동작을 수행하도록, 그러나 프로그램/기입 동작은 수행하지 않도록 구성될 수 있다(예를 들어, 그리고 제1 마이크로컨트롤러(150)보다 작은 풋프린트 및/또는 크기를 가질 수 있음).
소정 실시예에서, 하나 이상의 마이크로컨트롤러(150)(예를 들어, 1차, 주, 제어, 전체, 및/또는 완전한 마이크로컨트롤러 코어(150) 등)의 제1 세트는 메모리 매체(122)의 전체 어레이(예를 들어, 집적 회로 디바이스(123)의 메모리 셀들의 각각의 채널, 서브세트, 및/또는 영역)에 대해 프로그램/기입 동작을 수행할 수 있는 반면, 하나 이상의 마이크로컨트롤러(150)의 제1 세트 및 하나 이상의 마이크로컨트롤러(150)(예를 들어, 더 적은 프로세싱 유닛 등을 포함하는 하나 이상의 2차, 부분, 더 작은, 및/또는 축소된 마이크로컨트롤러 코어(150))의 제2 세트는 메모리 매체(122)의 어레이의 상이한 부분들에 대해 판독 동작을 수행할 수 있다(예를 들어, 집적 회로 디바이스(123)의 상이한 채널들, 서브세트들 및/또는 영역들에 할당됨).
메모리 디바이스(120)는, 다양한 실시예에서, 컴퓨팅 디바이스(110)에 대해 하나 이상의 상이한 위치에 배치될 수 있다. 일 실시예에서, 메모리 디바이스(120)는 하나 이상의 비휘발성 및/또는 휘발성 메모리 요소(123), 예컨대 하나 이상의 PCB, 저장소 하우징, 및/또는 다른 기계적 및/또는 전기적 지지 구조 상에 배치되는 반도체 칩 또는 패키지, 또는 다른 집적 회로 디바이스를 포함한다. 예를 들어, 메모리 디바이스(120)는 하나 이상의 DIMM(direct inline memory module) 카드, 하나 이상의 확장 카드 및/또는 도터 카드, 메모리 카드, USB(universal serial bus) 드라이브, SSD(solid-state-drive) 또는 다른 하드 드라이브 디바이스를 포함할 수 있고/있거나, 다른 메모리 및/또는 저장소 폼 팩터를 가질 수 있다. 메모리 디바이스(120)는 컴퓨팅 디바이스(110)와 통합될 수 있고/있거나 컴퓨팅 디바이스(110)의 마더보드 상에 실장될 수 있거나, 컴퓨팅 디바이스(110)의 포트 및/또는 슬롯 내에 설치될 수 있거나, 상이한 컴퓨팅 디바이스(110) 및/또는 네트워크(115) 상의 전용 저장 어플라이언스 상에 설치될 수 있거나, 외부 버스(예컨대, 외부 하드 드라이브)를 통해 컴퓨팅 디바이스(110)와 통신할 수 있거나, 등등일 수 있다.
메모리 디바이스(120)는, 일 실시예에서, 프로세서(111)의 메모리 버스 상에(예컨대, 휘발성 메모리(112)와 동일한 메모리 버스 상에, 휘발성 메모리(112)와는 상이한 메모리 버스 상에, 휘발성 메모리(112) 대신에, 등등으로) 배치될 수 있다. 추가 실시예에서, 메모리 디바이스(120)는 PCI Express 또는 PCIe(peripheral component interconnect express) 버스, SATA(serial Advanced Technology Attachment) 버스, PATA(parallel Advanced Technology Attachment) 버스, SCSI(small computer system interface) 버스, 파이어와이어 버스, 파이버 채널 접속부, USB(Universal Serial Bus), PCIe-AS(PCIe Advanced Switching) 버스 등과 같은 컴퓨팅 디바이스(110)의 주변기기용 버스 상에 배치될 수 있다. 다른 실시예에서, 메모리 디바이스(120)는 이더넷 네트워크, 인피니밴드(Infiniband) 네트워크, 네트워크(115)를 통한 SCSI RDMA, SAN(storage area network), LAN(local area network), WAN(wide area network), 예컨대 인터넷, 다른 유선 및/또는 무선 네트워크(115) 등과 같은 데이터 네트워크(115) 상에 배치될 수 있다.
컴퓨팅 디바이스(110)는 비일시적 컴퓨터 판독가능 저장 매체(114)를 추가로 포함할 수 있다. 컴퓨터 판독가능 저장 매체(114)는 컴퓨팅 디바이스(110)(예컨대, 프로세서(111))가 본 명세서에 개시되는 방법들 중 하나 이상의 방법의 단계를 수행하게 하도록 구성된 실행가능 명령어를 포함할 수 있다. 대안으로, 또는 추가로, 마이크로컨트롤러(150)는 비일시적 저장 매체(114)에 저장되는 하나 이상의 컴퓨터 판독가능 명령어를 포함할 수 있다.
일 실시예에서, 마이크로컨트롤러(150)는 비휘발성 및/또는 휘발성 메모리 요소(123)의 로직 하드웨어, 다른 프로그램가능 로직, 비휘발성 및/또는 휘발성 메모리 요소(123)를 위한 펌웨어, 비휘발성 및/또는 휘발성 메모리 요소(123)에 의한 실행을 위한 마이크로코드 등을 포함할 수 있다. 다른 실시예에서, 마이크로컨트롤러(150)는 비휘발성 및/또는 휘발성 메모리 요소(123)의 로직 하드웨어에 의한 실행을 위해(예를 들어, 마이크로컨트롤러(150) 자체, 프로세서(111) 등에 의한 실행을 위해) 컴퓨터 판독가능 저장 매체에 저장된 실행가능 소프트웨어 코드(예를 들어, 마이크로코드)를 적어도 부분적으로 포함할 수 있다. 추가 실시예에서, 마이크로컨트롤러(150)는 실행가능 소프트웨어 코드와 로직 하드웨어 양측의 조합을 포함할 수 있다.
일 실시예에서, 마이크로컨트롤러(150)는 버스들(125, 127), 메모리 매체 컨트롤러(126) 등을 통해 디바이스 드라이버 또는 다른 실행가능 애플리케이션으로부터 요청 및/또는 커맨드를 수신하도록 구성된다. 마이크로컨트롤러(150)는 버스(125)를 통해 디바이스 드라이버 및/또는 저장 클라이언트(116)로/로부터 데이터를 이송하도록 추가로 구성될 수 있다. 따라서, 마이크로컨트롤러(150)는, 일부 실시예에서, 저장 요청 및 연관된 데이터의 이송을 용이하게 하기 위해 하나 이상의 DMA(direct memory access) 모듈, 원격 DMA 모듈, 버스 컨트롤러, 브리지, 버퍼 등을 포함할 수 있고/있거나 그들과 통신할 수 있다. 다른 실시예에서, 마이크로컨트롤러(150)는 저장 클라이언트(116)로부터의 API 호출로서, IO-CTL 커맨드 등으로서 저장 요청 및/또는 리프레시 커맨드를 수신할 수 있다.
일 실시예에서, 마이크로컨트롤러(150)는 메모리 요소(123)(예를 들어, 온-다이 컨트롤러 및/또는 다른 로직 하드웨어 또는 실행가능 코드) 상에 통합되고 디바이스 컨트롤러(126), 호스트 디바이스(110) 및/또는 프로세서(111)로부터 커맨드를 수신한다. 다른 실시예들에서, 마이크로컨트롤러(150)의 일부는 디바이스 컨트롤러(126) 또는 다른 인터포저 상에 배치될 수 있고 마이크로컨트롤러(150)의 일부는 메모리 요소(123) 등 상에 배치될 수 있다.
다양한 실시예에 따르면, 메모리 컨트롤러(126) 및/또는 마이크로컨트롤러(150)는 하나 이상의 메모리 디바이스(120) 및/또는 메모리 요소(123)를 관리할 수 있다. 메모리 디바이스(들)(120)는 복수의 어드레싱가능 매체 저장 위치에 배열되고/되거나 격납되는 솔리드 스테이트 저장 디바이스(들) 및/또는 반도체 저장 디바이스(들)와 같은 기록, 메모리 및/또는 저장 디바이스들을 포함할 수 있다. 본 명세서에서 사용되는 바와 같이, 매체 저장 위치는 메모리의 임의의 물리적 유닛(예컨대, 메모리 디바이스(120) 상의 임의의 수량의 물리적 저장 매체)을 지칭한다. 메모리 유닛 및/또는 영역은 하기를 포함할 수 있지만, 이들로 제한되지 않는다: 페이지, 메모리 분할, 블록, 섹터, 물리적 저장 위치들의 모음 또는 세트(예컨대, 로직 페이지, 로직 블록) 등.
디바이스 드라이버, 메모리 매체 컨트롤러(126), 및/또는 마이크로컨트롤러(150)는, 소정 실시예에서, 로직 어드레스 공간(134)을 저장 클라이언트(116)에 제시할 수 있다. 본 명세서에서 사용되는 바와 같이, 로직 어드레스 공간(134)은 메모리 리소스의 로직 표현을 지칭한다. 로직 어드레스 공간(134)은 복수의(예컨대, 소정 범위의) 로직 어드레스를 포함할 수 있다. 본 명세서에서 사용되는 바와 같이, 로직 어드레스는 하기를 포함하지만 이들로 제한되지 않는 메모리 리소스(예컨대, 데이터)를 참조하기 위한 임의의 식별자를 지칭한다: LBA(logical block address), CHS(cylinder/head/sector) 어드레스, 파일명, 객체 식별자, inode, UUID(Universally Unique Identifier), GUID(Globally Unique Identifier), 해시 코드, 시그너처, 인덱스 입력, 범위, 규모 등.
메모리 디바이스(120)를 위한 디바이스 드라이버는 로직-물리적 어드레스 맵핑 구조와 같은 메타데이터(135)를 유지하여, 로직 어드레스 공간(134)의 로직 어드레스를 메모리 디바이스(들)(120) 상의 매체 저장 위치에 맵핑시킬 수 있다. 디바이스 드라이버는 하나 이상의 저장 클라이언트(116)에 저장 서비스를 제공하도록 구성될 수 있다. 저장 클라이언트(116)는 컴퓨팅 디바이스(110) 상에서 동작하는 로컬 저장 클라이언트(116), 및/또는 네트워크(115) 및/또는 네트워크 인터페이스(113)를 통해 액세스가능한 원격의 저장 클라이언트(116)를 포함할 수 있다. 저장 클라이언트(116)는 하기를 포함할 수 있지만 이들로 제한되지 않는다: 운영체제, 파일 시스템, 데이터베이스 애플리케이션, 서버 애플리케이션, 커널 레벨(kernel-level) 프로세스, 사용자 레벨 프로세스, 애플리케이션 등.
디바이스 드라이버는 하나 이상의 메모리 디바이스(120)에 통신가능하게 결합될 수 있다. 하나 이상의 메모리 디바이스(120)는 하기를 포함하지만 이들로 제한되지 않는 상이한 타입의 메모리 디바이스를 포함할 수 있다: 솔리드 스테이트 저장 디바이스, 반도체 저장 디바이스, SAN 저장 리소스, 휘발성 메모리 디바이스, 비휘발성 메모리 디바이스 등. 하나 이상의 메모리 디바이스(120)는 하나 이상의 각자의 메모리 매체 컨트롤러(126) 및 메모리 매체(122)를 포함할 수 있다. 디바이스 드라이버는 전통적인 블록 I/O 인터페이스(131)를 통해 하나 이상의 메모리 디바이스(120)에 대한 액세스를 제공할 수 있다. 추가로, 디바이스 드라이버는 SCM 인터페이스(132)를 통한 향상된 기능에 대한 액세스를 제공할 수 있다. 메타데이터(135)는 블록 I/O 인터페이스(131), SCM 인터페이스(132), 캐시 인터페이스(133), 또는 다른 관련된 인터페이스 중 임의의 것을 통해 수행되는 데이터 동작을 관리하고/하거나 추적하는 데 이용될 수 있다.
캐시 인터페이스(133)는 메모리 디바이스(120)를 위한 디바이스 드라이버를 통해 액세스가능한 캐시 특정 피처를 노출시킬 수 있다. 또한, 일부 실시예에서, 저장 클라이언트(116)에게 제시되는 SCM 인터페이스(132)는 하나 이상의 메모리 디바이스(120) 및/또는 하나 이상의 메모리 매체 컨트롤러(126)에 의해 구현되는 데이터 변환에 대한 액세스를 제공한다.
디바이스 드라이버는 하나 이상의 인터페이스를 통해 로직 어드레스 공간(134)을 저장 클라이언트(116)에게 제시할 수 있다. 상기에서 논의된 바와 같이, 로직 어드레스 공간(134)은 하나 이상의 메모리 디바이스(120) 상의 각자의 매체 위치에 각각 대응하는 복수의 로직 어드레스를 포함할 수 있다. 디바이스 드라이버는 로직 어드레스와 매체 위치 사이의 애니-투-애니(any-to-any) 맵핑 등을 포함하는 메타데이터(135)를 유지할 수 있다.
디바이스 드라이버는 하기를 포함할 수 있지만 이들로 제한되지 않는 버스(125)를 통해 데이터, 커맨드, 및/또는 질의(query)를 하나 이상의 메모리 디바이스(120)로 이송하도록 구성된 메모리 디바이스 인터페이스(139)를 추가로 포함할 수 있고/있거나 그와 통신할 수 있다: 프로세서(111)의 메모리 버스, PCI Express 또는 PCIe(peripheral component interconnect express) 버스, 직렬 ATA(Advanced Technology Attachment) 버스, 병렬 ATA 버스, SCSI(small computer system interface), 파이어와이어, 파이버 채널, USB(Universal Serial Bus), PCIe-AS(PCIe Advanced Switching) 버스, 네트워크(115), 인피니밴드, SCSI RDMA 등. 메모리 디바이스 인터페이스(139)는 IO-CTL 커맨드(들), IO-CTL 커맨드 확장(들), 원격 직접 메모리 액세스 등을 이용하여 하나 이상의 메모리 디바이스(120)와 통신할 수 있다.
통신 인터페이스(113)는 컴퓨팅 디바이스(110) 및/또는 메모리 컨트롤러(126)를 네트워크(115)에 그리고/또는 하나 이상의 원격 네트워크 액세스가능 저장 클라이언트(116)에 통신가능하게 결합하도록 구성된 하나 이상의 네트워크 인터페이스를 포함할 수 있다. 저장 클라이언트(116)는 컴퓨팅 디바이스(110) 상에서 동작하는 로컬 저장 클라이언트(116), 및/또는 네트워크(115) 및/또는 네트워크 인터페이스(113)를 통해 액세스가능한 원격의 저장 클라이언트(116)를 포함할 수 있다. 메모리 컨트롤러(126)는 하나 이상의 메모리 디바이스(120)의 일부이고/이거나 그와 통신한다. 도 1은 단일 메모리 디바이스(120)를 도시하지만, 본 발명은 이와 관련하여 제한되지 않으며 임의의 수의 메모리 디바이스(120), 하나 이상의 휘발성 메모리 디바이스(120)와 하나 이상의 비휘발성 메모리 디바이스(120)의 조합 등을 포함하도록 적응될 수 있다.
메모리 디바이스(120)는 메모리 매체(122)의 하나 이상의 요소(123)를 포함할 수 있다. 일 실시예에서, 메모리 매체(122)의 요소(123)는 RAM(random access memory), DRAM(dynamic RAM), SDRAM(synchronous DRAM), DDR(double data rate) SDRAM, SRAM(static RAM), T-RAM(thyristor RAM), Z-RAM(zero-capacitor RAM) 등과 같은 휘발성 메모리 매체(122)를 포함한다. 소정 실시예에서, 메모리 매체(122)의 요소(123)는 ReRAM, 멤리스터(Memristor) 메모리, 프로그램가능 금속화 셀 메모리, 상변화 메모리(PCM, PCME, PRAM, PCRAM, 오보닉(ovonic) 통합 메모리, 칼코겐화물 RAM, 또는 C-RAM), NAND 플래시 메모리(예컨대, 2D NAND 플래시 메모리, 3D NAND 플래시 메모리), NOR 플래시 메모리, 나노 RAM 또는 NRAM(nano random access memory), 나노결정 유선 기반 메모리, 실리콘 산화물 기반 10 나노미터 미만 프로세스 메모리, 그래핀(graphene) 메모리, 실리콘-산화물-질화물-산화물-실리콘(SONOS) 메모리, 프로그램가능 금속화 셀(PMC) 메모리, CBRAM(conductive-bridging RAM), MRAM(magneto-resistive RAM), 자기 저장 매체(예컨대, 하드 디스크, 테이프), 광학 저장 매체 등과 같은 비휘발성 메모리 매체(122)를 포함한다. 메모리 매체(122)의 하나 이상의 요소(123)는, 소정 실시예에서, SCM(storage class memory)을 포함한다.
NAND 플래시와 같은 레거시 기술이 블록 및/또는 페이지 어드레싱가능할 수 있지만, 저장 클래스 메모리는, 일 실시예에서, 바이트 어드레싱가능하다. 추가 실시예에서, 저장 클래스 메모리는 NAND 플래시보다 더 빠를 수 있고/있거나 그보다 더 긴 수명(예컨대, 내구성)을 가질 수 있거나; DRAM보다 더 적은 비용을 들일 수 있고/있거나, 그보다 더 적은 전력을 사용할 수 있고/있거나, 그보다 더 높은 저장 밀도를 가질 수 있거나; 다른 기술에 비해 하나 이상의 다른 이점 또는 개선점을 제공할 수 있다. 예를 들어, 저장 클래스 메모리는 ReRAM, 멤리스터 메모리, 프로그램가능 금속화 셀 메모리, 상변화 메모리, 나노 RAM, 나노결정 유선 기반 메모리, 실리콘 산화물 기반 10 나노미터 미만 프로세스 메모리, 그래핀 메모리, SONOS 메모리, PMC 메모리, CBRAM, MRAM, 및/또는 이들의 변형의 하나 이상의 비휘발성 메모리 요소(123)를 포함할 수 있다.
비휘발성 메모리 매체(122)가 본 명세서에서 "메모리 매체"로 지칭되지만, 다양한 실시예에서, 비휘발성 메모리 매체(122)는, 보다 일반적으로, 데이터를 기록할 수 있는 하나 이상의 비휘발성 기록 매체를 포함할 수 있는데, 이는 비휘발성 메모리 매체, 비휘발성 저장 매체 등으로 지칭될 수 있다. 또한, 비휘발성 메모리 디바이스(120)는, 다양한 실시예에서, 비휘발성 기록 디바이스, 비휘발성 메모리 디바이스, 비휘발성 저장 디바이스 등을 포함할 수 있다. 유사하게, 비휘발성 메모리 요소(123)는, 다양한 실시예에서, 비휘발성 기록 요소, 비휘발성 메모리 요소, 비휘발성 저장 요소 등을 포함할 수 있다.
비휘발성 메모리 매체(122)는 하기를 포함할 수 있지만 이들로 제한되지 않는 하나 이상의 비휘발성 메모리 요소(123)를 포함할 수 있다: 칩, 패키지, 평면, 다이 등. 비휘발성 메모리 매체 컨트롤러(126)는 비휘발성 메모리 매체(122) 상에서의 데이터 동작을 관리하도록 구성될 수 있고, 하나 이상의 프로세서, 프로그램가능 프로세서(예컨대, FPGA), ASIC, 마이크로컨트롤러 등을 포함할 수 있다. 일부 실시예에서, 비휘발성 메모리 매체 컨트롤러(126)는 비휘발성 메모리 매체(122) 상에 데이터를 저장하고/하거나 그로부터 데이터를 판독하도록, 비휘발성 메모리 디바이스(120)로/로부터 데이터를 이송하도록, 등등이도록 구성된다.
비휘발성 메모리 매체 컨트롤러(126)는 버스(127)를 통해 비휘발성 메모리 매체(122)에(예컨대, 마이크로컨트롤러(150)에) 통신가능하게 결합될 수 있다. 버스(127)는 비휘발성 메모리 요소(123) 및/또는 연관된 마이크로컨트롤러(150)로/로부터 데이터를 통신하기 위한 I/O 버스를 포함할 수 있다. 버스(127)는 비휘발성 메모리 요소(123) 및/또는 마이크로컨트롤러(150)에 어드레싱 및 다른 커맨드 및 제어 정보를 통신하기 위한 제어 버스를 추가로 포함할 수 있다. 일부 실시예에서, 버스(127)는 비휘발성 메모리 요소들(123)(예컨대, 마이크로컨트롤러(150))을 병렬로 비휘발성 메모리 매체 컨트롤러(126)에 통신가능하게 결합시킬 수 있다. 이러한 병렬 액세스는 비휘발성 메모리 요소(123)가 그룹으로서 관리되어 로직 메모리 요소(129)를 형성하는 것을 허용할 수 있다. 로직 메모리 요소는 각각의 로직 메모리 유닛(예컨대, 로직 페이지) 및/또는 로직 메모리 분할(예컨대, 로직 블록) 내에 격납될 수 있다. 로직 메모리 유닛은 각각의 비휘발성 메모리 요소의 물리적 메모리 유닛들을 논리적으로 조합함으로써 형성될 수 있다.
비휘발성 메모리 컨트롤러(126) 및/또는 마이크로컨트롤러(150)는 컴퓨팅 디바이스(110) 상에서 실행되는 디바이스 드라이버를 포함할 수 있고/있거나 그와 통신할 수 있다. 디바이스 드라이버는 하나 이상의 인터페이스(131, 132, 및/또는 133)를 통해 저장 클라이언트(116)에게 저장 서비스를 제공할 수 있다. 일부 실시예에서, 디바이스 드라이버는 블록-디바이스 I/O 인터페이스(131)를 제공하는데, 이를 통해 저장 클라이언트(116)는 블록-레벨 I/O 동작을 수행한다. 대안으로, 또는 추가로, 디바이스 드라이버는 다른 저장 서비스를 저장 클라이언트(116)에 제공할 수 있는 SCM(storage class memory) 인터페이스(132)를 제공할 수 있다. 일부 실시예에서, SCM 인터페이스(132)는 블록 디바이스 인터페이스(131)에 대한 확장을 포함할 수 있다(예컨대, 저장 클라이언트(116)는 블록 디바이스 인터페이스(131)에 대한 확장 또는 추가를 통해 SCM 인터페이스(132)에 액세스할 수 있음). 대안으로, 또는 추가로, SCM 인터페이스(132)는 별개의 API, 서비스, 및/또는 라이브러리로서 제공될 수 있다. 디바이스 드라이버는 비휘발성 메모리 시스템(102)을 사용하여 데이터를 캐싱하기 위한 캐시 인터페이스(133)를 제공하도록 추가로 구성될 수 있다. 디바이스 드라이버는, 전술된 바와 같이, 버스(125)를 통해 데이터, 커맨드, 및/또는 질의를 비휘발성 메모리 매체 컨트롤러(126) 및/또는 마이크로컨트롤러(150)로 이송하도록 구성된 비휘발성 메모리 디바이스 인터페이스(139)를 추가로 포함할 수 있다.
도 2는 하나 이상의 마이크로컨트롤러(150)와 함께 하나 이상의 메모리 다이 또는 칩(212)을 포함할 수 있는 비휘발성 저장 디바이스(210)의 실시예를 도시한다. 비휘발성 저장 디바이스(210)는 도 1을 참조하여 설명된 비휘발성 메모리 디바이스(120)와 실질적으로 유사할 수 있다. 도 2의 하나 이상의 마이크로컨트롤러(150)는 메모리 다이 및/또는 칩(212)의 주변 쪽에(예를 들어, 집적 회로 디바이스(123) 내의 메모리 어레이(200)와 동일한 물리적 레벨에) 도시되어 있지만, 다른 실시예들에서, 하나 이상의 마이크로컨트롤러(150)는, 도 7에 도시된 바와 같이, 메모리 어레이(200)와는 상이한 메모리 다이 및/또는 칩(212)의 물리적 레벨에 배치될 수 있다(예를 들어, 집적 회로 디바이스(123) 내의 메모리 어레이(200)의 레벨에 평행하고 그로부터 오프셋되어).
메모리 다이(212)는, 일부 실시예에서, 메모리 셀들의 어레이(200)(예를 들어, 2차원 또는 3차원), 온-다이 컨트롤러(220), 및 판독/기입 회로(230A/230B)를 포함한다. 일 실시예에서, 다양한 주변기기 회로에 의한 메모리 어레이(200)에의 액세스는 어레이의 반대측들에 대칭 방식으로 구현되어, 각각의 측의 액세스 라인 및 회로의 밀도가 절반만큼 감소되게 한다. 판독/기입 회로(230A/230B)는, 추가 실시예에서, 메모리 셀들의 페이지가 동시에 판독 또는 프로그램되는 것을 허용하는 다수의 감지 블록(250)을 포함한다. 소정 실시예에서, 감지 블록(250)은 하나 이상의 마이크로컨트롤러(150)와 통신한다.
메모리 어레이(200)는, 다양한 실시예에서, 행 디코더(240A/240B)를 통해서 워드 라인에 의해 그리고 열 디코더(242A/242B)를 통해서 비트 라인에 의해 어드레싱가능하다. 일부 실시예에서, 컨트롤러(244)가 하나 이상의 메모리 다이(212)와 동일한 메모리 디바이스(210)(예컨대, 탈착가능 저장 카드 또는 패키지) 내에 포함된다. 커맨드 및 데이터가 라인(232)을 통해서 호스트와 컨트롤러(244) 사이에서, 그리고 라인(234)을 통해서 컨트롤러와 하나 이상의 메모리 다이(212) 사이에서 이송된다. 일 구현예는 다수의 칩(212)을 포함할 수 있다.
온-다이 컨트롤러(220)는, 일 실시예에서, 판독/기입 회로(230A/230B)와 협력하여, 메모리 어레이(200) 상에서의 메모리 동작을 수행한다. 온-다이 컨트롤러(220)는, 소정 실시예에서, 마이크로컨트롤러(150), 온-칩 어드레스 디코더(224), 및 전력 제어 회로(226)를 포함한다. 일 실시예에서, 온-칩 어드레스 디코더(224) 및/또는 전력 제어 회로(226)는 마이크로컨트롤러(150)의 일부이고/이거나 그에 의해 제어될 수 있다.
마이크로컨트롤러(150)는, 일 실시예에서, 메모리 동작의 칩-레벨 제어를 제공한다. 온-칩 어드레스 디코더(224)는 어드레스 인터페이스를 제공하여, 호스트 또는 메모리 컨트롤러에 의해 사용되는 어드레스와 디코더(240A, 240B, 242A, 242B)에 의해 사용되는 하드웨어 어드레스 사이에서 변환한다. 전력 제어 회로(226)는 메모리 동작 동안 워드 라인들 및 비트 라인들에 공급되는 전력 및 전압들을 제어한다. 일 실시예에서, 전력 제어 회로(226)는 공급 전압보다 큰 전압을 생성할 수 있는 하나 이상의 충전 펌프를 포함한다.
일 실시예에서, 온-다이 컨트롤러(220), 마이크로컨트롤러(150), 전력 제어 회로(226), 디코더 회로(224), 디코더 회로(242A), 디코더 회로(242B), 디코더 회로(240A), 디코더 회로(240B), 판독/기입 회로(230A), 판독/기입 회로(230B), 및/또는 컨트롤러(244) 중 하나 또는 이들의 임의의 조합이 하나 이상의 관리 회로로 지칭될 수 있다.
도 3은 온-다이 메모리 마이크로컨트롤러 유닛(150)을 갖는 시스템(300)의 일 실시예를 도시한다. 도 3의 마이크로컨트롤러(150)는, 소정 실시예에서, 도 1의 마이크로컨트롤러(150) 및/또는 도 2의 마이크로컨트롤러(150)와 실질적으로 유사할 수 있다.
도시된 실시예에서, 마이크로컨트롤러(150)는 복수의 프로세싱 유닛(302a-n)을 포함하고/하거나 그와 통신한다. 일부 프로세싱 유닛(302a, 302b, 302n)은 마이크로컨트롤러(150)의 내부에 있고/있거나 그의 일부인 반면, 다른 프로세싱 유닛(302c, 302d)은 마이크로컨트롤러(150)의 외부에 있고(예를 들어, 외부 프로세싱 유닛, 기능 유닛 등) 마이크로컨트롤러(150)와 통신한다(예를 들어, 그리고 하나 이상의 추가 마이크로컨트롤러(150) 및/또는 마이크로컨트롤러 코어(150)와 통신할 수 있다). 소정 실시예에서, 마이크로컨트롤러(150)의 외부에 있는 프로세싱 유닛(302c, 302d)은 집적 회로 디바이스(123) 내의 마이크로컨트롤러(150)와 동일한 레벨(예를 들어, 하나 이상의 층, 평면 등)에 배치될 수 있다(예를 들어, 메모리 어레이(200) 아래 등에).
프로세싱 유닛(302a-n)은, 다양한 실시예에서, 판독 프로세싱 유닛(302), 프로그램/기입 프로세싱 유닛(302), 내장 자체 테스트 프로세싱 유닛(302), 흐름 제어 프로세싱 유닛(302), 타이밍 제어 프로세싱 유닛(302), 전압 제어 프로세싱 유닛(302), 및/또는 데이터 래치 제어 프로세싱 유닛(302) 등 중 하나 이상을 포함할 수 있다. 프로세싱 유닛(302a-n)은 흐름 제어 작업, 타이밍 제어 작업, 데이터 래치 제어 작업, 전압 제어 작업, 및/또는 내장 자체 테스트 작업 등과 같은 상이한 카테고리의 작업들을 수행할 수 있다.
소정 실시예에서, (예를 들어, 유한 상태 머신 등 대신에 및/또는 그에 더하여) 마이크로컨트롤러(150)를 사용하는 것은, 마이크로컨트롤러(150) 및/또는 연관된 집적 회로 디바이스(123)의 하드웨어가 현장 등에서 완성 및/또는 제조된 후에도, 하드웨어를 변경하지 않고, 마이크로컨트롤러(150)에 대해 타이밍, 전압, 로직 동작, 명령어, 커맨드, 마이크로코드 등 대한 동적 업데이트 및/또는 변경을 허용할 수 있다. 일 실시예에서, 병렬로 동작하는(예를 들어, 멀티스레딩된) 다수의 프로세싱 유닛(302a-n)은 메모리 어레이(200)에 대한 메모리 동작(예를 들어, 판독, 프로그램/기입, 소거)의 레이턴시를 또한 증가시키지 않고 달리 가능할 것보다 낮은 클록 속도로 마이크로컨트롤러(150)가 동작하도록 허용할 수 있다.
각각의 프로세싱 유닛(302)은, 소정 실시예에서, 프로세싱 유닛(302)이 휘발성 메모리 모듈(예를 들어, 도 4 등과 관련하여 하기에 기술되는 휘발성 메모리 모듈(406))로부터의 명령어/커맨드 및/또는 데이터에 액세스하기 위해 사용할 수 있는 판독 포트를 포함한다. 프로세싱 유닛들(3021-n) 사이의 통신은 커맨드 및 데이터 둘 모두를 이송하는 표준 인터페이스(예를 들어, 상이한 타입의 프로세싱 유닛들(302a-n)에 대한 동일한 프로토콜)를 통해 발생할 수 있다. 일 실시예에서, 마이크로컨트롤러(150) 내의 프로세싱 유닛(302a, 302b, 302n) 및 마이크로컨트롤러(150) 외부의 프로세싱 유닛(302c, 302d)에 대해 동일한 인터페이스가 사용될 수 있다.
도 4는 온-다이 메모리 마이크로컨트롤러(150)를 갖는 시스템(400)의 일 실시예를 도시한다. 마이크로컨트롤러(150)는, 소정 실시예에서, 전술된, 도 1의 마이크로컨트롤러(150), 도 2의 마이크로컨트롤러(150), 및/또는 도 3의 마이크로컨트롤러(150) 중 하나 이상과 실질적으로 유사할 수 있다. 도시된 실시예에서, 마이크로컨트롤러(150)는 흐름 제어 프로세싱 유닛(402a), 타이밍 제어 프로세싱 유닛(402b), 데이터 래치 제어 프로세싱 유닛(402c), 및 전압 제어 프로세싱 유닛(402d)을 포함하며, 이들 각각은 휘발성 메모리(406)와 그리고 마이크로컨트롤러(150) 외부의, 하나 이상의 외부 프로세싱 유닛(404a-n)과 통신한다.
흐름 제어 프로세싱 유닛(402a)은, 소정 실시예에서, 메모리 어레이(200)에 대한 하나 이상의 메모리 동작(예를 들어, 판독 동작, 기입/프로그램 동작, 소거 동작, 가비지 컬렉션 동작과 같은 관리 동작 등)의 실행을 제어 및/또는 추적할 수 있다. 예를 들어, 흐름 제어 프로세싱 유닛(402a)은 상이한 메모리 동작들을 실행하도록 하나 이상의 다른 프로세싱 유닛(402)(예를 들어, 타이밍 제어 유닛(402b), 데이터 래치 제어 유닛(402c), 전압 제어 유닛(402d), 하나 이상의 외부 프로세싱 유닛(404a-n) 등)을 관리하고, 그것들에 커맨드/명령어를 전송하고, 상이한 메모리 동작들 동안 다른 프로세싱 유닛(402, 404)의 상태를 결정하는 등의, 상이한 메모리 동작들에 대한 일련의 상태를 지시할 수 있다. 흐름 제어 프로세싱 유닛(402a)은, 일 실시예에서, 메모리 동작들에 대한 데이터 경로(예를 들어, 디바이스 컨트롤러(126)와 메모리 어레이(200) 사이, 마이크로컨트롤러(150)와 메모리 어레이(200) 사이 등)를 관리할 수 있다. 흐름 제어 프로세싱 유닛(402a)은, 일부 실시예에서, 마이크로컨트롤러(150) 등을 포함하는 집적 회로 디바이스(123)의, 마이크로컨트롤러(150)의 하나 이상의 내부 데이터 버스를 관리할 수 있다.
흐름 제어 프로세싱 유닛(402a)은, 일 실시예에서, (예를 들어, 디바이스 컨트롤러(126), 호스트 디바이스(110), 저장 클라이언트(116) 등으로부터의 판독 요청에 응답하여) 메모리 어레이(200)로부터 데이터를 판독하고 판독된 데이터를 디바이스 컨트롤러(126), 호스트 디바이스(110), 저장 클라이언트(116) 등에 제공하기 위한 마이크로코드, 어셈블리 코드, 및/또는 다른 컴퓨터 실행가능 코드의 서브루틴을 (예를 들어, 하나 이상의 다른 프로세싱 유닛(402a-n, 404a-n)과 병렬로) 실행 및/또는 관리하도록 구성된 판독 프로세싱 유닛을 포괄하거나 달리 포함할 수 있다.
흐름 제어 프로세싱 유닛(402a)은, 일 실시예에서, 디바이스 컨트롤러(126), 호스트 디바이스(110), 저장 클라이언트(116) 등으로부터의 기입 요청에 응답하여, 메모리 어레이(200)에 데이터를 기입/프로그램하기 위한 마이크로코드, 어셈블리 코드, 및/또는 다른 컴퓨터 실행가능 코드의 서브루틴을 (예를 들어, 하나 이상의 다른 프로세싱 유닛(402a-n, 404a-n)과 병렬로) 실행 및/또는 관리하도록 구성된 기입/프로그램 프로세싱 유닛을 포괄하거나 달리 포함할 수 있다. 도 6과 관련하여 하기에 기술된 바와 같이, 소정 실시예에서, 제1 마이크로컨트롤러(150a)는 기입/프로그램 프로세싱 유닛 및 판독 프로세싱 유닛을 갖는 흐름 제어 프로세싱 유닛(402a)을 포함할 수 있는 반면, 하나 이상의 다른 마이크로컨트롤러(150b-n)는 기입/프로그램 프로세싱 유닛을 갖지 않는 판독 프로세싱 유닛을 포함한다(예를 들어, 전력, 회로 크기/공간 등을 절약하기 위해).
일 실시예에서, 흐름 제어 프로세싱 유닛(402a)은 내장 자체 테스트 프로세싱 유닛을 포함한다. 도 6과 관련하여 하기에 기술된 바와 같이, 소정 실시예에서, 제1 하나 이상의 마이크로컨트롤러(150a)는 집적 회로 디바이스(123) 및/또는 메모리 어레이(200)를 위한 내장 자체 테스트 프로세싱 유닛을 포함하는 반면, 하나 이상의 다른 마이크로컨트롤러(150b-n)는 내장 자체 테스트 프로세싱 유닛을 포함하지 않는다(예를 들어, 전력, 회로 크기/공간 등을 절약하기 위해).
일 실시예에서, 다수의 마이크로컨트롤러(150) 시스템에서, 내장 자체 테스트 프로세싱 유닛을 갖지 않는 하나 이상의 축소된 크기의 마이크로컨트롤러(150)는 동일한 집적 회로 디바이스(123)의 1차 또는 풀 사이즈 마이크로컨트롤러(150)의 내장 자체 테스트 프로세싱 유닛에 의해 수행되는 다이 정렬 또는 다른 테스트, 유효성 검사, 및/또는 검증 프로세스 동안 유휴 상태일 수 있다. 하나 이상의 축소된 크기의 마이크로컨트롤러(150)가 사용되지 않은 상태에서, 유휴 마이크로컨트롤러(150)와 연관된 휘발성 메모리(406)의 적어도 일부도 사용되지 않고, 이용가능할 수 있다. 소정 실시예에서, 흐름 제어 프로세싱 유닛(402a)은 흐름 제어 프로세싱 유닛(402a)의 내장 자체 테스트 프로세싱 유닛에 의해 수행되는 테스트 동안 테스트를 위해 메모리 어레이(200)로부터 판독된 데이터를 저장 및 프로세싱하기 위해 하나 이상의 유휴 마이크로컨트롤러(150)의 휘발성 메모리(406)의 이용가능한 여분의 용량을 이용할 수 있다.
흐름 제어 프로세싱 유닛(402a)은 테스트 데이터를 메모리 어레이(200)로부터 휘발성 메모리(406)로 스트리밍할 수 있으며, 여기서 내장 자체 테스트 유닛은 에러 등에 대해 데이터를 프로세싱할 수 있다. 흐름 제어 프로세싱 유닛(402a)의 내장 자체 테스트 프로세싱 유닛은 하나 이상의 데이터 이송, 데이터 프로세싱, 타이머 기능 등을 수행하여 메모리 어레이(120) 및/또는 집적 회로 디바이스(123)의 하나 이상의 기능을 테스트할 수 있다(예를 들어, 하나 이상의 불량 비트 라인, 불량 워드 라인, 불량 소거 블록을 식별 및 표시하기 위해; 검사자, 호스트 디바이스(110), 저장 클라이언트(116) 등을 위해 하나 이상의 테스트 및/또는 에러 보고를 생성하기 위해).
일 실시예에서, 흐름 제어 프로세싱 유닛(402a)은 하나 이상의 인터럽트 포트(예를 들어, 소프트 또는 논리 인터럽트 포트, 하드 물리 또는 전기 인터럽트 포트 등)를 포함할 수 있으며, 이를 통해 흐름 제어 프로세싱 유닛(402a)은 하나 이상의 신호(예를 들어, 동작 모드 선택 신호, 피드백 신호, 프로그램 및/또는 소거 펄스 카운트, 프로그램 및/또는 소거 검증 통과 또는 실패 신호, 및/또는 흐름 제어 프로세싱 유닛(402a)이 마이크로컨트롤러(150)에 대한 하나 이상의 메모리 동작을 관리할 수 있게 하는 다른 인터럽트 또는 다른 신호)를 수신할 수 있다.
소정 실시예에서, 흐름 제어 프로세싱 유닛(402a)은 마이크로컨트롤러(150)의 상태(예를 들어, 준비됨, 사용 중(busy) 등)를 디바이스 컨트롤러(126), 호스트 디바이스(110), 저장 클라이언트(116) 등에 제공할 수 있고, 마이크로컨트롤러(150) 및/또는 메모리 어레이(200)에 대한 하나 이상의 커맨드 및/또는 동작을 수신할 수 있다. 흐름 제어 프로세싱 유닛(402a)은 커맨드를 주기적으로 폴링하고 레이턴시 및 지연을 도입하기보다는 커맨드에 신속하게(예를 들어, 실질적으로 즉시) 응답하기 위해 하나 이상의 인터럽트 포트를 사용할 수 있다. 흐름 제어 프로세싱 유닛(402a)은 하나 이상의 인터럽트 포트 상의 신호, 동작에 대한 수신된 커맨드 등에 기초하여 마이크로컨트롤러(150)의 하나 이상의 프로세싱 유닛(402a-d, 404a-n)에 의해 실행하기 위한 서브루틴을 선택/결정할 수 있다.
예를 들어, 일 실시예에서, 흐름 제어 프로세싱 유닛(402a)은 (예를 들어, 디바이스 컨트롤러(126), 호스트 디바이스(110), 저장 클라이언트(116) 등으로부터) 커맨드 인터럽트 신호(예를 들어, 단일 비트 등), 커맨드 인덱스(예를 들어, 커맨드 인터럽트 신호가 호출하고 있는 미리 정의된 동작을 나타내는 다수의 비트), 커맨드 동작 코드 또는 OPCODE(예를 들어, 커맨드 인터럽트, 일시 중단 인터럽트, 재개 인터럽트, 리셋 인터럽트 등과 같은 인터럽트의 타입을 나타내는 다수의 비트), 및/또는 하나 이상의 다른 인터럽트 신호를 수신할 수 있으며, 그에 기초하여 흐름 제어 프로세싱 유닛(402a)은 마이크로컨트롤러(150)의 하나 이상의 프로세싱 유닛(402a-d, 404a-n)에 대한 하나 이상의 명령어를 포함하는 서브루틴을 선택/결정할 수 있다.
흐름 제어 프로세싱 유닛(402a)은, 소정 실시예에서, 하드 인터럽트 요청에 응답할 수 있거나, 수신된 커맨드 인덱스를 마이크로컨트롤러(150)의 프로그램 카운터 내에(예를 들어, 프로그램 카운터의 하위 비트들 또는 다른 미리 정의된 위치에) 복사할 수 있거나, 등등을 할 수 있다. 프로그램 카운터에서 커맨드 인덱스에 대응하는 명령어는 요청된 동작을 실행하는 타겟 서브루틴을 가리키는 무조건 점프 명령어를 포함할 수 있다.
일 실시예에서, 흐름 제어 프로세싱 유닛(402a)은 판독 후 기입 위험 및/또는 하나 이상의 다른 위험(예를 들어, 기입 후 판독 위험, 기입 후 기입 위험, 구조적 위험, 제어 위험 등)을 피하기 위해 하나 이상의 다른 프로세싱 유닛(402a-d, 404a-n)을 관리할 수 있다. 예를 들어, 흐름 제어 프로세싱 유닛(402a)은 단일 인터럽트 대기(single interrupt wait, SIW) 명령어 및/또는 그룹 인터럽트 대기(group interrupt wait, GIW) 명령어를 대기 명령문(wait statement) 등으로서 이용하여, 흐름 제어 프로세싱 유닛(402a) 외부의 상태를 사전에 체크하고 그것을 기다려(예를 들어, 소프트/논리 인터럽트 신호, 하드/물리 인터럽트 신호, 다른 미리 정의된 조건 등을 기다려) 판독 후 기입 위험, 다른 위험 등을 피하도록 실행 순서를 강제 적용할 수 있다.
소정 실시예에서, 흐름 제어 프로세싱 유닛(402a)은 하나 이상의 인터럽트 대기 명령어(예를 들어, SIW 및/또는 GIW)를 이용하여 하나 이상의 다른 프로세싱 유닛(402a-d, 404a-n)에 대한 실행 순서를 관리할 수 있다. 예를 들어, 흐름 제어 프로세싱 유닛(402a)은 제1 명령어 시퀀스를 실행하고, 인터럽트 조건(예를 들어, 외부 신호 등)을 식별하는 SIW 및/또는 GIW 커맨드를 실행하고, 인터럽트 조건을 기다리고, 인터럽트 조건이 충족되는 것에 응답하여 제2 명령어 시퀀스를 실행할 수 있다.
GIW 대기 명령어는, 일 실시예에서, 흐름 제어 프로세싱 유닛(402a)이 미리 정의된 그룹 내의 다수의 인터럽트 신호(예를 들어, 하드웨어로 물리적으로 그룹화된 다수의 인터럽트 신호 등)를 기다리게 한다는 점을 제외하고는 SIW 대기 명령어와 실질적으로 유사하다. 소정 실시예에서, GIW 대기 명령어는 선택된 다수의 인터럽트 신호 중에서 이항 연산자 AND 또는 이항 연산자 OR을 선택적으로 사용하도록 구성가능할 수 있다. 예를 들어, AND 이항 연산자가 선택되면, GIW 대기 명령어는 선택된 다수의 인터럽트 신호 모두를 수신할 때까지 대기할 것이다. OR 이항 연산자가 선택되면, GIW 대기 명령어는 선택된 다수의 인터럽트 신호 중 어느 하나를 수신할 때까지 대기할 것이고, 그 후 GIW 대기 명령어는 흐름 제어 프로세싱 유닛(402a)이 진행하게 한다.
소정 실시예에서, 다수의 타겟 인터럽트 신호가 물리적으로 그룹화되지 않고, 따라서 GIW 대기 명령어가 다수의 타겟 인터럽트 신호에 대해 사용되지 않을 수 있는 경우, 흐름 제어 프로세싱 유닛(402a)은 일련의 연속적인 SIW 명령어들을 지원할 수 있으며, 이 명령어들은 함께 단일 GIW 명령어 등과 같이 거동할 수 있다.
일 실시예에서, 흐름 제어 프로세싱 유닛(402a)은 하나 이상의 다른 프로세싱 유닛(402b-d, 404a-n)의 커맨드 센터로서의 역할을 한다. 흐름 제어 프로세싱 유닛(402a)은 커맨드 및/또는 데이터를 다른 프로세싱 유닛들(402b-d, 404a-n)에 전송하고 그들의 상태를 모니터링할 수 있다. 이러한 일 대 전부(one-to-all) 통신 패턴은, 소정 실시예에서, 마이크로코드 및 설계 복잡성을 감소시킬 수 있다. 일 실시예에서, 흐름 제어 프로세싱 유닛(402a)에 의해 사용되는 명령어 메모리 공간(406)을 최소화하고/하거나 흐름 제어 프로세싱 유닛(402a)이 성능 병목이 되는 것을 방지하기 위해, 흐름 제어 프로세싱 유닛(402a)은 일부 작업을 제어 및 추적할 수 있지만, 진행 중인 상태를 모니터링 및/또는 추적하지 않고 하나 이상의 프로세싱 유닛(402b-d, 404a-n)에 대한 다른 작업을 호출할 수 있다.
흐름 제어 프로세싱 유닛(402a)에 의한 제어를 용이하게 하고/하거나 단순화하기 위해, 소정 실시예에서, 하나 이상의 다른 프로세싱 유닛(402b-d, 404a-n)이 실질적으로 유사한 인터페이스(예를 들어, 표준 인터페이스 등)를 가질 수 있다. 하나 이상의 상이한 프로세싱 유닛(402a-d, 404a-n)은 표준 인터페이스를 가질 수 있지만, 상이한 카테고리 및/또는 타입의 작업들을 실행하기 위한 상이한 명령어 세트를 지원할 수 있다.
많은 작업들(예를 들어, 복잡한 알고리즘 및/또는 반복 실행을 갖는)이 흐름 제어 프로세싱 유닛(402a)의 표준 인터페이스 프로토콜을 통해 프로세싱 유닛들(402b-d, 404a-n)에 의해 제어될 수 있지만, 소정 타입의 동작들에 대해 다른 작은 및/또는 1회용 실행 작업이 있을 수 있다. 많은 그러한 작은 작업이 있는 실시예들에서, 흐름 제어 프로세싱 유닛(402a)은 작업에 대한, 시간에 따른 새로운 작업에 대한, 사용자 지정 작업 등에 대한 지원을 제공하기 위해 확장된 및/또는 사용자 지정 가능한 인터페이스를 포함할 수 있다.
예를 들어, 흐름 제어 프로세싱 유닛(402a)은 마이크로컨트롤러(150)의 제어 레지스터 어레이(예를 들어, 64 비트 x 16 비트 등) 내의 하나 이상의 커맨드 테이블을 지원할 수 있다. 제어 레지스터 어레이는, 소정 실시예에서, 흐름 제어 프로세싱 유닛(402a)의 로드(LOD) 및/또는 저장(STR) 명령어에 의해 액세스될 수 있다. 흐름 제어 프로세싱 유닛(402a)의 설계가 공간의 서브세트(예를 들어, 64개의 레지스터 중 5개 등)만을 차지할 수 있기 때문에, 제어 레지스터 어레이의 공간의 적어도 일부는 가상일 수 있다. 제어 레지스터 어레이의 나머지는, 사용자 지정 작업에 의한 사용 등을 위해, 흐름 제어 프로세싱 유닛(402a)과는 비교적 독립적일 수 있다. 흐름 제어 프로세싱 유닛(402a)을 위해 예약되지 않은 제어 레지스터 어레이 내의 하나 이상의 레지스터는, 소정 실시예에서, 작은 작업, 1회용 작업, 시간에 따른 새로운 작업 등을 실행하기 위해 마이크로컨트롤러의 기능을 확장하기 위한 사용자 지정 커맨드 테이블을 저장할 수 있다.
일부 실시예에서, 일 대 전부 통신 패턴은 흐름 제어 프로세싱 유닛(402a)과 타이밍 제어 프로세싱 유닛(402b) 사이에 왔다갔다 하는 신호/커맨드 쌍을 사용할 수 있으며, 이는 마이크로컨트롤러(150)의 페이스를 제어할 수 있다. 타이밍 제어 프로세싱 유닛(402b)의 출력은 메모리 액세스 동작의 타이밍을 제어하기 위해 메모리 액세스 동작 전체에 걸쳐 메모리 어레이(200)의 하나 이상의 주변 모듈로 전달될 수 있다. 흐름 제어 프로세싱 유닛(402a)이 계속 마이크로컨트롤러(150)에서 유일한 마스터 모듈이면, 그것은 프로세싱 시간 및/또는 휘발성 메모리(406) 오버헤드를 이용하여, 메모리 어레이(200)에 대한 메모리 액세스 동작의 각각의 단계에 대한 타이밍 제어 프로세싱 유닛(402b)의 진행을 모니터링하여, 흐름 제어 프로세싱 유닛(402a)이 타이밍 제어 유닛(402b)에 커맨드를 전송하고 타이밍 제어 프로세싱 유닛(402b)으로부터 피드백 신호를 수신할 때(예를 들어, 흐름 제어 프로세싱 유닛(402a)의 인터럽트 인터페이스 등을 통해), 흐름 제어 프로세싱 유닛(402a)과 타이밍 제어 유닛(402b)을 동기화시킬 수 있다.
마이크로컨트롤러(150)의 프로세싱 유닛(402a-d, 404a-n) 및/또는 파이프라인의 병렬성을 개선하거나, 마이크로코드 라인의 수를 감소시키거나, 명령어/데이터 메모리 공간(406)을 절약하거나 등등을 위해, 프로세싱 유닛(402a-d, 404a-n) 중 하나 이상은 하나 이상의 버퍼 및/또는 출력 스테이지를 포함할 수 있다. 흐름 제어 프로세싱 유닛(402a)이 계속 마이크로컨트롤러(150)에 대한 마스터일 수 있지만, 흐름 제어 프로세싱 유닛(402a)에 의해 인에이블될 때, 타이밍 제어 프로세싱 유닛(402b)은 메모리 어레이(200)에 대한 하나 이상의 메모리 동작에 대해 시기 적절하게 다른 프로세싱 유닛(402c-d, 404a-n)을 트리거하는 흐름 제어 프로세싱 유닛(402a)에 대한 프록시가 될 수 있다.
타이밍 제어 유닛(402b)이 전체 마이크로컨트롤러(150)의 타이밍 및/또는 페이스를 제어할 수 있으므로, 타이밍 제어 프로세싱 유닛(402b)은 메모리 동작의 실행 진행에 대해 알고 있을 수 있다. 타이밍 제어 프로세싱 유닛(402b)은 타이밍 제어 프로세싱 유닛(402b)의 명령어 세트를 확장하기 위해 흐름 제어 프로세싱 유닛(402a)보다 더 많은 이용가능한 공간을 가질 수 있으며(예를 들어, 타이밍 제어 유닛(402b)과 연관된 휘발성 메모리(406)에), 이는 타이밍 제어 프로세싱 유닛(402b)이 흐름 제어 프로세싱 유닛(402a)에 대한 프록시로서의 역할을 할 수 있게 하는 데 사용될 수 있다. 예를 들어, 타이밍 제어 프로세싱 유닛(402b)의 명령어 인코딩 테이블 내의 공간의 작은 부분만이 명령어 식별 코드, 인수, 및 스위치(예를 들어, 인에이블/디스에이블 비트)로 채워져, 타이밍 제어 프로세싱 유닛(402b) 명령어 인코딩 테이블에 더 많은 인수 및 스위치를 포함시키기 위한 공간을 남길 수 있다.
소정 실시예에서, 타이밍 제어 프로세싱 유닛(402b)의 명령어 인코딩 테이블의 여분의 용량은 타이밍 제어 프로세싱 유닛(402b)이 다른 프로세싱 유닛(402c-d, 404a-n) 등을 트리거하기 위해 사용하기 위한 트리거들을 정의하는 어레이(예를 들어, 8-비트 어레이 등)를 저장할 수 있다. 예를 들어, 흐름 제어 프로세싱 유닛(402a)은 서브루틴을 실행하기 위해 타이밍 제어 프로세싱 유닛(402b)을 시작 및/또는 개시할 수 있다. 타이밍 제어 프로세싱 유닛(402b)은 흐름 제어 프로세싱 유닛(402a), 데이터 래치 제어 유닛(402c), 전압 제어 프로세싱 유닛(402d), 하나 이상의 외부 프로세싱 유닛(404a-n) 등에 하나 이상의 트리거를 제공하기 위해 백그라운드 프로세스로서(예를 들어, 흐름 제어 프로세싱 유닛(402a)과 병렬로) 실행될 수 있다.
흐름 제어 프로세싱 유닛(402a)은 다음 작업을 준비하거나, 업데이트를 제공하거나, 버퍼에서 출력을 준비하거나, 등등을 위해 하나 이상의 다른 프로세싱 유닛(402b-d, 404a-n)에 준비 커맨드를 전송할 수 있다. 흐름 제어 프로세싱 유닛(402a)은, 다양한 실시예에서, 연관된 작업에 따라, 다음 준비 커맨드를 전송하기 위한 타이밍 제어 프로세싱 유닛(402b)의 트리거를 기다릴 수 있거나 기다리지 않을 수 있다. 타이밍 제어 프로세싱 유닛(402b)은 버퍼 값을 연관된 출력 스테이지 등에 복사하도록 하나 이상의 다른 프로세싱 유닛(402a, 402c, 402d, 404a-n)을 트리거할 수 있다(예를 들어, 작업을 완료하거나, 작업의 다음 단계를 트리거하거나, 등등을 위해).
흐름 제어 프로세싱 유닛(402a)은 초기화 커맨드(예를 들어, 시작 커맨드, 준비 커맨드 등)를 프로세싱 유닛(402b-d, 404a-n)에 전송할 수 있고, 타이밍 제어 프로세싱 유닛(402b)은 작업의 후속 부분들을 개시하기 위한 트리거를 프로세싱 유닛(402c-d, 404a-n)에 전송할 수 있거나, 피드백을 흐름 제어 프로세싱 유닛(402a)에 전송할 수 있거나(예를 들어, 흐름 제어 프로세싱 유닛(402a)의 인터럽트 포트 또는 다른 인터럽트 인터페이스를 통해) 등등을 할 수 있다. 타이밍 제어 프로세싱 유닛(402b)으로부터의 트리거 신호는 작업을 완료하기 위해, 작업의 중간 단계로서 등등으로, 출력 신호, 값 등을 제공하도록 다른 프로세싱 유닛(402c-d, 404a-n)을 트리거할 수 있다(예를 들어, 값을 데이터 래치에 로딩하도록 데이터 래치 제어 프로세싱 유닛(402c)을, 출력 전압을 제공하도록 전압 제어 프로세싱 유닛(402d)을 등등).
예를 들어, 전압 제어 프로세싱 유닛(402d)은 마이크로컨트롤러(150)로부터의 이진 및/또는 디지털 값을 메모리 어레이(200)에 대한 아날로그 전압(예를 들어, 프로그램 전압, 소거 전압, 판독 전압, 바이어스 전압, 워드 라인 전압, 비트 라인 전압, 금지 전압 등)으로 변환할 수 있다. 데이터 래치 제어 프로세싱 유닛(402c)은, 소정 실시예에서, 메모리 어레이를 위한 하나 이상의 데이터 버퍼, 메모리 어레이(200)를 위한 로직 회로(예를 들어, 감지 증폭기(250)를 제어하는 YLOG 로직 회로, 판독/기입 회로(230), 행 디코더(240) 등), 및/또는 집적 회로 디바이스(123)의 메모리 어레이(200)를 위한 다른 회로를 제어할 수 있다.
일 실시예에서, 데이터 래치 제어 프로세싱 유닛(402c)은 휘발성 메모리(406)로부터의 데이터를 커맨드 인덱스로 디코딩할 수 있다(예를 들어, 32-비트 및/또는 64-비트 SRAM 데이터를 하나 이상의 커맨드 인덱스 등으로 디코딩). 데이터 래치 제어 프로세싱 유닛(402c)은, 소정 실시예에서, 디코딩된 커맨드 인덱스를 하드코딩된 조합 로직 및/또는 다른 규칙을 이용하여 하나 이상의 커맨드(예를 들어, YLOG 커맨드)로 변환할 수 있다. 데이터 래치 제어 프로세싱 유닛(402c)은 각각의 클록 사이클 또는 클록 사이클 세트마다 미리 결정된 수의 커맨드를 버퍼링할 수 있다. 예를 들어, 데이터 래치 제어 프로세싱 유닛(402c)은 클록 사이클마다 4개의 커맨드를 버퍼링하고 클록 사이클의 1/4마다(예를 들어, 80 나노초 클록 사이클에 대해 20 나노초마다 등) 4개의 로직 커맨드 중 하나를 출력할 수 있다. 데이터 래치 제어 프로세싱 유닛(402c)은 미리 정의된 커맨드 시퀀스(예를 들어, YLOG 커맨드 시퀀스)를 휘발성 메모리(406) 등에 저장할 수 있다.
예를 들어, 일 실시예에서, 데이터 래치 제어 프로세싱 유닛(402c)은 각각 하나 이상의 순서화된 커맨드 리스트를 포함하는 약 64개, 128개, 256개, 또는 그 초과의 커맨드 시퀀스를 저장할 수 있다. 커맨드 시퀀스는, 다양한 실시예에서, 단일 커맨드, 다수의 커맨드, 최대 5개의 커맨드, 최대 10개의 커맨드, 최대 13개의 커맨드, 최대 15개의 커맨드, 최대 20개의 커맨드, 20개보다 많은 커맨드 등을 포함할 수 있다.
마이크로컨트롤러(150)는 데이터 래치들에 저장된 값들의 유연한 제어를 제공할 수 있으며, 데이터 래치 제어 프로세싱 유닛(402c)은 커맨드 시퀀스들에 디코딩된 커맨드 인덱스들에 기초하여 데이터 래치들에 데이터를 저장하고, 흐름 제어 프로세싱 유닛(402a)은 하나 이상의 데이터 래치에 저장된 데이터를 선택적으로 오버라이드한다. 예를 들어, 흐름 제어 프로세싱 유닛(402a)은 커맨드 시퀀스(예를 들어, 메모리 어레이(200)에 대한 및/또는 감지 증폭기(250), 판독/기입 회로(230), 행 디코더(240) 등에 대한 하나 이상의 커맨드)를 생성하기 위한 서브루틴(예를 들어, 마이크로코드 또는 다른 컴퓨터 실행가능 프로그램 코드)을 실행하기 위해 데이터 래치 제어 프로세싱 유닛(402c)을 개시할 수 있으며, 흐름 제어 프로세싱 유닛(402a)은 하나 이상의 데이터 값을 하나 이상의 데이터 래치에 직접 저장할 수 있고; 흐름 제어 프로세싱 유닛(402a)은 데이터 래치에 대한 커맨드 인덱스를 마스킹, 절단, 변경, 업데이트 및/또는 덮어쓰기할 수 있다.
소정 실시예에서, 메모리 어레이(200)에 대한 판독 커맨드는 프로그램 및/또는 소거 커맨드보다 높은 우선 순위를 가질 수 있다(예를 들어, NAND 플래시 메모리에서, 판독 동작은 프로그램 및/또는 소거 동작 등보다 실질적으로 더 빠르게 실행될 수 있다). 마이크로컨트롤러(150)는 개재하는 판독 요청 등을 수신하는 것에 응답하여 프로그램 또는 소거 커맨드 시퀀스를 실행하는 것으로부터 판독 커맨드 시퀀스로 스위칭하고, 판독 명령어 시퀀스가 완료되는 것에 응답하여 프로그램 또는 소거 커맨드 시퀀스로 다시 스위칭할 수 있다. 마이크로컨트롤러(150)는 프로그램 또는 소거 커맨드 시퀀스에서 중단한 곳에서 프로그램 또는 소거 서브루틴으로 다시 스위칭할 수 있다.
일 실시예에서, 마이크로컨트롤러(150)는 일시 중단이 발생한 곳을 나타내는 마이크로컨트롤러(150)에 대한 상태를 저장하는 섀도 레지스터들의 세트를 포함할 수 있다. 그러나, 소정 실시예에서, 섀도 레지스터보다 적은 전력 및 회로 공간을 사용하기 위해, 흐름 제어 프로세싱 유닛(402a)은 프로세싱 유닛(402a-d, 404a-n)에 대한 레지스터 파일 및 보류 중 커맨드 시퀀스를 스레드-스위칭 스택으로 푸시할 수 있고, 개재하는 판독 동작 후에 프로그램 또는 소거 동작을 재개하는 것에 응답하여 스레드-스위칭 스택으로부터 레지스터 파일 및 보류 중 커맨드 시퀀스를 팝할 수 있다. 프로세싱 유닛들(402a-d, 404a-n)은 그것들이 중단한 곳에서 인터럽트된 프로그램 또는 판독 동작을 시작할 수 있거나, 커맨드 시퀀스 내의 소정 커맨드들을 재실행하여 적절한 동작 상태를 재생성할 수 있거나, 등등이다. 스레드-스위칭 스택을 사용하는 것은 흐름 제어 프로세싱 유닛(402a)과 타이밍 제어 프로세싱 유닛(402b)이 동기화되어 유지되는 것을 허용하면서, 전체 마이크로컨트롤러(150)에 대해 섀도 레지스터를 사용하는 것보다 적은 레지스터를 추가할 수 있으며, 따라서 인터럽트된 프로그램 또는 소거 동작을 재개한 후에도, 타이밍 제어 프로세싱 유닛(402b)이 다른 프로세싱 유닛들(402c-d, 404a-n)을 트리거할 때 그것들이 정확한 버퍼 값을 준비할 수 있다.
도 5는 스레드 관리 유닛(502)에 의해 동기화 및/또는 관리되는 다수의 온-다이 메모리 마이크로컨트롤러 코어(150a-n)를 갖는 시스템(500)의 일 실시예를 도시한다. 도시된 실시예에서, 마이크로컨트롤러 코어(150a-n) 각각은 유사한 크기를 갖는다(예를 들어, 유사한 프로세싱 유닛(302a-302d), 유사한 수의 프로세싱 유닛(302a-302d) 등을 가질 수 있다).
각각의 마이크로컨트롤러 코어(150a-n)는, 소정 실시예에서, 메모리 매체(122)의 상이한 서브세트(예를 들어, 하나 이상의 상이한 다이, 다이 평면, 블록, 소거 블록 등)와 연관될 수 있으며, 각각은 메모리 매체(122)의 연관된 서브세트들에 대해 프로그램, 판독, 및/또는 소거 동작을 수행할 수 있다. 추가 실시예에서, 상이한 마이크로컨트롤러 코어들(150a-n)은 메모리 매체(122)의 임의의 선택된 서브세트(예를 들어, 하나 이상의 상이한 다이, 다이 평면, 블록, 소거 블록 등)에 대해 프로그램, 판독, 및/또는 소거 동작을 수행하도록 구성될 수 있다.
도 6은 다수의 온-다이 메모리 마이크로컨트롤러 코어(150a-n) 및 스레드 관리 유닛(502)을 갖는 시스템(600)의 다른 실시예를 도시한다. 도시된 실시예에서, 하나의 마이크로컨트롤러 코어(150a)는 하나 이상의 추가 마이크로컨트롤러 코어(150b-n)보다 큰 크기를 갖는다(예를 들어, 마이크로컨트롤러 코어(150a)는 더 적은 및/또는 더 작은 프로세싱 유닛(302a-c) 등을 갖는 하나 이상의 추가 마이크로컨트롤러 코어(150b-n)보다 더 많은 및/또는 더 큰 프로세싱 유닛(302a-302d)을 가질 수 있다).
도 5에 도시된 바와 같이, 각각이 완전한 능력을 갖는 다수의 풀 사이즈 마이크로컨트롤러 코어(150a-n)는 집적 회로 디바이스(123)의 더 많은 양의 전력 및/또는 회로 영역을 소비할 수 있다. 도 6에서, 시스템(600)은 하나 이상의 풀 사이즈 마이크로컨트롤러 코어(150a), 및 하나 이상의 축소된 크기 및/또는 부분 마이크로컨트롤러 코어(150b-n)를 포함한다(예를 들어, 전력을 절약하기 위해, 회로 크기를 축소시키기 위해 등등). 예를 들어, 도시된 실시예에서, 단지 예시의 목적으로, 제1 풀 사이즈 마이크로컨트롤러 코어(150a)는 4개의 프로세싱 유닛(302a-d)을 포함하는 반면, 하나 이상의 부분 및/또는 축소된 크기의 마이크로컨트롤러 코어(150b-n)는 3개의 프로세싱 유닛(302a-c)을 포함한다(예를 들어, 풀 사이즈 컨트롤러 코어(150a)보다 작음).
하나 이상의 부분 및/또는 축소된 크기의 마이크로컨트롤러 코어(150b-n)는 크기를 축소시키기 위해 불필요한 레지스터, 거의 사용되지 않는 명령어, 포인터 스택, 레지스터 파일 엔트리 등이 제거되었을 수 있다. 부분 및/또는 축소된 크기의 마이크로컨트롤러 코어(150b-n)는, 소정 실시예에서, 모든 사용자 모드 동작, 사용자 모드 동작들의 미리 정의된 세트 등을 실행하는 것이 가능할 수 있지만, 풀 사이즈의 완전한 마이크로프로세서 코어(150a)보다 작을 수 있다. 풀 사이즈의 완전한 마이크로컨트롤러(150a)는 사용자 모드 동작 및 내장 자체 테스트 테스트 모드 동작 둘 모두를 실행하는 것이 가능할 수 있다.
예를 들어, 풀 사이즈의 완전한 마이크로컨트롤러(150a)는 내장 자체 테스트 프로세싱 유닛을 포함하는 흐름 제어 프로세싱 유닛(402a)을 포함할 수 있는 반면, 부분 및/또는 축소된 크기의 마이크로컨트롤러 코어(150b-n)는 내장 자체 테스트 프로세싱 유닛을 갖지 않는 흐름 제어 프로세싱 유닛(402a)을 포함할 수 있다. 추가 실시예에서, 풀 사이즈의 완전한 마이크로컨트롤러(150a)는 판독 프로세싱 유닛 및 프로그램/기입 프로세싱 유닛 둘 모두를 포함하는 흐름 제어 프로세싱 유닛(402a)을 포함할 수 있는 반면, 부분 및/또는 축소된 크기의 마이크로컨트롤러 코어(150b-n)는 판독 프로세싱 유닛을 갖지만 프로그램/기입 프로세싱 유닛을 갖지 않는 흐름 제어 프로세싱 유닛(402a)을 포함할 수 있다.
풀 사이즈의 완전한 마이크로컨트롤러(150a)는 집적 회로 디바이스(123)의 메모리 매체(122)의 각각의 상이한 서브세트(예를 들어, 하나 이상의 상이한 다이, 다이 평면, 블록, 소거 블록 등)에 대해 하나 이상의 동작(예를 들어, 프로그램 동작, 소거 동작, 내장 자체 테스트 테스트 동작 등)을 수행할 수 있는데, 그 이유는 하나 이상의 부분 및/또는 축소된 크기의 마이크로컨트롤러 코어(150b-n)가 그 하나 이상의 동작을 지원하지 않을 수 있기 때문이다. 소정 실시예에서, 마이크로컨트롤러 코어(150a-n) 각각이 지원하는 동작(예를 들어, 판독 동작)에 대해, 상이한 마이크로컨트롤러 코어들(150a-n)은 집적 회로 디바이스(123)의 메모리 매체(122)의 상이한 서브세트들(예를 들어, 하나 이상의 상이한 다이, 다이 평면, 블록, 소거 블록 등)에 할당될 수 있다.
예를 들어, 일 실시예에서, 집적 회로 디바이스(123)의 다이는, 각각이 메모리 동작들을 병렬로 수행할 수 있는 별개의 메모리 어레이(200)를 갖는, 다수의 다이 평면(예를 들어, 4개의 다이 평면)을 포함할 수 있다. 다이 평면들은 서로 동일한 집적 회로 디바이스(123)의 레벨(예를 들어, 반도체, 금속 또는 다른 도체, 절연체 등의 하나 이상의 층)에 배치될 수 있거나(예를 들어, 동일한 레벨에 인접하여), 또는 상이한 오프셋 레벨들에 평행하게 배치될 수 있거나, 등등이다.
각각의 다이 평면에는, 일 실시예에서, 마이크로컨트롤러 코어(150a-n) 각각에 의해 지원되는 동작(예를 들어, 판독 동작)을 위해 상이한 마이크로컨트롤러 코어(150a-n)가 할당될 수 있는 반면, 단일 마이크로컨트롤러 코어(150a)(예를 들어, 풀 사이즈의 완전한 마이크로컨트롤러 코어(150a))는 각각의 다이 평면에 대해 마이크로컨트롤러 코어(150a-n) 각각에 의해 지원되지 않는 하나 이상의 동작(예를 들어, 프로그램 동작, 소거 동작, 내장 자체 테스트 테스트 동작 등)을 수행할 수 있다. 예를 들어, 4개의 다이 평면을 갖는 실시예에서, 4개의 다이 평면 각각에 대해 프로그램 동작을 수행할 수 있는 하나의 풀 사이즈의 마이크로컨트롤러 코어(150a), 및 3개의 추가적인 축소된 크기의 마이크로컨트롤러 코어(150b-n)가 있으며, 판독 동작을 수행하기 위해 상이한 다이 평면들에 4개의 마이크로컨트롤러 코어(150a-n) 모두가 할당되고, 최대 4개의 판독 동작이 병렬로 수행될 수 있거나, 3개의 판독 동작 및 프로그램 동작이 수행되거나, 등등이다.
이러한 방식으로, 소정 실시예에서, 높은 우선 순위 동작(예를 들어, 판독 동작 등)이 여전히 전력 소비 및 회로 크기를 최소화하면서 다수의 메모리 다이 또는 메모리의 다른 영역들에서 병렬로 수행될 수 있다. 프로그램 및/또는 소거 동작을 위해 피크 전력이 사용되는 반면, 판독 동작은 더 적은 전력을 사용할 수 있기 때문에, 한 번에 단일 프로그램 및/또는 소거 동작만을 수행하는 것은, 소정 실시예에서, 전력 관리를 위해 최적일 수 있다.
하나 이상의 더 작은 축소된 크기의 마이크로컨트롤러 코어(150b-n)는, 일 실시예에서, 각각 타이밍 제어 프로세싱 유닛(402b)을 포함할 수 있다. 소정 실시예에서, 하나 이상의 더 작은 축소된 크기의 마이크로컨트롤러 코어(150b-n)에 대한 흐름 제어 프로세싱 유닛(402a)은 더 큰 풀 사이즈의 마이크로컨트롤러 코어(150a)보다 더 작을 수 있다(예를 들어, 축소되거나, 제거되거나, 더 작은 명령어 세트를 갖거나, 판독 동작을 수행하기에는 충분하지만 프로그램 동작을 수행하기에는 충분하지 않은 로직을 갖거나, 등등이다).
추가 실시예에서, 하나 이상의 더 작은 축소된 크기의 마이크로컨트롤러 코어(150b-n)는 흐름 제어 프로세싱 유닛(402a)을 갖지 않을 수 있지만, 흐름 제어 프로세싱 유닛(402a)의 로직 및/또는 기능의 일부가 타이밍 제어 프로세싱 유닛(402b) 등과 조합될 수 있다. 다수의 더 작은 축소된 크기의 마이크로컨트롤러 코어(150b-n)는, 일 실시예에서, 단일 데이터 래치 제어 프로세싱 유닛(402c) 등을 공유할 수 있다. 소정 실시예에서, 풀 사이즈 마이크로컨트롤러 코어(150a) 및 축소된 크기의 마이크로컨트롤러 코어(150b-n) 둘 모두는 동일한 펌웨어 코드를 공유할 수 있지만, 상이한 서브루틴 등을 실행할 수 있다. 휘발성 메모리 버퍼들(406)은, 일 실시예에서, 하나 이상의 축소된 크기의 마이크로컨트롤러 코어(150b-n)에서 회로 크기를 축소시키기 위해 크기가 축소되거나, 공유되거나, 제거되거나, 등등일 수 있다.
소정 실시예에서, 집적 회로 디바이스(123)의 메모리 매체(122)의 각각의 채널, 다이 평면 또는 다른 서브세트가 연속적인 개별 타이밍 제어를 받을 수 있도록, 각각의 마이크로컨트롤러 코어(150a-n)가 개별 타이밍 제어 프로세싱 유닛(402b)을 포함하는 것이 유익할 수 있다. 추가 실시예에서, 각각의 마이크로컨트롤러 코어(150a-n)는 개별 흐름 제어 프로세싱 유닛(402a)을 포함할 수 있는데, 그 이유는 상이한 마이크로컨트롤러 코어들(150a-n) 사이의 스레드 스위칭은 상이한 마이크로컨트롤러 코어들(150a-n) 사이의 증가된 동기화 및 빈번한 스위칭으로 인해 성능에 해로울 수 있기 때문이다. 흐름 제어 프로세싱 유닛(402a) 및/또는 타이밍 제어 프로세싱 유닛(402b)의 축소된 버전(예를 들어, 판독 동작을 핸들링하지만 프로그램 동작은 핸들링하지 않는 등등)은 축소된 명령어 세트, 축소된 휘발성 메모리(406) 등을 가질 수 있다.
스레드 관리 유닛(TMU)(502)은, 소정 실시예에서, 커맨드를 상이한 마이크로컨트롤러 코어들(150a-n)에 분배한다(예를 들어, 상이한 채널들, 다이 평면들, 및/또는 집적 회로 디바이스(123)의 메모리 매체(122)의 다른 서브세트들 등에 대한 커맨드). 예를 들어, 스레드 관리 유닛(502)은 디바이스 컨트롤러(126)로부터 커맨드(예를 들어, 판독 커맨드, 기입/프로그램 커맨드, 소거 커맨드, 테스트 커맨드 등)를 수신하고, 마이크로컨트롤러 코어(150a-n)를 선택할 수 있다(예를 들어, 커맨드의 어드레스 또는 다른 지시자에 기초하여, 어느 마이크로컨트롤러(150a-n)가 이용가능한지 및/또는 사용 중인지에 기초하여, 등등). 스레드 관리 유닛(502)은 커맨드의 상태를 디바이스 컨트롤러(126)에 다시 보고할 수 있다(예를 들어, 마이크로컨트롤러가 커맨드를 완료하는 것에 응답하여, 커맨드의 실행 동안 사용 중 상태 등).
스레드 관리 유닛(502)은, 다양한 실시예에서, 마이크로컨트롤러 코어들(150a-n) 사이에 공유 리소스들을 할당할 수 있고(예를 들어, 외부 프로세싱 유닛(404a-n), 공유 휘발성 메모리(406) 등), 마이크로컨트롤러 코어들(150a-n)에 대한 전력을 관리하고(예를 들어, 전력을 관리하기 위해 상이한 마이크로컨트롤러 코어들(150a-n)을 웨이킹(waking) 및/또는 슬리핑(sleeping) 등), 마이크로컨트롤러 코어들(150a-n) 사이의 경합 및/또는 충돌을 관리하고, 및/또는 달리 상이한 마이크로컨트롤러 코어들(150a-n) 사이에 코디네이트할 수 있다.
소정 실시예에서, 스레드 관리 유닛(502)은 상이한 마이크로컨트롤러 코어들(150a-n)의 각각의 흐름 제어 프로세싱 유닛(402a)으로부터 타겟 타이밍 제어 프로세싱 유닛(402b)으로 커맨드를 디스패치하여, 하나의 마이크로컨트롤러 코어(150a-n)의 흐름 제어 프로세싱 유닛(402a)과 상이한 마이크로컨트롤러 코어(150a-n)의 타이밍 제어 프로세싱 유닛(402b) 사이의 통신, 작업 공유, 작업 이송 등을 허용한다.
예를 들어, 더 큰 풀 사이즈 마이크로컨트롤러(150a)에 대한 흐름 제어 프로세싱 유닛(402a)은 집적 회로 디바이스(123)의 메모리 매체(122)의 각각의 다이 평면 또는 다른 서브세트에 대한 프로그램 동작을 관리할 수 있는 반면, 마이크로컨트롤러 코어들(150a-n)의 타이밍 제어 프로세싱 유닛(402b)은 메모리 매체(122)의 상이한 다이 평면 또는 다른 서브세트에 전용될 수 있고(예를 들어, 도체 라인의 배치 및 라우팅을 단순화하기 위해, 등등), 스레드 관리 유닛(502)은 흐름 제어 프로세싱 유닛(402a)으로부터의 커맨드, 작업 등을, 프로그램 동작을 위해, 다른 타이밍 제어 프로세싱 유닛(402b)으로 전송하여, 흐름 제어 프로세싱 유닛(402a)으로부터의 커맨드를, 프로그램 동작을 위해, 적절한 채널(예를 들어, 다이 평면)에 링크할 수 있다.
스레드 관리 유닛(502)은, 소정 실시예에서, 할당 테이블 및 멀티플렉서를 이용하여, 풀 사이즈 마이크로컨트롤러(150a)의 흐름 제어 프로세싱 유닛(402a)으로부터의 동작, 커맨드, 및/또는 작업을 프로그램 동작을 위한 채널과 연관된 타이밍 제어 프로세싱 유닛(402b)으로 라우팅하고, (예를 들어, 축소된 크기의 마이크로컨트롤러들(150b-n)의) 다른 흐름 제어 프로세싱 유닛들(402a)로부터의 작업들을 그들 각자의 채널과 연관된 타이밍 제어 프로세싱 유닛들(402b)로 라우팅할 수 있다.
도 7은 온-다이 메모리 마이크로컨트롤러(150)를 갖는 집적 회로 디바이스(700)의 일 실시예를 도시한 개략적인 블록도이다. 도시된 실시예에서, 메모리 어레이(200)(예를 들어, 하나 이상의 다이 평면 등)는 집적 회로 디바이스(700)의 하나의 레벨(예를 들어, 도체, 절연체, 반도체 등의 하나 이상의 층)에 있고 마이크로컨트롤러(150) 및 다른 회로(704)(예를 들어, 감지 증폭기, 워드 라인 스위치 등)는 집적 회로 디바이스(700)의 상이한 레벨(예를 들어, 어레이(200) 아래)에 있고, 하나 이상의 상호 접속부(702)(예를 들어, 절연 층, 도전 층, 스루 실리콘 비아, 홀, 버스 등)를 통해 메모리 어레이(200)와 통신한다. 도시된 실시예에서, 메모리 어레이(200)는 집적 회로 디바이스(700)의 제1 레벨에 있고, 마이크로컨트롤러(150)는 제1 레벨에 평행하고 그로부터 오프셋된 집적 회로 디바이스(700)의 제2 레벨에 있다. 기판(706)은 집적 회로 디바이스(700)의 제3 레벨(예를 들어, 하나 이상의 다른 층이 그 상에 형성 및/또는 퇴적되는 지지 구조)을 포함하고, 다른 층들에 평행하고 그로부터 오프셋된다.
도 8은 온-다이 메모리 마이크로컨트롤러(150)를 위한 방법(800)의 일 실시예를 도시한 개략적인 흐름도이다. 방법(800)은 시작되고, 마이크로컨트롤러(150)가 집적 회로 디바이스(123)의 메모리 어레이(200)에 대한 메모리 동작에 대한 요청(예를 들어, 판독 요청, 기입/프로그램 요청, 소거 요청 등)을 수신한다(802).
흐름 제어 프로세싱 유닛(402a) 및/또는 스레드 관리 유닛(502)이 메모리 동작에 대한 수신된(802) 요청에 대한 작업들을 상이한 프로세싱 유닛들(302a-n, 402a-d, 404a-n)에 할당한다(804). 하나 이상의 프로세싱 유닛(302a-n, 402a-d, 404a-n)이 할당된 작업들(804)을 실행하여(806) 메모리 동작을 완료하고 방법(800)은 종료된다.
도 9는 온-다이 메모리 마이크로컨트롤러(150)를 위한 방법(900)의 일 실시예를 도시한 개략적인 흐름도이다. 방법(900)은 시작되고, 마이크로컨트롤러(150)가 집적 회로 디바이스(123)의 메모리 어레이(200)에 대한 메모리 동작에 대한 요청(예를 들어, 판독 요청, 기입/프로그램 요청, 소거 요청 등)을 수신한다(902).
흐름 제어 프로세싱 유닛(402a) 및/또는 스레드 관리 유닛(502)이 메모리 동작에 대한 수신된(902) 요청에 대한 작업들을 결정한다(904). 흐름 제어 프로세싱 유닛(402a) 및/또는 스레드 관리 유닛(502)은 임의의 흐름 제어 작업이 있는지를 결정하고(906), 흐름 제어 프로세싱 유닛(402a)은 결정된(906) 흐름 제어 작업을 실행한다(908). 흐름 제어 프로세싱 유닛(402a) 및/또는 스레드 관리 유닛(502)은 임의의 타이밍 제어 작업이 있는지를 결정하고(910), 타이밍 제어 프로세싱 유닛(402b)이 결정된(910) 타이밍 제어 작업을 실행한다(912). 흐름 제어 프로세싱 유닛(402a) 및/또는 스레드 관리 유닛(502)은 임의의 전압 제어 작업이 있는지를 결정하고(914), 전압 제어 프로세싱 유닛(402d)은 결정된(914) 전압 제어 작업을 실행한다(916). 흐름 제어 프로세싱 유닛(402a) 및/또는 스레드 관리 유닛(502)은 임의의 데이터 래치 제어 작업이 있는지를 결정하고(918), 데이터 래치 제어 프로세싱 유닛(402c)은 결정된(918) 데이터 래치 제어 작업을 실행한다(920). 방법(900)은 계속되고, 마이크로컨트롤러(150)는 메모리 동작에 대한 하나 이상의 추가 요청을 수신한다(902).
데이터를 저장하기 위한 수단은, 다양한 실시예에서, 메모리 디바이스(120), 메모리 매체(122), 메모리 요소(123), 메모리 어레이(200), 휘발성 메모리 매체(122)(예를 들어, RAM, DRAM, SDRAM, DDR SDRAM, SRAM, T-RAM, Z-RAM 등), 비휘발성 메모리 매체(122)(예를 들어, ReRAM, 멤리스터 메모리, 프로그램가능 금속화 셀 메모리, PCM, PCME, PRAM, PCRAM, 오보닉 통합 메모리, C-RAM, NAND 플래시 메모리, 2D NAND 플래시 메모리, 3D NAND 플래시 메모리, NOR 플래시 메모리, 나노 RAM 또는 NRAM, 나노결정 유선 기반 메모리, 실리콘-산화물 기반 10 나노미터 미만 프로세스 메모리, 그래핀 메모리, SONOS 메모리, PMC 메모리, CBRAM, MRAM, 자기 저장 매체, 예컨대, 하드 디스크 또는 테이프 드라이브, 광학 저장 매체, SCM 등) 등을 포함할 수 있다. 다른 실시예는 데이터를 저장하기 위한 유사한 또는 동등한 수단을 포함할 수 있다.
작업의 카테고리에 의해 작업들을 분류하기 위한 수단은, 다양한 실시예에서, 마이크로컨트롤러(150), 흐름 제어 프로세싱 유닛(402a), 스레드 관리 유닛(502), 데이터 래치 제어 프로세싱 유닛(402c), 집적 회로 디바이스(123), 및/또는 컴퓨터 판독가능 저장 매체에 저장된 다른 로직 하드웨어 또는 컴퓨터 실행가능 코드를 포함할 수 있다. 다른 실시예들은 작업의 카테고리에 의해 작업들을 분류하기 위한 유사한 또는 동등한 수단을 포함할 수 있다.
상이한 카테고리의 작업들을 병렬로 수행하기 위한 수단은, 다양한 실시예에서, 마이크로컨트롤러(150), 흐름 제어 프로세싱 유닛(402a), 타이밍 제어 프로세싱 유닛(402b), 데이터 래치 제어 프로세싱 유닛(402c), 전압 제어 프로세싱 유닛(402d), 외부 프로세싱 유닛(404a-n), 다른 프로세싱 유닛(302a-n, 402a-d, 404a-n), 집적 회로 디바이스(123), 및/또는 컴퓨터 판독가능 저장 매체에 저장된 다른 로직 하드웨어 또는 컴퓨터 실행가능 코드를 포함할 수 있다. 다른 실시예들은 상이한 카테고리의 작업들을 병렬로 수행하기 위한 유사한 또는 동등한 수단을 포함할 수 있다.
상이한 세트의 프로세싱 유닛들을 이용하여 더 적은 카테고리의 작업들을 수행하기 위한 수단은, 다양한 실시예에서, 마이크로컨트롤러(150), 흐름 제어 프로세싱 유닛(402a), 타이밍 제어 프로세싱 유닛(402b), 데이터 래치 제어 프로세싱 유닛(402c), 전압 제어 프로세싱 유닛(402d), 외부 프로세싱 유닛(404a-n), 다른 프로세싱 유닛(302a-n, 402a-d, 404a-n), 집적 회로 디바이스(123), 및/또는 컴퓨터 판독가능 저장 매체에 저장된 다른 로직 하드웨어 또는 컴퓨터 실행가능 코드를 포함할 수 있다. 다른 실시예들은 상이한 세트의 프로세싱 유닛들을 이용하여 더 적은 카테고리의 작업들을 수행하기 위한 유사한 또는 동등한 수단을 포함할 수 있다.
본 발명은 그의 사상 또는 본질적인 특성으로부터 벗어남이 없이 다른 특정 형태로 구체화될 수 있다. 기술된 실시예는 모든 면에서 단지 예시적인 것이고 제한적이 아닌 것으로 간주되어야 한다. 따라서, 본 발명의 범주는, 전술한 설명에 의해서가 아니라 첨부된 청구범위에 의해 나타내어진다. 청구범위의 등가물의 의미 및 범위 내에 있는 모든 변화는 그의 범주 내에 포함되어야 한다.

Claims (25)

  1. 장치로서,
    집적 회로 디바이스 내의 비휘발성 메모리 셀들의 어레이;
    상기 집적 회로 디바이스 내의 마이크로컨트롤러 유닛; 및
    상기 마이크로컨트롤러 유닛의 복수의 프로세싱 유닛들을 포함하며, 상이한 프로세싱 유닛들이 상기 비휘발성 메모리 셀들의 어레이에 대해 상이한 카테고리의 작업들을 병렬로 수행하는, 장치.
  2. 제1항에 있어서, 상기 집적 회로 디바이스 내의 하나 이상의 추가 마이크로컨트롤러 유닛들을 추가로 포함하며, 상기 하나 이상의 추가 마이크로컨트롤러 유닛들은 상기 마이크로컨트롤러 유닛보다 더 적은 프로세싱 유닛들을 포함하고 더 적은 카테고리의 작업들을 수행하는, 장치.
  3. 제2항에 있어서, 상기 마이크로컨트롤러 유닛의 상기 복수의 프로세싱 유닛들은 상기 비휘발성 메모리 셀들의 어레이에 대해 복수의 테스트 동작들을 수행하도록 구성된 내장 자체 테스트 유닛을 포함하고, 상기 하나 이상의 추가 마이크로컨트롤러 유닛들의 상기 더 적은 프로세싱 유닛들은 내장 자체 테스트 유닛을 갖지 않는, 장치.
  4. 제2항에 있어서, 상기 마이크로컨트롤러 유닛의 상기 복수의 프로세싱 유닛들은 상기 비휘발성 메모리 셀들의 어레이에 대해 프로그램 동작들 및 판독 동작들을 수행하도록 구성되고, 상기 하나 이상의 추가 마이크로컨트롤러 유닛들의 상기 더 적은 프로세싱 유닛들은 상기 비휘발성 메모리 셀들의 어레이에 대해 판독 동작들을 수행하고 프로그램 동작들을 수행하지 않도록 구성되는, 장치.
  5. 제4항에 있어서, 상기 마이크로컨트롤러 유닛은 상기 비휘발성 메모리 셀들의 어레이의 각각의 서브세트에 대해 상기 프로그램 동작들을 수행하도록 구성되고, 상기 하나 이상의 추가 마이크로컨트롤러 유닛들은 상기 비휘발성 메모리 셀들의 어레이의 상이한 서브세트들에 대해 판독 동작들을 수행하도록 구성되는, 장치.
  6. 제1항에 있어서, 상기 비휘발성 메모리 셀들의 어레이는 상기 집적 회로 디바이스의 제1 레벨에 있고, 상기 마이크로컨트롤러 유닛은 상기 집적 회로 디바이스의 제2 레벨에 있으며, 상기 제2 레벨은 상기 제1 레벨에 평행하고 상기 제1 레벨로부터 오프셋되는, 장치.
  7. 제1항에 있어서, 상기 마이크로컨트롤러 유닛에 대한 클록 레이트는 상기 마이크로컨트롤러가 단일 프로세싱 유닛을 이용하여 상기 비휘발성 메모리 셀들의 어레이에 대해 데이터 동작들을 연속하여, 상기 데이터 동작들의 레이턴시를 증가시킴이 없이 수행할 수 있는 클록 레이트보다 낮게 설정되고, 상기 마이크로컨트롤러 유닛의 상기 복수의 프로세싱 유닛들은 상기 설정된 클록 레이트로 상기 비휘발성 메모리 셀들의 어레이에 대해 데이터 동작들을 병렬로, 상기 데이터 동작들의 레이턴시를 증가시킴이 없이 수행하는, 장치.
  8. 제1항에 있어서, 상기 마이크로컨트롤러 유닛의 상기 복수의 프로세싱 유닛들은 상기 상이한 카테고리의 작업들과 연관된 상이한 명령어 세트들을 지원하는, 장치.
  9. 제1항에 있어서, 상기 복수의 프로세싱 유닛들은 흐름 제어 프로세싱 유닛, 타이밍 제어 프로세싱 유닛, 전압 제어 프로세싱 유닛, 및 데이터 래치 제어 프로세싱 유닛 중 하나 이상을 포함하는, 장치.
  10. 제1항에 있어서, 상기 상이한 카테고리의 작업들은 흐름 제어 작업들, 타이밍 제어 작업들, 데이터 래치 제어 작업들, 전압 제어 작업들, 및 내장 자체 테스트 작업들 중 하나 이상을 포함하는, 장치.
  11. 제1항에 있어서, 상기 집적 회로 디바이스의 휘발성 메모리를 추가로 포함하며, 상기 복수의 프로세싱 유닛들은 상기 상이한 카테고리의 작업들을 수행하기 위한 데이터를 상기 휘발성 메모리에 저장하고, 상기 복수의 프로세싱 유닛들의 내장 자체 테스트 유닛은 상기 비휘발성 메모리 셀들의 어레이로부터 판독된 테스트 데이터를 상기 휘발성 메모리의 일부에 저장하고, 상기 휘발성 메모리의 상기 일부는 상기 내장 자체 테스트 유닛의 테스트 모드에 있지 않을 때 상기 복수의 프로세싱 유닛들의 다른 프로세싱 유닛들에 의해 달리 사용되는, 장치.
  12. 시스템으로서,
    비휘발성 메모리 매체를 포함하는 집적 회로 디바이스;
    상기 비휘발성 메모리 매체에 대한 작업들을 수행하기 위한 복수의 프로세싱 유닛들을 갖는 마이크로컨트롤러; 및
    상기 마이크로컨트롤러보다 더 적은 프로세싱 유닛들을 포함하는 하나 이상의 추가 마이크로컨트롤러들을 포함하는, 시스템.
  13. 제12항에 있어서, 상기 복수의 프로세싱 유닛들의 상이한 프로세싱 유닛들은 상기 비휘발성 메모리 매체에 대해 상이한 타입의 작업들을 병렬로 수행하고, 상기 하나 이상의 추가 마이크로컨트롤러들은 상기 마이크로컨트롤러보다 더 적은 타입의 작업들을 수행하는, 시스템.
  14. 제12항에 있어서, 상기 비휘발성 메모리 매체는 상기 집적 회로 디바이스의 제1 레벨에 배치되고, 상기 마이크로컨트롤러 및 상기 하나 이상의 추가 마이크로컨트롤러들은 상기 집적 회로 디바이스의 제2 레벨에 배치되며, 상기 제2 레벨은 상기 제1 레벨에 평행하고 상기 제1 레벨로부터 오프셋되는, 시스템.
  15. 제12항에 있어서, 상기 마이크로컨트롤러의 상기 복수의 프로세싱 유닛들은 상기 비휘발성 메모리 매체에 대해 복수의 테스트 동작들을 수행하도록 구성된 내장 자체 테스트 유닛을 포함하고, 상기 하나 이상의 추가 마이크로컨트롤러들의 상기 더 적은 프로세싱 유닛들은 내장 자체 테스트 유닛을 갖지 않는, 시스템.
  16. 제12항에 있어서, 상기 마이크로컨트롤러의 상기 복수의 프로세싱 유닛들은 상기 비휘발성 메모리 매체에 대해 프로그램 동작들 및 판독 동작들을 수행하도록 구성되고, 상기 하나 이상의 추가 마이크로컨트롤러들의 상기 더 적은 프로세싱 유닛들은 상기 비휘발성 메모리 매체에 대해 판독 동작들을 수행하고 프로그램 동작들을 수행하지 않도록 구성되는, 시스템.
  17. 제16항에 있어서, 상기 마이크로컨트롤러 유닛은 상기 비휘발성 메모리 매체의 각각의 다이 평면에 대해 상기 프로그램 동작들을 수행하도록 구성되고, 상기 하나 이상의 추가 마이크로컨트롤러 유닛들은 상기 비휘발성 메모리 매체의 상이한 다이 평면들에 대해 판독 동작들을 수행하도록 구성되는, 시스템.
  18. 장치로서,
    데이터를 저장하기 위한 수단;
    작업의 카테고리에 의해 상기 데이터를 저장하기 위한 수단에 대해 작업들을 분류하기 위한 수단; 및
    상기 데이터를 저장하기 위한 수단에 대해 상이한 프로세싱 유닛들을 사용하여 상기 데이터를 저장하기 위한 수단에 대해 상이한 카테고리의 작업들을 병렬로 수행하기 위한 수단을 포함하는, 장치.
  19. 제18항에 있어서, 상기 데이터를 저장하기 위한 수단에 대해 상이한 세트의 프로세싱 유닛들을 사용하여 상기 데이터를 저장하기 위한 수단에 대해 더 적은 카테고리의 작업들을 수행하기 위한 수단을 추가로 포함하는, 장치.
  20. 제18항에 있어서, 상기 데이터를 저장하기 위한 수단은 집적 회로 디바이스의 제1 레벨에 배치되고, 상기 상이한 카테고리의 작업들을 수행하기 위한 수단 및 상기 상이한 프로세싱 유닛들은 상기 집적 회로 디바이스의 제2 레벨에 배치되며, 상기 제2 레벨은 상기 제1 레벨에 평행하고 상기 제1 레벨로부터 오프셋되는, 장치.
  21. 방법으로서,
    메모리 동작에 대한 요청을 수신하는 단계;
    상기 메모리 동작을 완료하기 위한 복수의 작업들을 결정하는 단계 - 상기 복수의 작업들의 상이한 작업들은 상이한 명령어 세트들과 연관됨 -; 및
    마이크로컨트롤러의 상이한 프로세싱 유닛들을 사용하여 상기 복수의 작업들의 상기 상이한 작업들을 병렬로 수행하는 단계 - 상기 상이한 프로세싱 유닛들은 상기 상이한 명령어 세트들을 지원함 - 를 포함하는, 방법.
  22. 제21항에 있어서, 상기 마이크로컨트롤러보다 더 적은 프로세싱 유닛들을 갖고 더 적은 명령어 세트들을 지원하는 추가 마이크로컨트롤러를 사용하여 후속 메모리 동작을 수행하는 단계를 추가로 포함하는, 방법.
  23. 장치로서,
    집적 회로 디바이스의 메모리 어레이를 위한 마이크로컨트롤러를 포함하며, 상기 마이크로컨트롤러는,
    제1 프로세싱 유닛을 사용하여 메모리 동작을 위한 복수의 작업들을 선택하고;
    제2 프로세싱 유닛을 사용하여 상기 메모리 동작을 위한 상기 복수의 작업들의 타이밍을 제어하고;
    제3 프로세싱 유닛을 사용하여 상기 메모리 동작을 위한 상기 복수의 작업들에 대한 전압들을 설정하도록 구성되는, 장치.
  24. 제23항에 있어서, 상기 집적 회로 디바이스를 위한 하나 이상의 추가 마이크로컨트롤러들을 추가로 포함하며, 상기 하나 이상의 추가 마이크로컨트롤러 유닛들은 상기 마이크로컨트롤러보다 더 적은 프로세싱 유닛들을 포함하는, 장치.
  25. 제24항에 있어서, 상기 마이크로컨트롤러는 프로그램 동작들, 판독 동작들, 및 테스트 동작들을 수행하도록 구성되고, 상기 하나 이상의 추가 마이크로컨트롤러들은 판독 동작들을 수행하고 프로그램 동작들 및 테스트 동작들을 수행하지 않도록 구성되는, 장치.
KR1020197026661A 2017-06-12 2018-03-23 멀티코어 온-다이 메모리 마이크로컨트롤러 KR102238957B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762518584P 2017-06-12 2017-06-12
US62/518,584 2017-06-12
IN201841008353 2018-03-07
IN201841008353 2018-03-07
PCT/US2018/024103 WO2018231313A1 (en) 2017-06-12 2018-03-23 Multicore on-die memory microcontroller

Publications (2)

Publication Number Publication Date
KR20190115072A true KR20190115072A (ko) 2019-10-10
KR102238957B1 KR102238957B1 (ko) 2021-04-13

Family

ID=68206363

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197026661A KR102238957B1 (ko) 2017-06-12 2018-03-23 멀티코어 온-다이 메모리 마이크로컨트롤러

Country Status (4)

Country Link
JP (1) JP2020510951A (ko)
KR (1) KR102238957B1 (ko)
CN (1) CN110447075B (ko)
DE (1) DE112018000842T5 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210101785A (ko) * 2020-02-11 2021-08-19 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
CN113568848B (zh) * 2020-07-29 2023-07-11 华为技术有限公司 处理器、信号调整方法及计算机系统
CN112612746A (zh) * 2020-12-18 2021-04-06 中国电子科技集团公司第四十七研究所 一种基于存储器互联的可重构微处理器系统
CN116189745B (zh) * 2023-04-26 2023-09-15 长鑫存储技术有限公司 存储器和命令序列处理系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090097051A (ko) * 2008-03-10 2009-09-15 주식회사 하이닉스반도체 고속 동작하는 반도체 스토리지 시스템 및 그 제어 방법
US20160321202A1 (en) * 2015-04-30 2016-11-03 Microchip Technology Incorporated Central Processing Unit With Enhanced Instruction Set

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5615159A (en) * 1995-11-28 1997-03-25 Micron Quantum Devices, Inc. Memory system with non-volatile data storage unit and method of initializing same
JP4153882B2 (ja) * 2004-02-17 2008-09-24 株式会社東芝 半導体集積回路装置
JP2006127623A (ja) * 2004-10-28 2006-05-18 Sony Corp 半導体記憶装置とそのアクセス方法
US9448940B2 (en) * 2011-10-28 2016-09-20 The Regents Of The University Of California Multiple core computer processor with globally-accessible local memories
KR101903095B1 (ko) * 2011-11-21 2018-10-02 삼성전자주식회사 불휘발성 메모리 장치 및 불휘발성 메모리 장치를 제어하는 컨트롤러의 동작 방법
US20140137119A1 (en) * 2012-11-15 2014-05-15 Elwha LLC, a limited liability corporation of the State of Delaware Multi-core processing in memory
US9478292B2 (en) * 2013-10-27 2016-10-25 Sandisk Technologies Llc Read operation for a non-volatile memory
US9691452B2 (en) * 2014-08-15 2017-06-27 Micron Technology, Inc. Apparatuses and methods for concurrently accessing different memory planes of a memory
US9558846B1 (en) * 2015-11-04 2017-01-31 Texas Instruments Incorporated Feedback validation of arbitrary non-volatile memory data
US9564233B1 (en) * 2016-03-04 2017-02-07 Sandisk Technologies Llc Open block source bias adjustment for an incompletely programmed block of a nonvolatile storage device
JP6753746B2 (ja) * 2016-09-15 2020-09-09 キオクシア株式会社 半導体記憶装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090097051A (ko) * 2008-03-10 2009-09-15 주식회사 하이닉스반도체 고속 동작하는 반도체 스토리지 시스템 및 그 제어 방법
US20160321202A1 (en) * 2015-04-30 2016-11-03 Microchip Technology Incorporated Central Processing Unit With Enhanced Instruction Set

Also Published As

Publication number Publication date
CN110447075B (zh) 2023-07-21
DE112018000842T5 (de) 2019-12-24
KR102238957B1 (ko) 2021-04-13
CN110447075A (zh) 2019-11-12
JP2020510951A (ja) 2020-04-09

Similar Documents

Publication Publication Date Title
US10635526B2 (en) Multicore on-die memory microcontroller
TWI594182B (zh) 用於在共用記憶體通道上實施多位準記憶體階層之裝置及方法
US10496371B2 (en) Key-value compaction
TWI587312B (zh) 支援近記憶體存取及遠記憶體存取的及半導體晶片及電腦系統
KR101692417B1 (ko) 다이렉트 액세스를 갖는 다중-레벨 메모리
KR102238957B1 (ko) 멀티코어 온-다이 메모리 마이크로컨트롤러
US10528286B2 (en) Interface for non-volatile memory
US10372446B2 (en) Technology to dynamically modulate memory device read granularity
US20180136851A1 (en) Command queue for storage operations
US20190102287A1 (en) Remote persistent memory access device
US11037627B2 (en) Cell block allocation for hybrid dual write
WO2017165042A1 (en) Multi-level memory management
WO2013028859A1 (en) Methods and systems for mapping a peripheral function onto a legacy memory interface
TW201329710A (zh) 用於實施多位準記憶體階層之設備與方法
US10725933B2 (en) Method and apparatus for redirecting memory access commands sent to unusable memory partitions
CN116324744A (zh) 具有多个命令子队列和对应的仲裁器的存储器控制器
US20210286551A1 (en) Data access ordering for writing-to or reading-from memory devices
US9823880B1 (en) Method and apparatus for initiating pre-read operation before completion of data load operation
EP4202704A1 (en) Interleaving of heterogeneous memory targets
US10606488B2 (en) Selective data flush in a storage device
US11487548B2 (en) Dynamic re-evaluation of parameters for non-volatile memory using microcontroller
US20230064007A1 (en) Encoding additional states in a three-dimensional crosspoint memory architecture
US20230178148A1 (en) Read algorithms for three-dimensional crosspoint memory architectures
KR20220150199A (ko) 최적화된 판독을 갖는 비휘발성 메모리
CN116917854A (zh) 跨多个协议管理持久性存储器区域

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