KR20220002265A - 디바이스, 센서 노드, 액세스 콘트롤러, 데이터 전송 방법 및 마이크로 콘트롤러에서의 처리 방법 - Google Patents

디바이스, 센서 노드, 액세스 콘트롤러, 데이터 전송 방법 및 마이크로 콘트롤러에서의 처리 방법 Download PDF

Info

Publication number
KR20220002265A
KR20220002265A KR1020217029864A KR20217029864A KR20220002265A KR 20220002265 A KR20220002265 A KR 20220002265A KR 1020217029864 A KR1020217029864 A KR 1020217029864A KR 20217029864 A KR20217029864 A KR 20217029864A KR 20220002265 A KR20220002265 A KR 20220002265A
Authority
KR
South Korea
Prior art keywords
mram
data
volatile
read
cpu
Prior art date
Application number
KR1020217029864A
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 고쿠리츠다이가쿠호진 도호쿠다이가쿠
Publication of KR20220002265A publication Critical patent/KR20220002265A/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • G11C11/165Auxiliary circuits
    • G11C11/1675Writing or programming circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • G11C11/165Auxiliary circuits
    • G11C11/1673Reading or sensing circuits or methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • 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
    • 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/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/141Discrete Fourier transforms
    • G06F17/142Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • G11C11/161Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect details concerning the memory cell structure, e.g. the layers of the ferromagnetic memory cell
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • G11C11/165Auxiliary circuits
    • G11C11/1653Address circuits or decoders
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • G11C11/165Auxiliary circuits
    • G11C11/1659Cell access
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • G11C11/165Auxiliary circuits
    • G11C11/1697Power supply circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/14Power supply arrangements, e.g. power down, chip selection or deselection, layout of wirings or power grids, or multiple supply levels
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/14Power supply arrangements, e.g. power down, chip selection or deselection, layout of wirings or power grids, or multiple supply levels
    • G11C5/147Voltage reference generators, voltage or current regulators; Internally lowered supply levels; Compensation for voltage drops
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K3/00Circuits for generating electric pulses; Monostable, bistable or multistable circuits
    • H03K3/02Generators characterised by the type of circuit or by the means used for producing pulses
    • H03K3/353Generators characterised by the type of circuit or by the means used for producing pulses by the use, as active elements, of field-effect transistors with internal or external positive feedback
    • H03K3/356Bistable circuits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K3/00Circuits for generating electric pulses; Monostable, bistable or multistable circuits
    • H03K3/02Generators characterised by the type of circuit or by the means used for producing pulses
    • H03K3/353Generators characterised by the type of circuit or by the means used for producing pulses by the use, as active elements, of field-effect transistors with internal or external positive feedback
    • H03K3/356Bistable circuits
    • H03K3/3562Bistable circuits of the master-slave type

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Power Engineering (AREA)
  • Computational Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computing Systems (AREA)
  • Discrete Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Memory System (AREA)

Abstract

센서 노드에 적용 가능한 저전력이면서 고성능의 디바이스, 이것을 사용한 센서 노드, 액세스 콘트롤러, 데이터 전송 방법 및 마이크로 콘트롤러에서의 처리 방법을 제공한다. 디바이스는, MRAM과, 불휘발 메모리를 포함하여 구성된 불휘발 CPU와, 불휘발 메모리를 포함하여 구성되고 불휘발 CPU의 연산 처리의 일부를 실행하는 불휘발 FPGA-ACC와, MRAM과 불휘발 CPU와 불휘발 FPGA-ACC에서의 각 메모리 셀로의 전력 공급을 제어하는 파워게이팅 제어부를 구비한다. 또한, MRAM으로부터 판독 시에 미리 데이터를 판독하고 축적함으로써 MRAM로의 액세스를 제어하는 액세스 콘트롤러를 구비한다.

Description

디바이스, 센서 노드, 액세스 콘트롤러, 데이터 전송 방법 및 마이크로 콘트롤러에서의 처리 방법
발명은, 디바이스, 센서 노드, 액세스 콘트롤러, 데이터 전송 방법 및 마이크로 콘트롤러에서의 처리 방법에 관한 것이며, 더욱 상세하게는, IoT(Internet-of-Things) 어플케이션에 있어서 보다 저전력 및 고(高)퍼포먼스로 이용 가능한 디바이스로서의 마이크로 콘트롤러 유닛(MCU: Microcontroller Unit) 및 센서 노드와, 액세스 콘트롤러, 데이터 전송 방법 및 마이크로 콘트롤러에서의 처리 방법에 관한 것이다.
전력 공급이 필요한 센서 노드에 적용할 수 있는 저전력 및 고성능의 마이크로 콘트롤러 유닛이 요구되어 오고 있다. 이 요구에 대하여 MCU에 탑재되는 불휘발 메모리의 사용이 연구 개발되어 오고 있다(비특허문헌 1 내지 5). 예를 들면, 비특허문헌 1에서는, 30MHz에서의 32비트 동작이 실증된 불휘발 MCU가 개시되어 있고, 비특허문헌 2에서는, 100MHz에서의 8비트 동작이 실증된 불휘발 MCU가 개시되어 있다.
그러나, 이들 문헌에 개시되어 있는 MCU의 성능에서는, 대량의 수신 신호를 처리하여, 유익한 정보를 추출하는 센서 노드에는 적합하지 않다. 이는, 데이터 센터에 전송되는 데이터량을 억제할 수 없기 때문이다.
이에, 본 발명에서는, 센서 노드에 적용 가능한 저전력이면서 고성능의 디바이스 및 이것을 사용한 센서 노드를 제공하는 것을 목적으로 한다. 또한, 이들와 관련된 액세스 콘트롤러, 데이터 전송 방법 및 마이크로 콘트롤러에서의 처리 방법을 제공하는 것을 목적으로 한다.
발명의 컨셉은 하기와 같다.
[1] 복수의 메모리 셀이 선택 트랜지스터와 MTJ를 포함하여 복수의 영역에 나누어져 구성된 MRAM과,
불휘발 메모리를 포함하여 구성된 불휘발 CPU와,
불휘발 메모리를 포함하여 구성되며, 상기 불휘발 CPU의 연산 처리의 일부를 실행하는 불휘발 FPGA-ACC와,
상기 MRAM과 상기 불휘발 CPU와 상기 불휘발 FPGA-ACC에서의 각 메모리 셀로의 전력 공급을 제어하는 파워게이팅 제어부
를 구비하는, 디바이스.
[2] 상기 불휘발 CPU가 상기 MRAM에 데이터를 송신함으로써 상기 불휘발 FPGA-ACC는 상기 MRAM으로부터 상기 데이터를 판독하고 또한, 상기 불휘발 FPGA-ACC가 상기 MRAM에 데이터를 송신함으로써 상기 불휘발 CPU는 상기 MRAM으로부터 상기 데이터를 판독하는, 상기 [1]에 기재된 디바이스.
[3] 상기 불휘발 FPGA가, 불휘발의 기억 기능을 구비하고, 상기 기능에 의해 콘피규레이션(configuration) 데이터가 보존되는, 상기 [1] 또는 [2]에 기재된 디바이스.
[4] 상기 MRAM의 각 메모리 셀이, 2개의 상기 선택 트랜지스터와 2개의 상기 MTJ를 포함하는 2T-2MTJ로 구성되어 있는, 상기 [1] 내지 [3] 중 어느 한 항에 기재된 디바이스.
[5] 상기 MRAM에서의 상기 복수의 영역의 각각이 분할된 블록 단위로 구성되며, 상기 블록 단위로 파워게이팅되는, 상기 [1] 내지 [4] 중 어느 한 항에 기재된 디바이스.
[6] 상기 불휘발 FPGA가, 상기 불휘발 CPU 상에서의 연산의 일부를 대신 행하게 하는 타일과, 상기 불휘발 CPU 상에서의 연산의 일부를 상기 타일보다 고속으로 대신 행하게 하는 DSP(Digital Signal Processor)를 가지고 있는, 상기 [1]내지 [5] 중 어느 한 항에 기재된 디바이스.
[7] 상기 MRAM으로부터 판독 시에 미리 데이터를 판독하고 축적함으로써 상기 MRAM로의 액세스를 제어하는 액세스 콘트롤러를, 더 구비하는, 상기 [1] 내지 [6] 중 어느 한 항에 기재된 디바이스.
[8] 상기 액세스 콘트롤러가, 상기 불휘발 CPU로부터 데이터의 판독 명령을 받으면 미리 상기 MRAM으로부터 판독하고 있는 지의 여부 판단하고, 판독 완료인 경우에는, 축적하고 있는 데이터를 상기 불휘발 CPU에 송신하는, 상기 [7]에 기재된 디바이스.
[9] 상기 액세스 콘트롤러가,
판독처인 MRAM의 어드레스의 입력을 받으면 상기 어드레스를 유지하는 어드레스 유지용 레지스터와,
상기 어드레스 유지용 레지스터에서 유지되고 있는 상기 MRAM의 복수의 지정처를 판독하도록 상기 MRAM에 출력하는 멀티플렉서와,
상기 MRAM으로부터 판독한 데이터를 유지하는 복수의 데이터 유지용 레지스터와,
판독처의 지정과 함께 판독 명령을 받으면, 상기 판독처의 지정에 관한 어드레스를 상기 어드레스 유지용 레지스터에 유지되고 있는 판독 어드레스와 비교하는 컴퍼레이터(comparator)
를 구비하고,
판독처의 지정과 함께 판독 명령을 받으면, 미리 상기 MRAM으로부터 판독하고 있는 것으로 상기 컴퍼레이터가 판단하고 있는 경우에는, 이미 판독하여 상기 복수의 데이터 유지용 레지스터 중 어느 하나의 레지스터에 유지하고 있는 데이터를, 상기 판독 명령에 대한 응답하여 출력하는, 상기 [7] 또는 [8]에 기재된 디바이스.
[10] 상기 액세스 콘트롤러가, 상기 멀티플렉서에 접속되는 프리페치 어드레스 생성기를, 더욱 구비하고,
상기 프리페치 어드레스 생성기가, 상기 어드레스 유지용 레지스터에 유지되고 있는 판독처의 어드레스를 포함하는 어드레스를 생성하는, 상기 [9]에 기재된 액세스 콘트롤러.
[11] 평균 전력이 100μW 이하에서 사용 가능한, 상기 [1] 내지 [10] 중 어느 한 항에 기재된 디바이스.
[12] 간헐 동작 간격이 100m초 이하로 설정 가능한, 상기 [1] 내지 [11]의 어느 한 항에 기재된 디바이스.
[13] 상기 [1] 내지 [12] 중 어느 한 항에 기재된 디바이스를 포함하여 구성된, 센서 노드.
[14] 판독처인 MRAM의 어드레스의 입력을 받으면 상기 어드레스를 유지하는 어드레스 유지용 레지스터와,
상기 어드레스 유지용 레지스터에서 유지되고 있는 상기 MRAM의 복수의 지정처를 판독하도록 상기 MRAM에 출력하는 멀티플렉서와,
상기 MRAM으로부터 판독한 데이터를 유지하는 복수의 데이터 유지용 레지스터와,
판독처의 지정과 함께 판독 명령을 받으면, 상기 판독처의 지정에 관한 어드레스를 상기 어드레스 유지용 레지스터에 유지되고 있는 판독 어드레스와 비교하는 컴퍼레이터
를 구비하고,
판독처의 지정과 함께 판독 명령을 받으면, 미리 상기 MRAM으로부터 판독하고 있는 것으로 상기 컴퍼레이터가 판단하고 있는 경우에는, 이미 판독하여 상기 복수의 데이터 유지용 레지스터 중 어느 하나의 레지스터에 유지하고 있는 데이터를, 상기 판독 명령에 대한 응답하여 출력하는, 액세스 콘트롤러.
[15] 상기 멀티플렉서에 접속되는 프리페치 어드레스 생성기를, 더욱 구비하고,
상기 프리페치 어드레스 생성기가, 상기 어드레스 유지용 레지스터에 유지되고 있는 판독처의 어드레스를 포함하는 어드레스를 생성하는, 상기 [14]에 기재된 액세스 콘트롤러.
[16] CPU와 MRAM 사이에서의 액세스 콘트롤러를 개재한 데이터 전송 방법으로서,
상기 액세스 콘트롤러가, 상기 CPU로부터 판독 어드레스와 함께 데이터 판독 명령을 받으면, 상기 MRAM으로부터 상기 판독 어드레스를 포함한 복수의 어드레스의 데이터를 미리 판독해 두고,
상기 CPU로부터 다음 판독 어드레스와 함께 데이터의 판독 명령을 받으면, 이미 판독한 데이터인지의 여부를 판단하고, 이미 판독한 데이터의 판독 명령인 경우에는, 상기 MRAM으로부터의 판독을 행하지 않고, 미리 판독한 데이터를, 판독 명령의 응답으로 하는, 데이터 전송 방법.
[17] 불휘발 CPU와 MRAM과 재구성형 연산 모듈로서의 불휘발 FPGA-ACC를 구비하는 마이크로 콘트롤러에서의 처리 방법으로서,
상기 MRAM에는, 상기 불휘발 CPU와 상기 불휘발 FPGA-ACC에서 주고받아지는 데이터를 유지하기 위한 영역이 설정되어 있고,
상기 불휘발 CPU로부터 상기 불휘발 FPGA-ACC에 입력되는 데이터가 상기 영역에 기입이 행해지고,
상기 불휘발 CPU로부터 상기 불휘발 FPGA-ACC에, 상기 기입 및 계산 개시의 준비가 종료한 것을 나타내는 신호가 전달되고,
상기 불휘발 FPGA-ACC가 상기 영역에 기입된 데이터를 사용하여 연산을 개시하고,
상기 연산의 종료 후, 상기 불휘발 FPGA-ACC의 계산 결과가, 상기 영역을 사용하여 상기 불휘발 CPU에 전달되는,
마이크로 콘트롤러에서의 처리 방법.
[18] 상기 불휘발 CPU 및 상기 불휘발 FPGA-ACC는, 파워게이팅 제어가 행해지는, 상기 [17]에 기재된 마이크로 콘트롤러에서의 처리 방법.
[19] 상기 파워게이팅 제어에 있어서는, 데이터의 대피 및 복귀 동작을 하지 않는, 상기 [18]에 기재된 마이크로 콘트롤러에서의 처리 방법.
[20] 상기 불휘발 FPGA-ACC에 의한 연산 처리가, 라플라시안 필터, DCT(Discrete Cosine Transform), FIR(Finite Impulse Response) 필터 및 FFT(Fast Fourier Transform) 중 어느 하나의 처리에 관한, 상기 [17] 내지 [19] 중 어느 한 항에 기재된 마이크로 콘트롤러에서의 처리 방법.
[21] 시퀀스에 의한 순차 처리를, 상기 불휘발 CPU와 불휘발 FPGA 베이스의 액셀러레이터(accelerator)에 의해 병렬 처리하는, 상기 [17] 내지 [20] 중 어느 한 항에 기재된 마이크로 콘트롤러에서의 처리 방법.
본 발명에 의하면, MRAM과 NV-CPU와 NV-FPGA가 불휘발의 메모리 셀을 사용하여 구성되어 있으므로, MRAM, NV-CPU, NV-FPGA의 메모리 셀에 저장되어 있는 데이터를 대피시키지 않고, 파워게이팅 제어부에 의해, 각 MRAM, NV-CPU, NV-FPGA의 각 모듈, 즉 비동작부의 전력 공급을 정지하는 파워게이팅에 의해, 쓸데없는 소비 전력을 배제할 수 있다. 또한, NV-FPGA를 구비하고, 이 재구성형 연산 모듈에 의해 다양한 신호 처리를 고속으로 실현할 수 있다. 또한, 액세스 콘트롤러에 의해 NV-CPU와 MRAM 사이의 데이터 전송을 효율화시킴으로써, 시스템 전체로서의 고속화가 가능하게 된다. 이와 같이 본 발명에 의하면, 저전력이면서 고성능의 디바이스 및 이것을 사용한 센서 노드를 제공할 수 있다.
도 1은 본 발명의 실시형태에 따른 디바이스의 구성도이다.
도 2는 본 발명의 컨셉을 설명하기 위한 도면이며, 도 2의 A는 종래의 CMOS 베이스에 의해 구성했을 때의 시간에 대한 전력을 나타낸 도면, 도 2의 B는 도 2의 A에 있어서 파워게이팅을 행한 경우의 시간에 대한 전력을 나타낸 도면, 도 2의 C는 도 2의 A에 있어서 휘발성 메모리 부분을 불휘발 메모리로 한 후에 파워게이팅을 행한 경우의 시간에 대한 전력을 나타낸 도면이다.
도 3은 본 발명의 컨셉을 설명하기 위한 도면이며, 도 3의 A는 파워게이팅을 행하고 CPU 상의 시퀀셜(sequential) 처리를 행했을 때의 시간에 대한 전력을 나타낸 도면, 도 3의 B는 디바이스에 내장되어 있는 FPGA에 의해 실행시켰을 때의 시간에 대한 전력을 나타낸 도면이다.
도 4는 센서 노드를 사용한 시스템의 구성도이다.
도 5는 센서 노드의 구성도이다.
도 6은 도 1을 구체화한 구성도이다.
도 7은 STT-MRAM이 구체적인 구성도이다.
도 8은 STT-MRAM의 동작 파형을 나타낸 도면이다.
도 9는 CPU와 MRAM 사이의 액세스 콘트롤러를 설명하기 위한 도면이다.
도 10은 데이터 전송 천이를 나타내기 위한 도면이며, 도 10의 A∼도 10의 F는 그 각 상태를 나타낸 도면이다.
도 11은 데이터 플로우의 예를 나타내고, 도 11의 A는 연속하는 메모리 어드레스에 배분되고 있는 16비트의 명령의 경우이며, 도 11의 B는 연속하는 메모리 어드레스에 배분되고 있는 32비트의 명령의 경우이다.
도 12는 액세스 콘트롤러에서의 시뮬레이션 파형을 나타낸 도면이다.
도 13은 액세스 콘트롤러와 MRAM과 NV-CPU에 의해 구성되는 시스템과 종래 시스템의 소비 전력을 비교한 도표이다.
도 14는 NV-CPU에 있어서 사용되는 MTJ 디바이스를 나타내는 단면도이다.
도 15는 불휘발 플립플롭(flip-flop) 회로의 예이다.
도 16은 시뮬레이션 파형을 나타낸 도면이다.
도 17은 플립플롭 동작을 나타낸 도면이다.
도 18은 기입 동작을 나타낸 도면이다.
도 19는 판독 동작을 나타낸 도면이다.
도 20은 NV-FPGA의 상세한 것을 나타낸 도면이다.
도 21은 NV-FPGA에서의 하나의 타일의 구성을 나타낸 도면이다.
도 22는 배선 스위치의 회로를 포함하는 회로의 일례를 나타낸 도면이다.
도 23은 6입력 LUT 회로의 블록도이다.
도 24는 불휘발 플립플롭 회로의 예를 나타내는 도면이다.
도 25a는, 도 24의 회로의 동작에 대하여, THROUGH 페이즈(CLK=1 및 CLK'=0)를 나타낸 도면이다.
도 25b는, 도 24의 회로의 동작에 대하여, HOLD 페이즈(CLK=0 및 CLK'=1)를 나타낸 도면이다.
도 25c는, 도 24의 회로의 동작에 대하여, STORE 페이즈를 나타낸 도면이다.
도 25d는, 도 24의 회로의 동작에 대하여, RESTORE 페이즈를 나타낸 도면이다.
도 26은 DSP 코어의 회로 구성을 나타낸 도면이다.
도 27은 실시예로서 제작한 칩의 상(像)이다.
도 28은 측정 파형을 나타낸 도면이다.
도 29는 Shmoo Plot를 나타낸 도면이다.
도 30은 간헐 동작 간격(Intermittent Operation Interval)과 평균 전력의 관계를 나타낸 도면이다.
도 31은 에너지 하베스팅에 의해 얻어지는 전력을 에너지원마다 나타낸 도면이다.
도 32는 라플라시안 필터, DCT(Discrete Cosine Transform), FIR(Finite Impulse Response) 필터, FFT(Fast Fourier Transform)의 각 처리에 의한 필요 전력을 나타낸 도면이다.
도 33은 본 실시예를 종래예(비특허문헌 1 내지 5)와 비교했을 때의 도표이다.
도 34는 도 33의 도표 중 동작 주파수와 IoT 어플리케이션을 상정했을 때의 평균 전력의 관계를 나타낸 도면이다.
이하, 도면을 참조하면서 본 발명의 실시형태에 대하여 상세하게 설명한다. 본 발명의 실시형태에서 설명한 사항에 관해 본 발명의 범위를 변경시키지 않는 범위에서 설계 변경할 수 있다.
도 1은, 본 발명의 실시형태에 따른 디바이스의 구성도이다. 본 발명의 실시형태에 따른 디바이스(1)는, 도 1에 나타낸 바와 같이, MRAM으로서의 STT-MRAM(Spin Transfer Torque-Magnetoresistive Random Access Memory)(2)과, NV-CPU(Nonvolatile Central Processing Unit)(3)와, NV-FPGA(Nonvolatile Field-Programmable Gate Array)(4)와, STT-MRAM(2)과 NV-CPU(3)와 NV-FPGA(4)에서의 각 메모리 셀로의 전력 공급을 제어하는 파워게이팅 제어부(5)와, STT-MRAM(2)으로부터 판독 시에 미리 데이터를 판독하고 축적함으로써 STT-MRAM(2)로의 액세스를 제어하는 액세스 콘트롤러(6)를 포함하여 구성되어 있다. STT-MRAM(2)으로의 액세스에는 액세스 콘트롤러(6)가 개재하고, 이 모듈이 버스(7)에 의해 접속되어 있다.
발명의 실시형태에 따른 디바이스(1), 구체적으로는 CU(Microcontroller Unit)에 있어서는, NV-CPU(3)가 T-MRAM(2)에 데이터를 송신함으로써 V-FPGA(4)는 STT-MRAM(2)으로부터 상기 데이터를 판독하고 또한, NV-FPGA(4)가 STT-MRAM(2)에 데이터를 송신함으로써 NV-CPU(3)는 STT-MRAM(2)로부터 상기 데이터를 판독하고 있다. 이는 하기의 것으로 의미한다. 즉, NV-CPU(3)에서의 연산 결과를 STT-MRAM(2)에 축적하고, NV-FPGA(4)는 STT-MRAM(2)에 축적된 연산 결과를 사용하여 더욱 연산하여 그 결과를 STT-MRAM(2)에 되돌려주고, NV-CPU(3)는 STT-MRAM(2)으로부터 NV-FPGA(4)에서의 연산 결과를 받고 있다.
본 발명의 실시형태에서는, 센서 노드 등에 적합한, 높은 연산 성능(예를 들면, 200∼300 MHz과 같은 몇백 MHz)과 저소비 전력 성능(예를 들면, 100μW 이하)을 동시에 실현하는 마이크로 컴퓨터를 제공할 수 있다. 저소비 전력 성능은, MRAM 이외의 불휘발 메모리를 사용함으로써 대기 시의 전력을 저감할 수 있으므로, 일정한 효과가 있을 수도 있다. 그러나, MRAM 이외의 불휘발 메모리를 사용하면, 고속 기입 및 고속 판독을 할 수 없다.
이에, 본 발명의 실시형태에서는, 몇백 MHz라는 연산 성능을 발휘시킬 수 있도록, 디바이스(1)로서의 MCU에서는, CPU와 FPGA에서의 연산에 관한 데이터를 축적하는 영역으로서 MRAM, 바람직하게는 STT-MRAM(2)을 채용하고 있다.
디바이스(1)는, 불휘발 마이크로 컴퓨터 칩, 불휘발 마이크로 컴퓨터, 불휘발 마이크로 콘트롤러 유닛으로도 칭할 수 있다.
STT-MRAM(2)은, 복수의 메모리 셀이 선택 트랜지스터와 MTJ(Magnetic Tunneling Junction)를 포함하여 복수의 영역으로 나누어져 구성되어 있다. 바람직하게는, STT-MRAM(2)은, 복수의 서브 어레이의 블록에 의해 구성되며, 도시하지 않은 전력 공급부로부터의 전력을 ON/OFF하기 위한 스위치가 블록마다 설치되어 있다. 파워게이팅 제어부(5)에 의해 STT-MRAM(2)을 블록 단위로 파워게이팅할 수 있다. 여기서의 블록 단위는, MRAM에서의 상기 복수의 영역의 각각이 분할된 블록 단위이며, 도 9에서의 MRAM0, MRAM1을 구성하는 MRAM 서브 어레이를 의미한다.
NV-CPU(3)는, 이 모듈에 탑재되는 메모리 부분이 모두 불휘발 메모리에 의해 구성되어 있다. NV-CPU(3)는, 이 모듈 전체에 대한, 도시하지 않은 전력 공급부로부터의 전력을 ON/OFF하기 위한 스위치가 설치되어 있다. NV-CPU(3)가 불휘발 메모리에 의해 구성되어서 있으므로, 상기 스위치를 ON/OFF할 때(즉, 파워게이팅 마다), CPU 내에서의 데이터의 대피 및 기입을 할 필요가 없고, 파워게이팅 제어를 할 수 있다. 당연히 데이터의 대피 및 기입을 하지 않으므로, 그 전력 소비도 없다. 일정량의 동작을 단속적(斷續的)으로 실행하고 또한 각 프로세스의 사이는 스탠바이 상태에 들어가는 디바이스, 특히 IoT 센서 노드에 있어서는, 파워게이팅 제어를 할 때, 데이터의 대피 및 기입이 불필요하므로, 특히 유효하다.
NV-FPGA(4)는, 불휘발 메모리를 포함하여 구성되어 있다. NV-FPGA(4)는, 타일마다 파워게이팅용의 스위치가 형성되어 있고, 도시하지 않은 전력 공급부로부터의 전력을 ON/OFF할 수 있다. 또한, NV-FPGA(4)가, DSP를 탑재하고 있는 경우에는, DSP에 도시하지 않은 전력 공급부로부터의 전력을 ON/OFF하기 위한 스위치가 설치되어 있다. NV-FPGA(4)가 불휘발 메모리를 포함하여 구성되어 있으므로, 상기 스위치를 ON/OFF할 때(즉, 파워게이팅 마다), FPGA 내에서의 데이터의 대피 및 기입을할 필요가 없고, 콘피규레이션 데이터의 대피 및 기입을 할 필요가 없다. 데이터 및 콘피규레이션 데이터의 대피 및 기입을 하지 않으므로, 그것에 의한 전력 소비가 없다. 종래와 같이 휘발 FPGA를 탑재하고 불휘발 FPGA를 탑재하지 않을 경우에는, 데이터나 콘피규레이션 데이터의 대피 및 기입이 파워게이팅마다 필요로 한다. 그러나, 본 발명의 실시형태에서는, FPGA를 불휘발으로 하고 있으므로, 데이터나 콘피규레이션 데이터의 대피 및 기입이 파워게이팅마다 필요하지 않게 된다.
파워게이팅 제어부(5)는, STT-MRAM(2)에서의 각 MRAM 서브 어레이와 NV-CPU(3)와 NV-FPGA(4)에서의 각 타일 및 DSP로의 전력 공급을 제어하고, 지정된 모듈의 동작 시에만 전력을 공급한다.
여기서, STT-MRAM(2)에 있어서는, 각 메모리 셀이, 2개의 선택 트랜지스터와 2개의 MTJ를 포함하는 2T-2MTJ로 구성되어 있는 것이 바람직하다. STT-MRAM에는, 1T-1MTJ, 2T-2MTJ, 4T-4MTJ가 포함된다. 4T-4MTJ는, 파워게이팅을 하기 위해서는, 별도로 그것용의 주변 기기가 필요하고, 이로써, 전력이 소비되므로 바람직하지 않다. 이에 대하여, 1T-1MTJ, 2T-2MTJ는 셀의 구성 자체 파워게이팅의 기능을 가지므로 적합하지만 성능을 향상시키기 위해서는 비트수의 관점에서 2T-2MTJ가 바람직하다. 또한, 2T-2MTJ에 있어서도, 셀 단위로, WL, BL, /BL, SL, /SL을 구비하고 있는 것이라도 되지만, 셀 단위로, WL, BL, /BL, SL로 하고, SL과 /SL이 공유화되고 있는 것이 레이아웃 사이즈를 억제하므로 바람직하다. 또한, MTJ의 기입 특성에 따른 기입 펄스 폭의 설정이 가능하므로, 기입 전류를 억제하여 최적화할 수 있다.
본 발명의 실시형태에 따른 디바이스(1)의 하나의 컨셉에 대하여 설명한다. 도 2는, 본 발명의 컨셉을 설명하기 위한 도면이다. 도 2의 A는, 종래의 CMOS 베이스에 의해 구성했을 때의 시간에 대한 전력을 나타낸 도면이다. 동작(Active) 상태에서는, 다이나믹한 전력 부분과 스태틱한 전력 부분의 합이며, 비동작(Standby) 상태에서는, 스태틱한 전력 부분이 생기고 있다. 여기에 파워게이팅을 행하면, 도 2의 B에 나타낸 바와 같이, 다이나믹한 전력 부분이 생기고 있는 경우에만 스태틱한 전력이 소비되고, 다이나믹한 전력이 생기지 않은 경우에는 스태틱한 전력이 소비되지 않게 된다. 그러나, 휘발성 메모리의 데이터를 대피시키기 위하여, 또한 휘발성 메모리 부분에 데이터를 기입하기 위하여, 동작 상태의 전후에 있어서 별도로 전력이 생긴다. 이에, 휘발성 메모리 부분을 불휘발 메모리로 하면 도 2의 C에 나타낸 바와 같이 도 2의 B에서 필요한 데이터의 대피·기입이 불필요하게 된다.
이와 같이, 본 발명의 실시형태에서는, 디바이스(1) 내의 모듈 전체를 불휘발으로 함으로써 실현된다. 통상, IoT 센서 노드는 일정량의 동작을 단속적으로 실행하고, 각 프로세스의 사이 스탠바이 상태에 들어간다. 종래의 CMOS 베이스의 아키텍처에서는, 내부 메모리는 휘발이므로, 내부 메모리와 외부 메모리 사이의 데이터 전송은, 전원을 끄기 전의 데이터 백업에 필요하다. 이 데이터 백업이 불필요하게 된다. 또한, 완전히 불휘발의 디바이스(MCU)에서는, 모든 모듈이 불휘발 이므로, 외부 메모리는 필요하지 않고, 저장된 데이터는 전송할 필요가 없다. 그 때문에, 파워게이팅 기술을 세밀한 정밀도로 효과적으로 적용할 수 있고, 쓸데없는 전력 소비를 적극적으로 배제할 수 있다. NV-FPGA(4)가 불휘발 메모리를 포함하여 구성되어 있으므로, 파워게이팅마다, FPGA 내에서의 데이터의 대피 및 기입을 할 필요가 없고, 콘피규레이션 데이터의 대피 및 기입을 할 필요가 없다. 일정량의 동작을 단속적으로 실행하고 동시에 각 프로세스의 사이는 스탠바이 상태에 들어가도록 한 디바이스, 특히 IoT 센서 노드에 있어서는, 파워게이팅 제어를 할 때, 데이터의 대피 및 기입이 불필요하므로, 특히 유효하다.
도 3은, 본 발명의 컨셉을 더욱 설명하기 위한 도면이다. 도 3의 A에 나타낸 바와 같이, CPU 상의 시퀀셜 처리에서는, 파워게이팅에 의한 소비 전력을 저감하는 것 밖에 할 수 없다. 그러나, 도 3의 B에 나타낸 바와 같이, 디바이스에 내장되어 있는 FPGA에 의해 실행시킴으로써, CPU의 연산 처리의 일부를 FPGA에서 실행시킴으로써, 처리가 가속되고, 퍼포먼스가 향상된다. 이와 같이, 동작간격마다의 시퀀스 처리(시퀀스에 의한 순차 처리)에 대하여, CPU와 FPGA 베이스의 액셀러레이터(FPGA-ACC)로 병렬 처리를 한다. 병렬 처리에서 프로세스 시간이 크게 감소하므로(도 3의 B의 "Processing time reduction by FPGA-ACC"), 파워게이팅 PG의 시간이 길어지고, 병렬 처리에 의한 파워게이팅의 시간의 증가분, 즉 FPGA-ACC에 의한 프로세스 시간의 감소분의 시간, 스태틱한 전력 부분과 다이나믹한 전력 부분의 양쪽이 불필요하게 된다. 이 감소분의 불필요하게 된 전력이, FPGA-ACC의 연산 처리에 의한 소비 전력의 증가분보다 훨씬 크다. 이와 같이, FPGA-ACC를, NV-CPU 및 MRAM에 의해 구성되어 있는 불휘발 마이크로 컴퓨터에 대하여 탑재함으로써, 높은 연산 성능과 저소비 전력화를 실현할 수 있다. 프로세스 시간이 짧아짐으로써, 전력 소비의 대부분을 나타내는 MRAM의 사용 시간이 짧아지고, 더 한층의 저소비 전력화가 실현된다. 이와 같이, NV-CPU(3)에 대하여 NV-FPGA(4)를 버스(7)로 접속 가능으로 함으로써, 시퀀스 처리를 NV-CPU(3)와 NV-FPGA(4)에 의한 병렬 처리로 행할 수 있다. 특히, IoT 센서 노드에서는, 도 4 및 도 5를 참조하면서 후술하는 바와 같이, 센서의 데이터를 클라우드 장치(140)로 처리할 필요가 없도록, 말단의 센서 노드(110)에 있어서 예를 들면 특징량을 구하거나 화상 처리를 하거나 함으로써 데이터량을 억제하여 상위 기기인 클라우드 장치(140)에 송신하는 것이 바람직하다. 본 발명의 실시형태에서는, 시퀀스 처리가 NV-CPU(3)와 NV-FPGA(4)에 의한 병렬 처리로 행해지므로, 높은 연산 성능과 저소비 전력 성능이 실현되고, IoT 센서 노드로의 적용은 바람직하다.
이로써, 동작 간격마다의 시퀀스의 처리 시간을 단축하고, 더욱 소전력화를 실현할 수 있다. 여기서, FPGA가 CMOS 상에 MTJ를 구성함으로써, 초저소비 전력의 불휘발 FPGA를 실현할 수 있다.
전술한 바와 같이, 본 발명의 하나의 컨셉은, 센서 노드 등에 적합한, 높은 연산 성능(예를 들면, 200∼300 MHz와 같은 몇백 MHz)과 저소비 전력 성능(예를 들면, 100μW 이하)을 동시에 실현하는 마이크로 컴퓨터가 실현하는 점에 있다. 저소비 전력 성능의 관점에서는, MRAM 이외의 불휘발 메모리를 사용함으로써, 대기시 전력을 삭감할 수 있으므로 일정한 효과가 있다. 그러나, MRAM 이외의 불휘발 메모리에서는, 기입 속도와 판독 속도를 고속으로 할 수 없으므로, 몇백 MHz의 연산 성능을 동시에 실현할 수 없다. 이에 대하여, MRAM을 사용함으로써, 기입과 판독이 고속이므로 고속성이 실현되고, 또한 불휘발화에 의한 저소비 전력화를 동시에 실현할 수 있으므로, 본 발명의 실시형태에 따른, NV-CPU와 NV-FPGA와 MRAM의 메모리에 의해 구성되는 디바이스로서의 마이크로 컴퓨터에서는, 특별의 효과를 발휘한다.
이와 같이, 센서 노드에 적합한 높은 연산 성능과 낮은 소비 전력 성능을 양립하는 마이크로 컴퓨터를 실현하기 위해서는, CPU와 FPGA가 탑재된 높은 연산 성능을 요구하는 마이크로 컴퓨터에 MRAM을 메모리로서 실장함으로써, 특별한 효과가 발휘된다.
다음으로, 도 1의 디바이스를 사용한 센서 노드 및 이것을 사용한 시스템에 대하여 설명한다. 도 4는 센서 노드를 사용한 시스템의 구성도이며, 도 5는 센서 노드의 구성도이다. 시스템(100)은, 실내외의 구조물에 장착되고, 또는 인물이나 동물에 장착되는 하나 또는 복수의 센서 노드(110)와, 센서 노드(110)를 인터넷 등의 통신 네트워크(130)에 접속하기 위한 게이트웨이(GW)(120)와, 센서 노드(110)로부터 통신 네트워크(130)를 경유하여 송신된 각종 정보를 축적하여 처리하는 클라우드 장치(140) 등의 상위 기기로 구성된다.
센서 노드(110)는, 각종 물리량을 계측하는 센서 소자(111)와, 센서 소자(111)로부터의 데이터를 처리하여 정보로서 가공하는 MCU(112)와, MCU(112)에서 처리된 정보나 각종 제어 데이터를 외부에 출력하는 통신부(113)와, 자연 에너지나 인공적으로 만들어진 진동 등을 전력으로 변환하여 축적하는 전원부(114)를 구비한다.
MCU(112)는 도 1에 나타낸 디바이스의 구성이므로, 저전력이며 또한 데이터 처리를 행할 수 있으므로, 센서의 데이터를 클라우드 장치(140)로 처리할 필요가 없고, 말단의 센서 노드(110)에서 있어서, 예를 들면, 특징량을 구하거나, 화상 처리를 함으로써 데이터량을 억제하여 상위 기기인 클라우드 장치(140)에 송신할 수 있다. 이 때문에, 트래픽량을 큰 폭으로 저감할 수 있다.
다음으로, 구체적인 디바이스(1)의 구성에 대하여 설명한다. 도 6은, 도 1을 구체화한 구성도이다. 도 6에 나타낸 바와 같이, 디바이스로서의 MCU(10)는, STT-MRAM(11)과, NV-CPU(12)와, NV-FPGA(13)와, MEM4X의 액세스 콘트롤러(14)와, 버스(15)와, PMU(Performance Monitoring Unit)(16)와, 시스템 컨트롤(SYS CONTROL)(17)과, 버스 매트릭스(AHB-MATRIX)(18)와, MCU에서의 CPU의 주변 기기로 하여, ADC(Analog-Digital Converter)(19)와, 타이머(20)와, WDT(watchdog timer)(21)와, UART(Universal Asynchronous Receiver/Transmitter)(22)와, 시리얼 버스(예를 들면, I2C)(23)와, SPI(Serial Peripheral Interface)(24)와, GPIO(General-Purpose Input/Output)(25)와, BIAS(26)을 구비한다. CPU로서의 주변 기기는 일례이며 별도 구성도 가능하다.
도 7은, STT-MRAM(11)이 구체적인 구성도이다. STT-MRAM(11)은, 도 7에 나타낸 바와 같이, MRAM 서브 어레이로 구성된 좌측의 어레이(Left-Side Array)와, 동일하게 MRAM 서브 어레이에 의해 구성된 우측의 어레이(Right-Side Array)를 구비하고, Control에서 MRAM 그 자체가 제어된다. 메모리의 특정한 어드레스에 저장되어 있는 데이터에 액세스하기 위하여, 입력 데이터인 어드레스를 바탕으로, 데이터가 저장되어 있는 메모리 셀의 위치(좌표)가 지정된다. Xpredec 및 Ypredec에서는, 메모리 셀의 위치를 나타낸 좌표에 상당하는 신호가 어드레스를 바탕으로 생성되고, 또한 Xdec 및 Ydec에서 실제의 액세스에 필요한 상보(相補) 신호 등으로의 변환이 행해진 후에, 대상 메모리 셀로의 액세스가 실행된다. 이와 같이, 어드레스로부터 메모리 위치로의 변환을 2단계로 하고 있다.
Left-side Array, Right-side Array 각각의 좌우에 Ydec가 배치되어 있고, 이는 메모리 데이터를 판독할 때의 동작이 좌우에서 상이하기 때문이다. 외측의 Ydec는 판독 대상이 되는 메모리 셀에 정전류(定電流)를 유입하고, 셀의 상태(즉 MTJ의 저항 상태)에 따른 전압 신호를 생성한다. 그 전압 신호는 내측의 Ydec에 부착되어 있는 센스 앰프(Sense Amplifier: SA)에 의해 증폭되고, 판독 대상이 되는 메모리 셀로부터의 데이터가 취출된다. 도면에 있어서, 실선의 화살표는 제어 신호이며, 점선의 화살표는 데이터 신호이다.
이 STT-MRAM(11)에서는, 각 메모리 셀에 전원 라인이 없으므로, 파워게이팅용의 스위치가 설치되어 있지 않다.
이 STT-MRAM(11)에서는, 각 셀은, 도 7에 있어서 우측에 나타낸 바와 같이, WBT가 좌우에서 공유되고 있으므로, 셀 면적을 작게 할 수 있다.
도 8은, STT-MRAM(11)의 동작 파형을 나타낸 도면이다. 클록(CLK)에 대하여, Write 이네이블 신호에 의해, 데이터가 기입되고, Read 이네이블 신호에 의해 데이터가 판독된다.
도 1을 참조하여 설명한 바와 같이, 액세스 콘트롤러(6)가, NV-CPU(3)로부터 데이터의 판독 명령을 받으면 미리 STT-MRAM(2)로부터 판독하고 있는 지의 여부를 판단하고, 판독 완료인 경우에는, 축적하고 있는 데이터를 NV-CPU(3)에 송신한다. 액세스 콘트롤러(6)를 구체적으로 설명하면, 액세스 콘트롤러에는, 도 1에는 도시하지 않지만, 어드레스 유지용 레지스터, 멀티플렉서, 복수의 데이터 유지용 레지스터 및 컴퍼레이터를 구비한다. 액세스 콘트롤러(6)는, NV-CPU(3)로부터 판독처인 STT-MRAM(2) 중의 어드레스의 입력을 받으면 상기 어드레스를 어드레스 유지용 레지스터에 유지한다. 멀티플렉서는 상기 어드레스로 지정되어 있는 STT-MRAM(2)의 복수의 지정처를 판독하면, STT-MRAM(2)으로부터 판독한 데이터를 각 데이터 유지용 레지스터에 축적한다. 액세스 콘트롤러(6)는, NV-CPU(3)로부터 판독처의 지정과 함께 판독 명령을 새롭게 받으면 어드레스 유지용 레지스터에 유지되어 있는 어드레스와 판독처의 어드레스를 컴퍼레이터로 비교하고, 판독처의 어드레스를 미리 STT-MRAM(2)로부터 판독하고 있는 지의 여부를 판단한다. 이미 판독하여 데이터 유지용 레지스터에 축적되어 있는 경우에는, 그 축적 데이터를 NV-CPU(3)에 판독 지령에 대한 응답으로서 송신한다.
도 9는, CPU와 MRAM 사이의 액세스 콘트롤러(Accelerator)(14)를 설명하기 위한 도면이다. 16비트의 명령과 32비트의 명령의 양쪽이 포함된다. 데이터는 모두 32비트이다. 도 9에 있어서, HADDR은 CPU(12)에 의해 액세스된 MRAM(11)의 메모리 어드레스이며, HRDATA는 액세스된 어드레스에 축적된 데이터이다. 액세스 콘트롤러(Accelerator)(14)는, HADDR을 유지하는 레지스터(reg)와, 다음 HADDR을 앞의 HADDR과 비교하기 위한 비교기(cmp)와, Prefetch 어드레스 생성기 (Prefetch Address Generator)와, HADDR과 어드레스 생성기의 출력 중 어느 하나를 선택하여 출력하는 MUX(Multiplexer)와, MRAM(11)으로부터 판독된 데이터를 유지하는 레지스터(reg0, reg1)와, 판독된 데이터 중 어느 하나를 선택하여 출력하는 MUX(Multiplexer)를 구비한다. 여기서, Prefetch는, 실제로 사용하는 타이밍에 앞서, 미리 fetch, 즉 데이터의 입수를 행하는 것을 일컫는다. MUX는, 도 9에 나타낸 바와 같이, 회로 블록 위 또는 아래로부터 들어가는 화살표가 "0" 또는 "1"의 값을 취하는 제어 입력이며, 그 값이 "0"인지 "1"인지에 의해, 좌우 중 어느 하나로부터 들어가는 2개의 입력 중 어느 한쪽을 선택하여 그대로 출력하는 기능을 가진다.
이와 같이, 액세스 콘트롤러(14)는, STT-MRAM(11)의 입력측에 설치되고, 판독처인 STT-MRAM(11) 중의 어드레스의 입력을 받으면 상기 어드레스를 유지하는 어드레스 유지용 레지스터(reg)와, 상기 어드레스 유지용 레지스터(reg)에서 지정되어 있는 STT-MRAM(11)의 복수의 지정처를 판독하는 멀티플렉서(Multiplexer)와, STT-MRAM(11)으로부터 판독한 데이터를 유지하는 복수의 데이터 유지용 레지스터(reg0, reg1)와, 판독처의 지정과 함께 판독 명령을 받으면 어드레스 유지용 레지스터(reg)에 유지되어 있는 판독처의 어드레스와 비교하는 컴퍼레이터(cmp)를 가진다.
CPU(12)로부터 HADDR을 통하여 사용하는 데이터의 어드레스가 액세스 콘트롤러(Accelerator)(14)에 전달된다. 이 때 그 어드레스는 도 9의 Accelerator 좌측의 레지스터(reg)에 유지된다. Accelerator 우측의 MUX는, HADDR로부터 전달된 데이터와, reg에 유지된 데이터를 비교하고, 그것이 일치하지 않고 있는 경우에는 HADDR의 값을 그대로 MRAM_ADDR의 값으로 하고, MRAM0, MRAM1으로부터 각각 16bit 명령 2개분(1개의 MRAM에 대하여 16bit×2=32bit를 2병렬)의 데이터를 함께 판독하고, reg0, reg1에 받아들인다.
연속된 메모리 어드레스에 유지된 16bit 명령을 연속하여 실행하는 경우, 상기한 처리에 의해 4명령분의 데이터가 reg0, reg1에 함께 받아들이는 것이 되므로, CPU(12)로부터 HADDR을 통하여 받은 데이터와, reg에 유지되어 있는 데이터를 비교하여, 상기 조건을 만족시키고 있으면, reg0, reg1에 미리 받아들이고 있는 데이터 중, HADDR로 지정된 어드레스에 해당하는 데이터를, 도면의 Output control이라는 연산부에서 지정한 후에, HRDATA, 즉 CPU(12)의 판독 명령에 대한 출력으로 한다. 이 때, HADDR을 통한 CPU(12)로부터의 판독 명령에 대하여, MRAM(11)이 아닌 reg0 혹은 reg1으로부터 데이터가 전달되게 되므로, Accelerator와 MRAM 사이에서 가능한 전송 속도(예를 들면, 50MHz)가 아니고, CPU(12)와 Accelerator 사이에서 가능한 전송 속도(예를 들면, 200MHz)로 데이터가 되돌려진다. 이 일련의 흐름을 나타낸 것이 도 11의 A이다. 여기서의 50MHz, 200MHz와 같은 도시한 값은 예시이다.
연속된 메모리 어드레스에 유지된 32bit 명령을 연속하여 실행하는 경우, 상기한 처리에 의해 2명령분의 데이터가 reg0, reg1에 함께 받아들이게 되므로, 상기 와 동일한 처리가 행해진다. 이 경우에는 100MHz로 데이터가 되돌려진다. 이 일련의 흐름을 나타낸 것이 도 11의 B이다. 여기서의 100MHz와 같은 도시한 값은 예시이다.
CPU(12)로부터 MRAM(11)으로의 액세스는 다중 방식으로 행해지고, 판독된 데이터는 레지스터(reg0, reg1)에 일시적으로 보존된다. 동일한 메모리 어드레스로의액세스가 반복되면, 레지스터에 유지되고 있는 데이터는, 메모리의 데이터 대신에 재이용된다. 도 10은 도 9에 있어서 데이터 전송의 천이예를 나타낸 도면이다. 데이터 요구는 CPU가 그 데이터를 필요로 하기 전에 실행되고, fetch의 준비가 되어 있는 다음 명령이 실행되면, 레지스터에 유지되어 있는 16비트 명령이 실행된다. 따라서, 고속 명령 fetch는, 중단 없이 실행된다.
도 10에 있어서, 도 10의 A는 초기 상태를 나타내고, 도 10B에서는 프리패치(Prefetch)·데이터 요구, 액세스 콘트롤러(액셀러레이터 회로) 내의 레지스터로의 데이터 기억, 및 명령 A의 fetch 동작이 동시에 실행된다. 도 10의 C에서는 명령 B의 fetch 동작이 실행된다. 도 10의 D에서는 명령 C의 fetch 동작이 실행된다. 도 10의 E에서는 명령 D의 fetch 동작이 실행된다. 도 10의 B에서 요구된 프리패치(Prefetch)·데이터는 이 시점에서 준비 완료이다. 도 10의 F에서는 프리패치(Prefetch)·데이터 요구, 액세스 콘트롤러(액셀러레이터 회로) 내의 레지스터로의 데이터 기억, 및 명령 E의 fetch 동작이 동시에 실행된다. 전회의 상태에서, 다음에 실행하는 명령의 fetch 준비가 완료되었으므로, 고속 명령 fetch를 중단하지 않고 행할 수 있다.
도 11은 데이터 플로우의 예를 나타내고, 도 11의 A는 연속하는 메모리 어드레스에 배분되고 있는 16비트의 명령의 경우이며, 도 11의 B는 연속하는 메모리 어드레스에 배분되고 있는 32비트의 명령의 경우이다. 도 11의 A에 나타낸 바와 같이, 연속하는 메모리 어드레스에 배분된 16비트의 명령을 직렬로 페치되어 있는 것에 의해, 4명령분의 데이터를 사전에 레지스터에 프리패치할 수 있으므로, 도 11의 A에 나타낸 바와 같이, MRAM으로의 액세스 속도의 4배의 속도로 명령 페치를 행할 수 있다. 또한, 연속하는 메모리 어드레스에 할당되는 32비트 명령의 경우도, 도 11의 B에 나타낸 바와 같이 인터리브하여 동일한 제어를 행함으로써, 2개의 32비트 명령의 데이터를 레지스터에 저장하고, 메모리 액세스의 속도를 2배로 할 수 있다. 그 결과, 메모리 액세스의 보틀넥을 은폐하는 것이 가능하게 되고, 페치하는 명령의 길이에 따라 고속 명령 페치가 적응적으로 행해진다.
이와 같이 소위 베스트 에퍼트 방식으로 고속화가 실현된다. 실제의 퍼포먼스의 개선의 정도는, 실행하는 프로그램에 따라 상이하다. 구체적으로는, 조건 분기에 의한 랜덤 어드레스로의 메모리 액세스가 빈번하게 발생하는 프로그램으로도 가능하지만, 바람직하게는, 센서 노드 어플리케이션용의 MCU와 같이, 어떤 시퀀스를 순차적으로 실행하는 처리에는 유효하다. 이와 같은 처리에서는, 메모리로의 액세스도 규칙적이므로, 매우 효과적으로 기능한다. 그 결과, 면적이나 전력 오버헤드를 증가시키지 않고, 캐시와 동일한 효과를 얻을 수 있다.
여기서, 이 액세스 콘트롤러에 대하여 더욱 상세하게 설명한다. 예를 들면 40nmMOS/MTJ프로세스를 사용한 불휘발 VLSI 프로세서의 테스트 칩을 제작했다. MTJ 베이스의 NV-LIM LSI를 위한 자동설계 플로우 및 셀 라이브러리를 사용함으로써 설계할 수 있다. 각 블록의 게이트의 수로부터, 액셀러레이터 회로의 도입에 의한 면적 오버헤드는 13.6%로 짐작된다. 그리고, 여기서는 각 블록을 따로따로 오버헤드 평가용으로 설계하고 있지만, 이들 블록을 통합하여 1개의 회로 블록으로 하고 레이아웃할 수도 있다. 그 경우에, 영역 오버헤드는 더욱 작아질 것으로 예상된다.
도 12는, 액세스 콘트롤러(액셀러레이터 회로)에서의 시뮬레이션 파형을 나타낸 도면이다. 이 예에서는, (1) 연속하는 메모리 어드레스에 할당된 16비트 명령, (2) 연속하지 않는 메모리 어드레스에 액세스하기 위한 분기 명령, (3) 연속하는 메모리 어드레스에 할당된 32비트 명령이 순차적으로 실행된다. 도 12로부터, 액세스하는 메모리 어드레스의 천이가 명령 페치 가속의 조건을 만족시키는 지의 여부에 따라, 동작 주파수가 50MHz로부터 200MHz로 동적으로 변화하는 것을 확인할 수 있다.
도 13은, 액세스 콘트롤러(액셀러레이터 회로)와 MRAM을 조합한 CPU에 의해 구성되는 시스템과 종래 시스템의 소비 전력을 비교한 도표이다. 여기서는, MRAM으로의 요구 성능 완화의 효과를 하기 요령으로 확인했다.
저성능 MRAM(LP-MRAM)으로서 50MHz에서의 판독/기입.
중간성능 MRAM(MP-MRAM)으로서 100MHz에서의 판독/기입.
고성능 MRAM(HP-MRAM)으로서 200MHz에서의 판독/기입.
그리고, 모든 MRAM이 동일하게 설계되어 있다.
도 13으로부터, MRAM의 파워가 총소비 전력의 대부분을 차지하고, 요구 성능이 높을수록 그 비율이 높은 것을 알 수 있다. 액세스 콘트롤러(액셀러레이터 회로)를 사용함으로써, MRAM에 필요한 성능을 변경할 필요가 없으므로, 액셀러레이터 회로의 전력 오버헤드만으로 시스템의 성능을 향상시킬 수 있다.
여기서, 이 액셀러레이터 회로를 조합한 경우와 그렇지 않은 경우의 성능을 비교한다. 평가에서는, 전술한 성능이 상이한 MRAM을 사용한 3종류의 시스템, 캐시를 사용한 시스템, 액셀러레이터 회로를 사용한 시스템에 있어서, 면적, 소비 전력, 처리 성능을 평가했다.
[표 1]
Figure pct00001
표 1에 나타낸 바와 같이, 중간성능 또는 고성능의 MRAM을 사용한 실장의 경우, MRAM의 소비 전력이 증가하는 것에 따라 효율이 저하되고, 동작을 보증하는 온도 범위가 좁아진다. 캐시를 사용한 실장의 경우, 성능의 향상을 기대할 수 있지만, 면적 오버헤드가 매우 커진다. 한편, 액셀러레이터 회로를 사용하면, 소면적의 오버헤드로 가속 유닛을 매립할 수 있고, MRAM에 요구되는 성능을 변경하지 않고, CPU의 동작 주파수를 고속화할 수 있다. 그 결과, 면적 효율을 개선할 수 있다. 따라서, 종래의 캐시를 사용한 실장과 비교하여 2.29배의 성능 효율(MIPS/mW)이 3.71배까지 향상되고, 넓은 온도 범위에서 읽기 쓰기(reading and writing) 동작을 보증할 수 있다.
액세스 콘트롤러는, 실행되어야 할 프로그램의 내용에 의존하는 바, 몇 개의 샘플 프로그램을 사용한 벤치 마킹에 의해, 비교적 대용량의 메모리 액세스에 의한 필터 동작에서도 100MHz 정도 이상에서 동작할 수 있는 것을 확인하고, 메모리 액세스나 분기가 비교적 적은 프로그램으로 매우 효율적으로 동작하는 것을 확인했다.
다음으로, NV-CPU에 대하여 설명한다. NV-CPU에 있어서 사용되는 플립플롭은, 모두, MTJ 베이스의 불휘발 플립플롭이다. 불휘발이므로, 파워게이팅을 위한 데이터 대피의 필요성이 전혀 없다.
도 14는, NV-CPU에 있어서 사용되는 MTJ 디바이스를 나타내는 단면도이다. CMOS 기판 상에 있어서, CMOS가 형성의 최상층과 금속층의 위에, 핀층, 배리어층, 프리층으로 이루어지는 MTJ를 구성함으로써 실현된다. MTJ 소자는, 스핀의 방향에 따라 2개의 상이한 저항값을 가진다. MTJ 소자는 연속적인 전원 공급 없이 저항 상태를 유지할 수 있다. 이 때문에, MTJ 디바이스를 1비트의 불휘발 메모리로서 사용할 수 있다.
도 15는, 불휘발 플립플롭 회로의 예다. 도 16 내지 도 19는 각각 시뮬레이션 파형, 플립플롭 동작, 기입 동작, 판독 동작을 나타낸 도면이다. 이 플립플롭은 마스터 슬레이브형 플립플롭이며 마스터부와 슬레이브부와 불휘발 기억부로 나누어진다. 본 발명의 실시형태에서는, 불휘발 기억부를 구성할 때, MTJ 소자가 사용되고 있다.
도 16에 있어서, DATA는 입력 신호를 나타내고, Q, QB는 출력신호(상보, B는 Bar=부정의 뜻)를 나타내고, CLK, CLKB는 클록 신호(상보)를 나타내고, LB는 판독 제어 신호이며, 통상 "1"이며, "0"일 때 MTJ 소자로부터 FF의 메모리부로의 기입 처리가 행해진다. WB는 기입 제어 신호이며, 통상 "1"이며, "0"일 때 FF의 메모리부로부터 MTJ 소자로의 기입 처리가 행해진다. SB는 세트 신호이며, 통상 "1"이며, "0"일 때 입력에 관계없이 FF의 기억 상태를 "1"로 한다.
FF 회로는, 크게 나누어서 마스터부, 슬레이브부, 불휘발 기억부의 3개로 나누어진다. 마스터부는 클록이 "0"일 때 입력 신호 DATA를 받아들이고, "1"일 때 슬레이브부에 전달하는 동작을 한다. 슬레이브부는 클록이 "1"일 때 마스터부로부터 데이터를 받아들이고, 동시에 Q, QB에 그 값을 출력한다. "0"일 때는 아무 것도 하지 않는다. 마스터부와 슬레이브부가 합쳐져서, 통상의 마스터 슬레이브형 D 플립플롭으로서 동작한다.
불휘발 기억부는 상보적으로 1비트의 기억을 행하는 2개의 MTJ 소자와, MTJ 소자로의 기입을 행하기 위한 전류를 생성하는 기입 회로로 이루어진다. 제어 신호 LB, WB에 따라 슬레이브부에 받아들이고 있는 데이터의 불휘발 메모리로의 기입, 또는 불휘발 메모리로부터 슬레이브부로의 판독을 행한다.
다음으로, NV-FPGA에 대하여 상세하게 설명한다. 도 20은 NV-FPGA를 상세하게 나타낸 도면이다. 도 20에서는, NV-FPGA는, 8columns-21rows이지만, 임의로 설정된다. FPGA는, 타일(Tile)마다 파워 스위치(PS)와 콘트롤러가 설치되고, 타일마다 전력 공급을 ON/OFF할 수 있고, 파워게이팅할 수 있다.
도 21에, 하나의 타일의 구성을 나타낸다. 타일(Tile)은, 몇 개의 로직 엘리먼트(LEs: Logic elements)를 가지는 콘피규어러블 로직 블록(CLB: Configurable logic block)과, CLB를 배선 트랙에 접속하기 위한 커넥팅 블록(CB: Connection Block)과, 신호 라우팅용의 스위치 블록(SB: Switch Block)과, 콘피규레이션 회로(CFGC)와, 콘트롤러(Controller)를 구비한다. 예를 들면, 로직 엘리먼트 LE는, 6입력의 LUT 회로와, 플립플롭(FF) 회로와, 멀티플렉서(MUX)로 이루어진다. CLB, SB, CB의 콘피규레이션 데이터는 CFGC를 통하여 기입된다. 각각의LUT 회로 내의 MTJ 소자에는, 소정의 논리 연산을 행하기 위한 진리값표의 값이 기입된다. FF 회로는 CMOS-FF부와 MTJ 소자부로 구성되며, 통상 동작 시에는 CMOS-FF를 사용하여 데이터의 판독/기입을 행하고, 전원 오프 직전에 CMOS-FF의 값이 MTJ 소자부에 기입되고, 전원 재투입 후에는 MTJ 소자부에 유지된 값이 CMOS-FF에 다시 기입된다. CB는, 콘피규레이션 데이터에 기초하여 CLB가 임의의 입출력 핀을 임의의 배선 트랙과 접속한다. 또한, SB는 콘피규레이션 데이터에 기초하여 각각의 배선 트랙을 임의의 인접하는 Tile과 접속한다.
배선 스위치는, 전술한 CB 및 SB의 기본 구성 요소이며, 기억 데이터에 기초하여 패스 트랜지스터의 온/오프를 제어하는 회로이며, 기억 데이터는 면적 효율이 양호한 MTJ 베이스의 래치에 기억되고, 패스 트랜지스터는 NMOS 스위치를 사용하여 실장된다. 콘트롤러(Controller)를 이용하여, 블록 레벨의 파워게이팅이 실행되고, 각 기능 블록은 최적으로 턴 오프된다.
스위치 블록 SB와 커넥션 블록 CB는, 각각, 배선 스위치와 같은는 기본 콤포넌트로 구성되어 있고, 배선 스위치에 불휘발의 기억 영역이 포함되어 있다. 도 22는, 배선 스위치의 회로를 포함하는 회로의 일례를 나타낸 도면이다. 불휘발 기억 소자의 출력(Q)은, NMOS 패스 스위치를 온/오프하기 위해 사용된다. 불휘발 기억 소자는, 2개의 인버터 및 2개의 로컬 기입 제어 트랜지스터와, 2개의 MTJ 디바이스를 사용하는 센스 증폭기로 이루어지고, 배선 정보는 상보적으로 프로그램된다. 센스 증폭기는 정상 DC 전류 경로를 생성하지 않고, 파워 온 상태인 동안, 기억된 상태 M을 판독하고, 그것을 Q로서 유지하기 위해 사용된다. 콘피규레이션 데이터가 프로그램되면, 이들은 변화하지 않으므로, 추가 제어 트랜지스터는 필요하지 않게 된다.
그리고, 타일은, 디코더 및 드라이버(Decoder & Driver)를 구비한다. 이들에 의해, 제조 후에 재구성형 연산 모듈을 실현할 수 있다.
콘피규어러블 로직 블록 CLB는, 로직 엘리먼트와 같은 기본 콤포넌트로 구성되며, 로직 엘리먼트는, 불휘발 Lookup Table 회로(불휘발 LUT 회로)와 불휘발 Flip-Flop(불휘발 FF)에 의해 구성되고, 각각 불휘발의 기억 기능을 가진다. 도 23은, Lookup Table 회로의 일례를 나타낸 도면이다.
도 23에 6입력 LUT 회로의 블록도를 나타낸다. 6입력 LUT 회로는, 센스 증폭기(a sense amplifier), 64:1 NMOS 셀렉터(64-to-1 NMOS selector), MTJ 콘피규레이션 어레이(MTJ configuration array), NMOS 참조 기준 트리(NMOS reference tree), 및 프로그래머블 참조 저항기(programmable reference resistor)의 5개의 요소에 의해 구성된다.
임의의 6입력 논리함수의 진리값표는, MTJ 구성 어레이 내의 (R0, R64), (R1, R65), (R63, R127) 등의 64대의 직렬 접속 MTJ 디바이스에 저장된다. MTJ 디바이스에 논리 기능 정보를 기억시키기 위한 기입 동작은 워드선(WL) 및 비트선(BL)을 활성화함으로써 행해지고, 이것은 종래의 자기(磁氣) RAM(MRAM)의 기입 동작과 거의 동일하다. BL0 및 BL2는 MTJ 구성 어레이와 프로그래머블 기준 저항기 사이에서 공유되며, 기입 액세스 트랜지스터 MWC는 MTJ 구성 어레이 내의 64개의 MTJ 페어 사이에서도 공유된다. LUT 회로의 논리 동작은 MRAM의 판독 동작과는 완전히 상이하며, 그 이유는, BL 및 WL의 양쪽이 동작에서 사용되지 않기 때문이다.
EN이 하이로 설정되고, NMOS 셀렉터 및 NMOS 기준 트리가 상보 논리 입력 X에 의해 활성화되면, 전류 IF 및 IREF는, 각각, MTJ 구성 어레이 및 프로그래머블 기준 저항기 내의 대응하는 MTJ쌍을 통과한다. IF와 IREF 사이의 차이가 감지되고, 상보적인 풀스윙 출력(Z, Z')이 센스 앰플리파이어(sense amplifier)에 의해 생성된다.
충분한 센싱 마진을 확보하기 위하여, MTJ 콘피규레이션 어레이 및 프로그래머블 기준 저항에서의 직렬/병렬 접속 MTJ 디바이스의 콘피규레이션은 먼저, MTJ 콘피규레이션 어레이에 있어서, 기억 데이터 Y가 0이면 각각 (RAP, RAP)에, Y가 1이면 (RP, RP)에 각각 구성된다. MTJ 디바이스의 저항값이 가우스 분포 N(R, σR 2)(다만, R은 평균값, σR은 표준편차)을 따르는 경우, 직렬 접속된 MTJ 디바이스의 총저항값은 N(2R, 2σR 2)을 따르고, 이는, (RP, RP) 상태와 (RAP, RAP) 상태 사이의 중첩을 회피하기 위하여 저항 분포를 좁게 할 수 있는 것을 의미한다.
다음으로, 프로그래머블 기준 저항에서는, I(RP, RP)와 I(RAP, RAP)의 중간에 IREF가 들어가도록 전체 저항을 조정한다. MTJ 디바이스는 2개의 상이한 저항값을 가지므로, 4개의 MTJ 디바이스(Rr0, Rr1, Rr2, Rr3)를 사용함으로써 16개 상이한 기준 저항값을 얻을 수 있고, 전체 저항값은, 프로세스 변동에 의한 IF의 전류 레벨 변동에 따라 조정 가능하다. 그리고, RP는 MTJ 디바이스에서의 저저항을, RAP는 고저항을 의미한다.
도 24는 불휘발 플립플롭 회로의 예를 나타내는 도면이다. 불휘발 플립플롭 회로(불휘발 FF 회로)는, NMOS 베이스의 차동쌍 회로(DPC: differential-pair circuit), 크로스 커플드 CMOS 인버터, 2개의 MTJ 디바이스, 및 MTJ 기입 회로로 이루어진다. NV-LUT 회로로부터의 상보 입력(D, D')은, 통상 동작에 있어서, 크로스 커플드 CMOS 인버터에 기억된다. 이들은 또한, WCKB가 저레벨로 활성화될 때, 마스터 래치 내의 MTJ 디바이스(M, M')에 저장된다. 마스터 래치의 거동은 하이와 같다.
도 25a는 THROUGH 페이즈(CLK=1 및 CLK'=0)를 나타낸 도면이다. M1 및 M4이 턴온되므로, 부하 커패시턴스(capacitance) Cq'는 GND에 방전되고, M6는 턴온된다. 그 결과, 부하 용량 Cq가 충전되고, 출력 노드 q의 전압은 VDD가 되고, 출력 노드 q는 0V가 된다.
도 25b는 HOLD 페이즈(CLK=0 및 CLK'=1)를 나타낸 도면이다. M3가 턴온되므로, 출력 노드(q, q')의 전압은, 교차 결합된 CMOS 인버터에 유지된다. 동시에, DPC가 동작하지 않도록, M1 및 M2가 오프로 된다. 그 결과, VDD로부터 GND로의 직류전류 경로는 존재하지 않는다.
도 25c는 STORE 페이즈를 나타낸 도면이다. 입력(D, D')이 (1, 0)이며, WCKB가 저레벨로 활성화될 때, M10 및 M13은 NOR 게이트에 의해 턴온되어, 기입 전류 IW가 MTJ 디바이스에 인가된다.
도 25d는 RESTORE 페이즈를 나타낸 도면이다. RESB가 로우 레벨로 활성화 되면, M9이 턴온되고, 출력 노드 q 및 q'의 전압이 평형되고, 그 결과, 클램프 전압이 각 MTJ 디바이스에 인가된다. 다음으로, 센싱 전류 IM 및 IM'는 각각 M 및 M'를 관통한다. RESB가 하이 레벨로 활성화되면, M9은 오프가 되고, IM과 IM' 사이의 차이는 크로스 커플 결합된 CMOS 인버터에 의해 증폭된다.
도 24에 나타낸 바와 같은 불휘발 FF 회로에 있어서는, 전원 오프 직전에 크로스 커플 결합된 CMOS 인버터에 유지되어 있는 FF의 기억 데이터가 MTJ 소자에 기입되고, 또한 전원 재투입 후에 MTJ 소자로부터 크로스 커플 결합된 CMOS 인버터에 FF의 기억 데이터로서 다시 읽어들여지므로, 외부의 불휘발 메모리를 통한 데이터의 대피/복귀 동작이 일체 불필요하게 되므로, 전원 온/오프의 천이를 신속하게 행하는 것이 가능하게 된다.
또한, 바람직하게는, DSP(Digital Signal Processor)이 탑재되어 있다. 이로써, 비교적 연산량의 많은 경우라도 DSP를 활용하여 연산할 수 있다. DSP에 있어서도, 파워 스위치(PS)와 콘트롤러(Controller)가 설치되고, 타일마다 전력 공급을 ON/OFF할 수 있고, 파워게이팅할 수 있다. DSP에 있어서도, 타일과 같이 스위치 블록와 커넥션 블록은 배선 스위치와 같은 기본 콤포넌트로 구성되며, 배선 스위치에 불휘발 의 기억 영역이 포함되어 있다.
전술한 바와 같이, NV-FPGA의 각 기본 구성 요소에는 불휘발 기억이 포함되어 있고, 거기에 콘피규레이션 데이터가 유지되어 있다. 또한, 플립플롭의 기억 상태도 동일하게 불휘발 기억에 유지된다. 이 때문에, 전원 오프 직전에 외부 불휘발 메모리에 데이터를 대피시키거나 전원 재투입 후에 데이터를 다시 기입하거나 할 필요가 없다. 이 때문에, 전원의 온 또는 오프가 용이하다. 불휘발 FPGA에 미리 특정한 연산을 기입해 두고, 필요에 따라 전원을 온으로 함으로써 즉시 연산 개시하고, CPU의 처리를 고속화할 수 있다. 또한, 미사용 시에는 전원을 오프로 해 둠으로써, 쓸데없는 대기 전력의 소비를 피할 수 있다.
도 26에서의 DSP 코어의 회로 구성에 있어서는, SEL[0], SEL[1]이 기능 선택을 위한 제어 신호, A, B, C가 입력, OUT가 출력이다. 다음 연산을 행하는 회로로서 동작한다.
(SEL[0], SEL[1])=(0, 0)일 때 OUT=A×B,
(SEL[0], SEL[1])=(0, 1)일 때 OUT=A×B+C,
(SEL[0], SEL[1])=(1, 0)일 때 OUT=A+B,
(SEL[0], SEL[1])=(1, 1)은 미사용
여기서, 회로 구성은 임의이며, 다른 구성이라도 가능하다.
이와 같이, NV-FPGA(4)가, CPU(3) 상에서의 연산의 일부를 대신 행하게 하는 타일과, CPU(3) 상에서의 연산의 일부를 타일보다 고속으로 대신 행하게 하는DSP(Digital Signal Processor)를 가지고 있는 것이 바람직하다. 이로써, 도 3의 B에 나타낸 바와 같이, 저전력화와 고성능의 양쪽을 만족시키기 때문이다.
실시예
다음으로, 실시예를 설명한다.
표 2는, 실제로 제작한 칩의 사양이다.
[표 2]
Figure pct00002
도 27은 제작한 칩의 상(像)이다. 칩에는, STT-MRAM과 NV-CPU 및 주변 회로와, NV-FPGA를 포함하고 있다.
도 28은, 측정 파형을 나타낸 도면이다. 200MHz의 클록(CLK)에 따라 프로그램 카운터가 동작하고, NV-CPU(3)로부터 NV-FPGA(4)로의 이네이블 신호에 의해 데이터가 NV-CPU(3)로부터 MRAM(2)을 경유하여 NV-FPGA(4)에 전송되고, NV-FPGA(4)로부터 NV-CPU(3)로의 이네이블 신호에 의해 데이터가 NV-FPGA(4)로부터 MRAM(2)을 경유하여 NV-CPU(3)에 전송된다. 이네이블 신호는 NV-CPU(3)와 NV-FPGA(4) 사이의 제어 신호이며, 데이터는, NV-CPU(3)로부터 MRAM(2)을 경유하여 NV-FPGA(4)로 흐르고, 또는 NV-FPGA(4)로부터 MRAM(2)을 경유하여 NV-CPU(3)로 흐른다. 본 실시예에서는, NV-CPU(3)와 NV-FPGA(4) 사이에서, 데이터 교환을 200MHz로 달성할 수 있었다. 여기서, MRAM(2)의 특정한 어드레스 영역이 NV-CPU(3)와 NV-FPGA(4)에서 주고받아지는 데이터를 유지하기 위한 영역으로서 확보되어 있다. NV-CPU(3)로부터 NV-FPGA(4)로 입력하고자 하는 데이터는, 이 영역에 기입되고, NV-CPU(3)로부터 NV-FPGA(4)로 기입이 종료된 것 및 계산 개시의 준비가 된 것을 나타내는 신호가 전달되고, NV-FPGA(4)는 상기 영역에 기입된 데이터를 사용하여 연산을 개시한다. 종료 후에 NV-FPGA(4)의 계산 결과를 NV-CPU(3)에 전달할 때도 동일한 흐름이 된다. NV-CPU(3)와 NV-FPGA(4)에서의 주고받는 데이터가 유지되는 어드레스는, 미리 결정되어 있으므로, 양자(兩者)의 교환은 기입이 종료된 것 및 계산 개시의 준비가 된 것을 나타내는 신호만이면 되며, 어느 메모리 어드레스에 처리에 요하는 데이터가 유지되었는 지를 전달하지 않아도 된다.
도 29는, Shmoo Plot를 나타낸 도면이다. 세로축은 NV-CPU, NV-FPGA, STT-MRAM의 코어에 관한 전압(V), 가로축은 주파수(MHz)이다. Shmoo Plot으로부터, 100MHz 이상 204MHz 이하의 범위에서 코어의 전압 1.05V∼1.30V의 범위에서 2MHz의 간격으로 0.1V의 간격으로 각 주파수 및 각 전압의 조합에서 동작 확인을 했다. 도 29에서 백색의 부분은 동작 확인을 할 수 있었다. 100MHz에서는 1.07V 이상 1.3V 이하의 0.1V의 간격으로 동작 확인을 할 수 있고, 202MHz에서는 1.3V에서 동작 확인을 할 수 있었다. 따라서, 주파수 100MHz이며 전압 1.1V에서의 동작 확인, 주파수 200MHz이며 전압 1.3V에서의 동작 확인이 되어 있으므로, 이 2점을 통과하도록 곡선 또는 직선의 근사선을 긋고, 이 근사선보다 높은 전압을 각 코어에 인가하면 동작하는 것이 보증된다. 근사선으로서는, 주파수 f(MHz), 전압 V(V)로 하면, 예를 들면, 2×10-3f-V+0.9=0의 직선이 구해진다.
도 30은, 간헐 동작 간격(Intermittent Operation Interval)과 평균 전력의 관계를 나타낸 도면이며, 파워게이팅을 행하지 않는(without PG) 경우와, 파워게이팅을 행한(with PG) 경우와, 파워게이팅을 행하는 동시에 FPGA에 의한 가속 처리를 행한(with PG & FPGA-ACC) 경우를 나타낸 도면이다. 가로축은 간헐 동작 시간이며, 10m초, 20m초, 30m초, 40m초, 50m초, 60m초, 70m초, 80m초, 90m초, 100m초의 각 간헐 동작 시간으로 평균 전력을 구하였다. 데이터 처리는 라플라시안 필터를 상정했다. 여기서, NV-CPU, NV-FPGA에 있어서 연산 처리를 행하고 있는 상태와 행하지 않는 상태가 반복되지만, 어떤 동작 상태가 개시되는 시간과 다음 동작 상태가 개시되는 시간의 간격을 「간헐 동작 간격」이라고 한다.
파워게이팅을 행하지 않는 경우, 간헐 동작 간격에 따르지 않고 1000μW로 높은 평균 전력을 소비하고 있다. 이에 대하여, 파워게이팅을 행하면, 간헐 동작 간격을 크게 함에 따라 따라 평균 전력이 감소한다. 또한, 파워게이팅을 행함으로써, 소비 전력이 크게 저하된다. 또한, 파워게이팅을 행하고 또한 FPGA에 의한 가속 처리를 행한 경우, 간헐 동작 간격을 크게 함에 따라 평균 전력이 감소하고, 또한 동일한 간헐 동작 간격에 있어서도 FPGA를 사용함으로써, FPGA를 사용하지 않는 경우와 비교하여, 소비 전력이 더욱 크게 저하된다.
간헐 동작 간격이 50msec인 경우, 파워게이팅을 행함으로써 평균 소비 전력은 100μW가 되고, 또한 FPGA를 사용함으로써 평균 소비 전력은 47.14μW가 되며, 이는, 파워게이팅을 행하지 않는 경우와 비교하여 54%의 저전력화가 실현되고 있다.
도 30에 나타내고 있는 결과로부터, 본 실시예에 따른 디바이스로서의 마이크로 콘트롤러 유닛은, 제조되었을 때는, 간헐 동작 간격이 100m초 이하로 설정 가능한 것을 알았다. 또한, 별도의 관점에서, 본 실시예에 따른 디바이스로서의 마이크로 콘트롤러 유닛은, 사용될 때, 평균 전력이 100μW 이하로 사용 가능한 것을 알았다. 보다 구체적으로 말하면, 도 30으로부터, 간헐 동작 시간은 100m초 이하가 적절하다. 이는, 10m초, 20m초, 30m초, 40m초, 50m초, 60m초, 70m초, 80m초, 90m초, 100m초의 각 간헐 동작 시간으로부터 소정의 평균 전력으로 억제할 수 있기 때문이며, 이들 수치 범위에서 임의로 적절한 범위가 결정된다. 간헐 동작 시간은 바람직하게는 10m초 이상 100m초 이하이며, 보다 바람직하게는 10m초 이상 60m초 이하이며, 더욱 바람직하게는 10m초 이상 50m초 이하이다. 평균 전력이 100μW 이하인 것을 고려하고, 파워게이팅만을 채용하는 경우, 파워게이팅 및 FPGA를 채용하는 경우에 따라 적절한 범위가 된다.
도 31은, 에너지 하베스팅에 의해 얻어지는 전력을 에너지원마다 나타낸 도면이다. 이 도면으로부터, 또한, 에너지 하베스팅에 의해 얻어지는 전력으로 구동하는 IoT의 센서 노드에 사용되는 MCU에서는, 태양광 등의 광, 열, 기계적 진동, 자연 진동, 인공 진동 등의 각종 진동, 고주파 등에 의해 얻어지는 전력으로부터 상정하면 100(μW/cm2 또는 μW/cm3)을 기준으로서 고려된다.
따라서, 도 30으로부터, 100μW의 평균 소비 전력에서는, 불휘발 CPU, MRAM, 불휘발 FPGA를 사용하고, 파워게이팅과 FPGA에 의한 처리를 사용함으로써, 간헐 동작 간격이 약 20msec 이상으로 할 수 있다. 간헐 동작 간격의 상한은 임의로 설정된다. 또한, 도 30으로부터, 파워게이팅 및 FPGA에 의한 처리에 의해, 100μW 이하의 평균 소비 전력을 실현할 수 있고, 간헐 동작 간격이 20m초 이상인 디바이스가 실현되고, IoT용의 디바이스가 제공된다.
이 결과로부터, 본 실시예에서 제작한, 비동작부를 불휘발 메모리로서 MTJ를 사용하고,
MRAM과 NV-CPU와 NV-FPGA가 구성되며, MRAM, NV-CPU, NV-FPGA의 메모리 셀에 저장되어 있는 데이터를 대피시키지 않고 파워 제어부에 의해 각 MRAM, NV-CPU, NV-FPGA의 각 모듈, 즉 비동작부의 전력 공급을 정지하는 파워게이팅에 의해, 쓸데없는 소비 전력을 배제할 수 있다. 또한, FPGA에서 재구성형 연산 모듈에 의해 다양한 신호 처리를 고속으로 실현할 수 있다. 또한, 액세스 콘트롤러에 의해 NV-CPU와 MRAM 사이의 데이터 전송을 효율화시킴으로써, 시스템 전체로서의 고속화가 가능하게 된다. 따라서, 저전력이면서 고성능의 디바이스로서의 마이크로 컴퓨터를 제공할 수 있는 것이 판명되었다.
도 32는, 라플라시안 필터, DCT(Discrete Cosine Transform), FIR(Finite Impulse Response) 필터, FFT(Fast Fourier Transform)의 각 처리에 의한 필요 전력을 나타낸 도면이다. 어느 처리에 있어서도, FPGA에 의한 처리를 행하지 않는 경우, 메모리로서의 MRAM에서의 소비 전력이 크지만, FPGA에 의한 처리를 사용함으로써 MRAM에서의 소비 전력을 큰 폭으로 저감할 수 있다. 또한, 그 감소 폭은, FPGA에 의한 소비 전력보다 크기 때문에, 그 효과는 절대적이다.
표 3은, 라플라시안 필터, DCT(Discrete Cosine Transform), FIR(Finite Impulse Response) 필터, FFT(Fast Fourier Transform)의 각 처리에서의, 타일, DSP, LUTs, FFs의 사용 횟수, 최대 동작 주파수, 200MHz에서의 전력을 정리한 것이다.
[표 3]
Figure pct00003
처리의 종류에 관계없이, 최대 동작 주파수가 200MHz를 초과하고, DCT에서는 250MHz를 초과하고 있다. 200MHz에서의 전력에 대해서도, FIR 필터, DCT, 라플라시안 필터, FFT의 순서대로 작아지고 있다. 처리에 사용한 기능의 종류에서는, DSP, 타일, FFs, LUTs의 순서로, 사용 횟수가 많아지고 있다.
본 실시예를 다른 종래예와 비교한다. 도 33은, 본 실시예(Example)를 종래예(비특허문헌 1 내지 5)와 비교했을 때의 도표이다. 도 34는, 도 33의 도표 중 동작 주파수와 IoT 어플리케이션을 상정했을 때의 평균 전력의 관계를 나타낸 도면이다. FPGA를 사용한 것은, 비특허문헌 3의 기술이며, 비특허문헌 3에서는 동작 주파수가 25MHz인 것에 대하여, 본 실시예에서는 200MHz이기 때문에, 높은 데이터 처리가 가능하게 된다. 평균 전력에 관해서도, 본 실시예에서는 47.14μW인 것에 대하여, 종래예에서는 자리수가 크다. 따라서, 본 실시예 및 본 발명의 실시형태에 의한 디바이스에 의해, 처음으로, 저전력이면서 고성능의 디바이스 및 이것을 사용한 센서 노드를 제공할 수 있다.
본 명세서에서는, NV-CPU, NV-FPGA로 나타내고 있지만, 각각 불휘발 CPU, 불휘발 FPGA로 표기해도 된다. 또한, NV-CPU, NV-FPGA, MRAM에 있어서, 메모리 셀이라는 용어를 사용하고 있지만, 기억 영역으로 칭해도 된다. NV-FPGA는, 도 30에 나타나 있는 FPGA-ACC, 즉 FPGA 베이스의 액셀러레이터이다. 불휘발 CPU, 불휘발 FPGA(불휘발 FPGA-ACC)에 있어서 불휘발의 영역에서 축적되는 각종 데이터는, 만약, 휘발인 경우에는, 파워게이팅 시에, 대피 및 기입이 행해지는 것은 말할 필요도 없다.
본 발명의 실시형태의 컨셉으로서는, 하기와 같다.
제1로서, 디바이스가,
복수의 메모리 셀이 선택 트랜지스터와 MTJ를 포함하여 복수의 영역으로 나누어져 구성된 MRAM과,
불휘발 메모리를 포함하여 구성된 불휘발 CPU와,
불휘발 메모리를 포함하여 구성되며, 상기 불휘발 CPU의 연산 처리의 일부를 실행하는 불휘발 FPGA-ACC와,
상기 MRAM과 상기 불휘발 CPU와 상기 불휘발 FPGA-ACC에서의 각 메모리 셀로의 전력 공급을 제어하는 파워게이팅 제어부
를 구비한다.
이로써, FPGA 베이스의 액셀러레이터로서 불휘발 FPGA-ACC와 불휘발 CPU로 나누어서 연산 처리가 행해지도록 구성되며, 이 때, 불휘발 FPGA-ACC와 불휘발 CPU에서의 연산에 관한 데이터로서 MRAM에 축적시켜 둔다. 제1로서, FPGA, CPU가 모두 불휘발이므로, 파워게이팅 제어부에 의한 파워게이팅마다, FPGA 내에서의 데이터, 콘피규레이션 데이터의 대피 및 기입을 할 필요가 없고, 또한, CPU 내에서의 데이터의 대피 및 기입을 할 필요가 없다(도 2의 A 내지 도 2의 C 참조). 제2로서, 동작 간격마다의 시퀀스 처리(시퀀스에 의한 순차 처리)에 대하여, CPU와 FPGA 베이스의 액셀러레이터(FPGA-ACC)로 병렬 처리를 한다. 병렬 처리에서 프로세스 시간이 크게 감소하므로, 파워게이팅 PG의 시간이 길어지고, 병렬 처리에 의한 파워게이팅의 시간의 증가분, 즉 FPGA-ACC에 의한 프로세스 시간의 감소분의 시간, 스태틱한 전력 부분과 다이나믹한 전력 부분의 양쪽이 불필요하게 된다. 이 감소분의 불필요하게 된 전력이, FPGA-ACC의 연산 처리에 의한 소비 전력의 증가분보다 훨씬 크다(도 3의 A 및 도 3의 B 참조). 이와 같이, 불휘발 FPGA-ACC를, 불휘발 CPU 및 MRAM에 의해 구성되어 있는 불휘발 마이크로 컴퓨터에 대하여 탑재함으로써, 높은 연산 성능과 저소비 전력화를 실현할 수 있다. 프로세스 시간이 짧아짐으로써, 전력 소비의 대부분을 나타내는 MRAM의 사용 시간이 짧아져, 더 한층 저소비 전력화가 실현된다. 불휘발 CPU와 불휘발 FPGA-ACC를 접속 가능하게 함으로써, 시퀀스 처리를 불휘발 CPU와 불휘발 FPGA-ACC에 의한 병렬 처리로 행할 수 있다(도 28 참조). 특히, FPGA는, 재구성에 의해 연산 처리에 대응할 수 있고, CPU와의 병렬 처리에 적합하므로, 센서 노드에 있어서 각종 연산 처리에 유연하게 대응할 수 있다.
제2로서, 전술한 디바이스에 있어서, 상기 MRAM으로부터 판독 시에 미리 데이터를 판독하고 축적함으로써 상기 MRAM로의 액세스를 제어하는 액세스 콘트롤러를 더 구비한다. 이와 같은 액세스 콘트롤러는, 상기 불휘발 CPU로부터 데이터의 판독 명령을 받으면 미리 상기 MRAM으로부터 판독하고 있는 지의 여부를 판단하고, 판독 완료인 경우에는, 축적하고 있는 데이터를 상기 불휘발 CPU에 송신한다. 이로써, CPU로부터 MRAM로의 액세스가 다중 방식으로 행해지고, 판독된 데이터가 액셀러레이터에 일시적으로 보존된다. 동일한 메모리 어드레스로의 액세스가 반복되면, 일시적으로 유지하고 있는 데이터가, MRAM로부터 판독되지 않고, 재이용된다(도 10 참조).
이와 같은 액셀러레이터의 구성으로서는, 예를 들면, 도 9에 나타낸 바와 같이,
상기 액세스 콘트롤러가,
판독처인 MRAM의 어드레스의 입력을 받으면 상기 어드레스를 유지하는 어드레스 유지용 레지스터와,
상기 어드레스 유지용 레지스터에서 유지되고 있는 상기 MRAM의 복수의 지정처를 판독하도록 상기 MRAM에 출력하는 멀티플렉서와,
상기 멀티플렉서로부터의 입력에 따라, 상기 MRAM으로부터 판독한 데이터를 유지하는 복수의 데이터 유지용 레지스터와,
판독처의 지정과 함께 판독 명령을 받으면, 상기 판독처의 지정에 관한 어드레스를 상기 어드레스 유지용 레지스터에 유지되고 있는 판독 어드레스와 비교하는 컴퍼레이터
를 구비함으로써,
판독처의 지정과 함께 판독 명령을 받으면, 미리 상기 MRAM으로부터 판독하고 있는 것으로 상기 컴퍼레이터가 판단하고 있는 경우에는, 이미 판독하여 상기 복수의 데이터 유지용 레지스터 중 어느 하나의 레지스터에 유지하고 있는 데이터를, 상기 판독 명령에 대한 응답하여 출력할 수 있다.
나아가서는, 상기 액세스 콘트롤러가, 상기 멀티플렉서에 접속되는 프리페치 어드레스 생성기를, 더 구비해 둠으로써, 상기 프리페치 어드레스 생성기가, 상기 어드레스 유지용 레지스터에 유지되고 있는 판독처의 어드레스를 포함하는 어드레스를 생성함으로써 실현된다.
제3으로서, CPU와 MRAM 사이에서의 액세스 콘트롤러를 개재한 데이터 전송 방법에 관한 것으로서,
상기 액세스 콘트롤러가, 상기 CPU로부터 판독 어드레스와 함께 데이터 판독 명령을 받으면, 상기 MRAM으로부터 상기 판독 어드레스를 포함한 복수의 어드레스의 데이터를 미리 판독해 두고,
상기 CPU로부터 다음 판독 어드레스와 함께 데이터의 판독 명령을 받으면, 이미 판독한 데이터인지의 여부를 판단하고, 이미 판독한 데이터의 판독 명령인 경우에는, 상기 MRAM으로부터의 판독을 행하지 않고, 미리 판독한 데이터를, 판독 명령의 응답으로 한다.
즉, 프리패치·데이터 요구, 액세스 콘트롤러 내로의 데이터 기억, 페치 동작이 동시에 행해지고, 페치 동작이 순차적으로 행해진다(도 10 참조). 이로써, 고속 명령 페치를 중단하지 않고 행할 수 있다. 이는, 어떤 시퀀스를 순차적으로 실행하는, 예를 들면, 센서 노드 어플리케이션용에 있어서 유효하며, 메모리로의 액세스가 규칙적이므로, 효과적으로 기능한다. MRAM에 필요한 성능을 변경하지 않고, 액세스 콘트롤러의 전력 오버헤드만으로, CPU의 동작 주파수를 고속화하고, 시스템 성능을 향상시킬 수 있다. 액세스 콘트롤러는, 가속 유닛으로서, 작은 면적의 오버헤드로 칩에 매립할 수 있고, CPU의 동작 주파수를 고속화할 수 있고, 넓은 온도 범위에서, 읽기 쓰기 동작이 보증된다.
제4로서, 불휘발 CPU와 MRAM과 재구성형 연산 모듈로서의 불휘발 FPGA-ACC를 구비하는 마이크로 콘트롤러에서의 처리 방법에 관한 것으로서,
상기 MRAM에는, 상기 불휘발 CPU와 상기 불휘발 FPGA-ACC에서 주고받아지는 데이터를 유지하기 위한 영역이 설정되어 있고,
상기 불휘발 CPU로부터 상기 불휘발 FPGA-ACC에 입력되는 데이터가 상기 영역에 기입이 행해지고,
상기 불휘발 CPU로부터 상기 불휘발 FPGA-ACC에, 상기 기입 및 계산 개시의 준비가 종료한 것을 나타내는 신호가 전달되고,
상기 불휘발 FPGA-ACC가 상기 영역에 기입된 데이터를 사용하여 연산을 개시하고,
상기 연산의 종료 후, 상기 불휘발 FPGA-ACC의 계산 결과가, 상기 영역을 사용하여 상기 불휘발 CPU에 전달된다.
이와 같은 방법에 의해, 어떤 메모리 어드레스에 대해서도, 처리에 요하는 데이터가 유지되어 있는 지에 대한 정보를 불휘발 CPU, 불휘발 FPGA-ACC, MRAM으로 전달할 필요가 없고, 효율적으로, 마이크로 콘트롤러에서의 처리가 행해진다.
특히, 전술한 처리 방법에 있어서, 상기 불휘발 CPU 및 상기 불휘발 FPGA-ACC는, 파워게이팅 제어가 행해지는 것이 바람직하다. 파워게이팅 제어는, 연산 처리를 행할 때만 전력 공급을 행하고, 연산 처리를 행하지 않을 때는 전력 공급을 행하지 않는 것이며, 불휘발 CPU, 불휘발 FPGA-ACC를 사용함으로써, 파워를 온 또는 오프할 때, 데이터를 대피 및 기입을 할 필요가 없고, 파워게이팅에 의해, 간헐 동작 간격을 크게 하는 것에 따라, 평균 소비 전력을 저하시킬 수 있다(도 30의 with PG&FPGA-ACC).
특히, 전술한 처리 방법에 있어서, 상기 불휘발 FPGA-ACC에 의한 연산 처리가, 라플라시안 필터, 이산 코사인 변환 DCT(Discrete Cosine Transform), FIR(Finite Impulse Response) 필터 및 FFT(Fast Fourier Transform) 중 어느 하나의 처리에 관한 것이 바람직하다. 특히, IoT 센서 노드로서 마이크로 콘트롤러에서의 처리 방법을 상정하면, 도 4 및 도 5를 참조하면서 설명한 바와 같이, 센서의 데이터를 클라우드 장치(140)로 처리할 필요가 없도록, 말단의 센서 노드(110)에 있어서, 예를 들면 특징량을 구하거나 화상 처리를 하거나 함으로써 데이터량을 억제하여 상위 기기인 클라우드 장치(140)에 송신하는 것이 바람직하므로, 이들 중 어느 하나의 처리는 바람직하다.
특히, 전술한 처리 방법에 있어서, 시퀀스에 의한 순차 처리를, 상기 불휘발 CPU와 불휘발 FPGA 베이스의 액셀러레이터에 의해 병렬 처리하는 것이 바람직하다. 시퀀스 처리가 불휘발 CPU와 불휘발 FPGA-ACC에 의해 병렬 처리로 행해지므로, 높은 연산 성능과 저소비 전력 성능이 실현되고, IoT 센서 노드로의 적용이 바람직하다.
1: 디바이스
2, 11: STT-MRAM(MRAM)
3, 12: NV-CPU
4, 13: NV-FPGA
5: 파워게이팅 제어부
6, 14: 액세스 콘트롤러
7: 버스
100: 시스템
110: 센서 노드
120: 게이트웨이(GW)
130: 통신 네트워크
140: 클라우드 장치

Claims (21)

  1. 복수의 메모리 셀이 선택 트랜지스터와 MTJ를 포함하여 복수의 영역으로 나누어져 구성된 MRAM;
    불휘발 메모리를 포함하여 구성된 불휘발 CPU;
    불휘발 메모리를 포함하여 구성되며, 상기 불휘발 CPU의 연산 처리의 일부를 실행하는 불휘발 FPGA-ACC; 및
    상기 MRAM과 상기 불휘발 CPU와 상기 불휘발 FPGA-ACC에서의 각 메모리 셀로의 전력 공급을 제어하는 파워게이팅 제어부
    를 구비하는, 디바이스.
  2. 제1항에 있어서,
    상기 불휘발 CPU가 상기 MRAM에 데이터를 송신함으로써 상기 불휘발 FPGA-ACC는 상기 MRAM으로부터 상기 데이터를 판독하고 또한, 상기 불휘발 FPGA-ACC가 상기 MRAM에 데이터를 송신함으로써 상기 불휘발 CPU는 상기 MRAM으로부터 상기 데이터를 판독하는, 디바이스.
  3. 제1항 또는 제2항에 있어서,
    상기 불휘발 FPGA-ACC가, 불휘발의 기억 기능을 구비하고, 상기 기억 기능에 의해 콘피규레이션(configuration) 데이터가 보존되는, 디바이스.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 MRAM의 각 메모리 셀이, 2개의 상기 선택 트랜지스터와 2개의 상기 MTJ를 포함하는 2T-2MTJ로 구성되어 있는, 디바이스.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 MRAM에서의 상기 복수의 영역의 각각이 분할된 블록 단위로 구성되며, 상기 블록 단위로 파워게이팅되는, 디바이스.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 불휘발 FPGA-ACC가, 상기 불휘발 CPU 상에서의 연산의 일부를 대신 행하게 하는 타일과, 상기 불휘발 CPU 상에서의 연산의 일부를 상기 타일보다 고속으로 대신 행하게 하는 DSP(Digital Signal Processor)를 가지고 있는, 디바이스.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 MRAM으로부터 판독 시에 미리 데이터를 판독하여 축적함으로써 상기 MRAM로의 액세스를 제어하는 액세스 콘트롤러를 더 구비하는, 디바이스.
  8. 제7항에 있어서,
    상기 액세스 콘트롤러가, 상기 불휘발 CPU로부터 데이터의 판독 명령을 받으면 미리 상기 MRAM으로부터 판독하고 있는 지의 여부 판단하고, 판독 완료인 경우에는, 축적하고 있는 데이터를 상기 불휘발 CPU에 송신하는, 디바이스.
  9. 제7항 또는 제8항에 있어서,
    상기 액세스 콘트롤러가,
    판독처(reading destination)인 MRAM의 어드레스의 입력을 받으면 상기 어드레스를 유지하는 어드레스 유지용 레지스터와,
    상기 어드레스 유지용 레지스터에서 유지되고 있는 상기 MRAM의 복수의 지정처를 판독하도록 상기 MRAM에 출력하는 멀티플렉서와,
    상기 MRAM으로부터 판독한 데이터를 유지하는 복수의 데이터 유지용 레지스터와,
    판독처의 지정과 함께 판독 명령을 받으면, 상기 판독처의 지정에 관한 어드레스를 상기 어드레스 유지용 레지스터에 유지되고 있는 판독 어드레스와 비교하는 컴퍼레이터(comparator)
    를 구비하고,
    판독처의 지정과 함께 판독 명령을 받으면, 미리 상기 MRAM으로부터 판독하고 있는 것으로 상기 컴퍼레이터가 판단하고 있는 경우에는, 이미 판독하여 상기 복수의 데이터 유지용 레지스터 중 어느 하나의 레지스터에 유지하고 있는 데이터를, 상기 판독 명령에 대한 응답하여 출력하는, 디바이스.
  10. 제9항에 있어서,
    상기 액세스 콘트롤러가, 상기 멀티플렉서에 접속되는 프리페치(prefetch) 어드레스 생성기를 더욱 구비하고,
    상기 프리페치 어드레스 생성기가, 상기 어드레스 유지용 레지스터에 유지되고 있는 판독처의 어드레스를 포함하는 어드레스를 생성하는, 액세스 콘트롤러.
  11. 제1항 내지 제10항 중 어느 한 항에 있어서,
    평균 전력이 100μW 이하에서 사용 가능한, 디바이스.
  12. 제1항 내지 제11항 중 어느 한 항에 있어서,
    간헐 동작 간격이 100m초 이하로 설정 가능한, 디바이스.
  13. 제1항 내지 제12항 중 어느 한 항에 기재된 디바이스를 포함하여 구성된, 센서 노드.
  14. 판독처인 MRAM의 어드레스의 입력을 받으면 상기 어드레스를 유지하는 어드레스 유지용 레지스터와,
    상기 어드레스 유지용 레지스터에서 유지되고 있는 상기 MRAM의 복수의 지정처를 판독하도록 상기 MRAM에 출력하는 멀티플렉서와,
    상기 MRAM으로부터 판독한 데이터를 유지하는 복수의 데이터 유지용 레지스터와,
    판독처의 지정과 함께 판독 명령을 받으면, 상기 판독처의 지정에 관한 어드레스를 상기 어드레스 유지용 레지스터에 유지되고 있는 판독 어드레스와 비교하는 컴퍼레이터
    를 구비하고,
    판독처의 지정과 함께 판독 명령을 받으면, 미리 상기 MRAM으로부터 판독하고 있는 것으로 상기 컴퍼레이터가 판단하고 있는 경우에는, 이미 판독하여 상기 복수의 데이터 유지용 레지스터 중 어느 하나의 레지스터에 유지하고 있는 데이터를, 상기 판독 명령에 대한 응답하여 출력하는, 액세스 콘트롤러.
  15. 제14항에 있어서,
    상기 멀티플렉서에 접속되는 프리페치 어드레스 생성기를 더욱 구비하고,
    상기 프리페치 어드레스 생성기가, 상기 어드레스 유지용 레지스터에 유지되고 있는 판독처의 어드레스를 포함하는 어드레스를 생성하는, 액세스 콘트롤러.
  16. CPU와 MRAM 사이에서의 액세스 콘트롤러를 개재한 데이터 전송 방법으로서,
    상기 액세스 콘트롤러가, 상기 CPU로부터 판독 어드레스와 함께 데이터 판독 명령을 받으면, 상기 MRAM으로부터 상기 판독 어드레스를 포함한 복수의 어드레스의 데이터를 미리 판독해 두고,
    상기 CPU로부터 다음 판독 어드레스와 함께 데이터의 판독 명령을 받으면, 이미 판독한 데이터인지의 여부를 판단하고, 이미 판독한 데이터의 판독 명령인 경우에는, 상기 MRAM으로부터의 판독을 행하지 않고, 미리 판독한 데이터를, 판독 명령의 응답으로 하는, 데이터 전송 방법.
  17. 불휘발 CPU와 MRAM과 재구성형 연산 모듈로서의 불휘발 FPGA-ACC를 구비하는 마이크로 콘트롤러에서의 처리 방법으로서,
    상기 MRAM에는, 상기 불휘발 CPU와 상기 불휘발 FPGA-ACC에서 주고받는 데이터를 유지하기 위한 영역이 설정되어 있고,
    상기 불휘발 CPU로부터 상기 불휘발 FPGA-ACC에 입력되는 데이터가 상기 영역에 기입이 행해지고,
    상기 불휘발 CPU로부터 상기 불휘발 FPGA-ACC에, 상기 기입 및 계산 개시의 준비가 종료한 것을 나타내는 신호가 전달되고,
    상기 불휘발 FPGA-ACC가 상기 영역에 기입된 데이터를 사용하여 연산을 개시하고,
    상기 연산의 종료 후, 상기 불휘발 FPGA-ACC의 계산 결과가, 상기 영역을 사용하여 상기 불휘발 CPU에 전달되는,
    마이크로 콘트롤러에서의 처리 방법.
  18. 제17항에 있어서,
    상기 불휘발 CPU 및 상기 불휘발 FPGA-ACC는, 파워게이팅 제어가 행해지는, 마이크로 콘트롤러에서의 처리 방법.
  19. 제18항에 있어서,
    상기 파워게이팅 제어에 있어서는, 데이터의 대피 및 복귀 동작을 하지 않는, 마이크로 콘트롤러에서의 처리 방법.
  20. 제17항 내지 제19항 중 어느 한 항에 있어서,
    상기 불휘발 FPGA-ACC에 의한 연산 처리가, 라플라시안 필터, DCT(Discrete Cosine Transform), FIR(Finite Impulse Response) 필터 및 FFT(Fast Fourier Transform) 중 어느 하나의 처리에 관한, 마이크로 콘트롤러에서의 처리 방법.
  21. 제17항 내지 제20항 중 어느 한 항에 있어서,
    시퀀스에 의한 순차 처리를, 상기 불휘발 CPU와 불휘발 FPGA 베이스의 액셀러레이터(accelerator)에 의해 병렬 처리하는, 마이크로 콘트롤러에서의 처리 방법.
KR1020217029864A 2019-02-16 2020-02-15 디바이스, 센서 노드, 액세스 콘트롤러, 데이터 전송 방법 및 마이크로 콘트롤러에서의 처리 방법 KR20220002265A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2019026134 2019-02-16
JPJP-P-2019-026134 2019-02-16
PCT/JP2020/005928 WO2020166725A1 (ja) 2019-02-16 2020-02-15 デバイス、センサノード、アクセスコントローラ、データ転送方法及びマイクロコントローラにおける処理方法

Publications (1)

Publication Number Publication Date
KR20220002265A true KR20220002265A (ko) 2022-01-06

Family

ID=72044111

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217029864A KR20220002265A (ko) 2019-02-16 2020-02-15 디바이스, 센서 노드, 액세스 콘트롤러, 데이터 전송 방법 및 마이크로 콘트롤러에서의 처리 방법

Country Status (4)

Country Link
US (2) US11862217B2 (ko)
JP (1) JPWO2020166725A1 (ko)
KR (1) KR20220002265A (ko)
WO (1) WO2020166725A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230403011A1 (en) * 2022-06-09 2023-12-14 Everspin Technologies, Inc. Mram device with integrated controller for fpga system and methods therefor

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3954185B2 (ja) * 1998-01-14 2007-08-08 株式会社沖データ メモリシステム
US20180107591A1 (en) * 2011-04-06 2018-04-19 P4tents1, LLC System, method and computer program product for fetching data between an execution of a plurality of threads
JP6130758B2 (ja) 2013-09-06 2017-05-17 株式会社東芝 メモリ制御回路およびキャッシュメモリ
US10396778B1 (en) * 2017-05-31 2019-08-27 Apple Inc. Method for power gating for wide dynamic voltage range operation
KR20190093400A (ko) * 2018-02-01 2019-08-09 삼성전자주식회사 반도체 메모리 장치 및 반도체 메모리 장치를 포함하는 전자 장치
US11146564B1 (en) * 2018-07-24 2021-10-12 Pure Storage, Inc. Login authentication in a cloud storage platform
US11048800B2 (en) * 2018-12-17 2021-06-29 Intel Corporation Composable trustworthy execution environments

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
N. Sakimura, et al., "A 90nm 20MHz Fully Nonvolatile Microcontroller for Standby-Power- Critical Applications," ISSCC, pp. 184-186, 2014.
T. Onuki, et al., "Embedded Memory and ARM Cortex-M0 Core Using 60-nm C-Axis Aligned Crystalline Indium-Gallium-Zinc Oxide FET Integrated With 65-nm Si CMOS," JSSC, vol. 52, Iss. 4, pp. 925-932, 2017.
V. Singhal, et al., "A 10.5μA/MHz at 16MHz Single-Cycle Non-Volatile Memory Access Microcontroller with Full State Retention at 108nA in a 90nm Process," ISSCC, pp. 148-150, 2015.
Y. Liu, et al., "A 65nm ReRAM-Enabled Nonvolatile Processor with 6×Reduction in Restore Time and 4× Higher Clock Frequency Using Adaptive Data Retention and Self-Write-Termination Nonvolatile Logic," ISSCC, pp. 84-86, 2016.
Y. Tsuji, et al., "Sub-μW Standby Power, <18μW/DMIPS@25MHz MCU with Embedded Atom-switch Programmable Logic and ROM," Symp. VLSI Tech., pp.T 86-T87, 2015.

Also Published As

Publication number Publication date
WO2020166725A1 (ja) 2020-08-20
JPWO2020166725A1 (ko) 2020-08-20
US20220157361A1 (en) 2022-05-19
US20240071452A1 (en) 2024-02-29
US11862217B2 (en) 2024-01-02

Similar Documents

Publication Publication Date Title
CN109564765B (zh) 用于在自刷新状态下操作的设备及方法
US10043563B2 (en) Flip-flop circuit, method of controlling a flip-flop circuit and memory device
Ren et al. True energy-performance analysis of the MTJ-based logic-in-memory architecture (1-bit full adder)
CN109766309B (zh) 自旋存算一体芯片
Guo et al. Resistive computation: Avoiding the power wall with low-leakage, STT-MRAM based computing
US20180247682A1 (en) Methods for reading data from a storage buffer including delaying activation of a column select
US20140149773A1 (en) Latch circuit and data processing system
Sidhu et al. A self-reconfigurable gate array architecture
CN109508303B (zh) 一种用于并行数据存储的超导高速缓冲存储器
Kwon et al. AWARE (asymmetric write architecture with redundant blocks): A high write speed STT-MRAM cache architecture
JP7073060B2 (ja) 半導体装置の電源制御方法
US20240071452A1 (en) Device, sensor node, access controller, data transfer method, and processing method in microcontroller
CN110674462B (zh) 一种矩阵运算装置、方法、处理器和计算机可读存储介质
EP2737407A1 (en) Method and device to reduce leakage and dynamic energy consumption in high-speed memories
Wang et al. An ultralow-power memory-based big-data computing platform by nonvolatile domain-wall nanowire devices
US20160336050A1 (en) Computer architecture using compute/storage tiles
Konishi et al. PCA-1: A fully asynchronous, self-reconfigurable LSI
Chang et al. DASM: Data-streaming-based computing in nonvolatile memory architecture for embedded system
US10331196B2 (en) Reduced setup time clock gating circuit
Sampath et al. Hybrid CMOS-memristor based FPGA architecture
Ju et al. NVM-based FPGA block RAM with adaptive SLC-MLC conversion
Chang et al. CORN: In-buffer computing for binary neural network
US7352647B1 (en) Reduced power usage in a memory for a programmable logic device
Zianbetov et al. Non-volatility for ultra-low power asynchronous circuits in hybrid cmos/magnetic technology
Wang et al. Computing-in-memory paradigm based on STT-MRAM with synergetic read/write-like modes

Legal Events

Date Code Title Description
A201 Request for examination