KR102345613B1 - 저전력 분산형 메모리 네트워크 - Google Patents

저전력 분산형 메모리 네트워크 Download PDF

Info

Publication number
KR102345613B1
KR102345613B1 KR1020167034209A KR20167034209A KR102345613B1 KR 102345613 B1 KR102345613 B1 KR 102345613B1 KR 1020167034209 A KR1020167034209 A KR 1020167034209A KR 20167034209 A KR20167034209 A KR 20167034209A KR 102345613 B1 KR102345613 B1 KR 102345613B1
Authority
KR
South Korea
Prior art keywords
signal processing
digital signal
processing functions
pram
control module
Prior art date
Application number
KR1020167034209A
Other languages
English (en)
Other versions
KR20170003967A (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 마벨 아시아 피티이 엘티디.
Publication of KR20170003967A publication Critical patent/KR20170003967A/ko
Application granted granted Critical
Publication of KR102345613B1 publication Critical patent/KR102345613B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3212Monitoring battery levels, e.g. power saving mode being initiated when battery voltage goes below a certain level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Power Sources (AREA)
  • Advance Control (AREA)

Abstract

디지털 신호 프로세싱(DSP) 시스템이 제공되며, 이러한 디지털 신호 프로세싱(DSP) 시스템은, 아날로그 대 디지털 변환기, 프로그램 무작위 액세스 메모리(PRAM), N개의 스위칭 디바이스들, 그리고 제어 모듈을 포함한다. 아날로그 대 디지털 변환기는 아날로그 신호의 샘플들을 디지털 샘플들로 변환하도록 구성된다. PRAM은 N개의 PRAM 블록들(여기서, N은 1보다 큰 정수임); 그리고 N개의 PRAM 블록들에 저장되는 M개의 디지털 신호 프로세싱 기능들을 위한 코드를 포함한다(여기서, M은 1보다 큰 정수임). N개의 스위칭 디바이스들은, N개의 PRAM 블록들을 전력 소스에 연결하는 것 그리고 전력 소스로부터 분리하는 것을 각각 수행하도록 구성된다. 제어 모듈은, N개의 스위칭 디바이스들을 제어하는 것과, 그리고 출력을 생성하기 위해 디지털 샘플들에 관해 M개의 디지털 신호 프로세싱 기능들 중 선택된 디지털 신호 프로세싱 기능들을 실행하는 것을 수행하도록 구성된다.

Description

저전력 분산형 메모리 네트워크{LOW POWER DISTRIBUTED MEMORY NETWORK}
관련 출원들에 대한 상호-참조
본 출원은 2015년 4월 30일자로 출원된 미국 특허 출원 번호 제14/700,755호에 대한 우선권을 주장하고, 아울러 2014년 5월 7일자로 출원된 미국 가특허 출원 번호 제61/989,697호에 대한 우선권 혜택을 또한 주장한다. 위에서 참조되는 이러한 출원들의 전체 개시내용들은 참조로 본 명세서에 통합된다.
본 개시내용은 메모리 제어 시스템들 및 방법들에 관한 것이며, 더 특정적으로는 메모리를 포함하는 시스템들의 전력 소비를 감소시키기 위한 시스템들 및 방법들에 관한 것이다.
본 명세서에서 제공되는 배경기술은 본 개시내용의 배경 상황을 전반적으로 설명하기 위한 것이다. 현재 본 발명의 발명자로 명명된 사람들이 행한 작업은, 이러한 작업이 본 배경기술 부분에서 설명되는 한, 뿐만 아니라 (만약 본 배경기술 부분에서 설명되지 않은 경우 본 출원의 출원시 종래 기술로서의 자격이 없을 수 있는) 여러 양상의 설명으로 제공되는 한, 본 개시내용에 대한 종래 기술로서 명백하게 인정되는 것이 아니며 암시적으로 인정되는 것도 아니다.
휘발성 메모리 및 비-휘발성 메모리는 메모리의 두 가지 다른 타입들이다. 휘발성 메모리의 어떤 타입들에 저장되는 데이터는 메모리에 전력이 끊기는 경우 소실될 수 있다. 그러나, 비-휘발성 메모리에 저장되는 데이터는 메모리에 전력이 끊기는 경우에도 유지될 수 있다.
데이터의 다양한 타입들이 메모리에 저장될 수 있다. 예를 들어, 디지털 신호 프로세서(Digital Signal Processer, DSP)는 입력 데이터에 관해 신호 프로세싱 기능(signal processing function)들을 실행하며, 신호 프로세싱 기능들은 메모리에 저장된다.
디지털 신호 프로세싱(Digital Signal Processing, DSP) 시스템이 제공되며, 이러한 디지털 신호 프로세싱 시스템은, 아날로그 대 디지털 변환기(analog to digital converter), 프로그램 무작위 액세스 메모리(Program Random Access Memory, PRAM), N개의 스위칭 디바이스(switching device)들, 및 제어 모듈(control module)을 포함한다. 아날로그 대 디지털 변환기는 아날로그 신호(analog signal)의 샘플(sample)들을 디지털 샘플(digital sample)들로 변환(convert)하도록 구성된다. PRAM은, N개의 PRAM 블록(PRAM block)들(여기서, N은 1보다 큰 정수임); 그리고 N개의 PRAM 블록들에 저장되는 M개의 디지털 신호 프로세싱 기능(digital signal processing function)들을 위한 코드(code)(여기서, M은 1보다 큰 정수임)를 포함한다. N개의 스위칭 디바이스들은, N개의 PRAM 블록들을 전력 소스(power source)에 연결하는 것 그리고 전력 소스로부터 분리하는 것을 각각 수행하도록 구성된다. 제어 모듈은, N개의 스위칭 디바이스들을 제어하는 것과; 그리고 출력을 생성하기 위해 디지털 샘플들에 관해 M개의 디지털 신호 프로세싱 기능들 중 선택된 디지털 신호 프로세싱 기능들을 실행하는 것을 수행하도록 구성된다.
다른 특징들에서, DSP 시스템은 또한, M개의 디지털 신호 프로세싱 기능들을 실행할지 혹은 실행하지 않을지에 관한 M개의 표시자(indicator)들을 각각 저장하는 레지스터(register)를 포함한다. 제어 모듈은 레지스터에 저장된 M개의 표시자들에 근거하여 M개의 디지털 신호 프로세싱 기능들 중 선택된 디지털 신호 프로세싱 기능들을 선택하고 실행하도록 구성된다.
다른 특징들에서, 레지스터 내의 M개의 표시자들 중 하나의 표시자가, M개의 디지털 신호 프로세싱 기능들 중 하나의 디지털 신호 프로세싱 기능의 실행이 비활성화(disable)됨을 표시하는 경우, 제어 모듈은 M개의 디지털 신호 프로세싱 기능들 중 하나의 디지털 신호 프로세싱 기능을 저장하는 N개의 PRAM 블록들 중 하나의 PRAM 블록을, 디지털 샘플의 시작과 디지털 샘플의 끝 사이의 기간(period) 동안, 전력 소스로부터 분리한다.
다른 특징들에서, 제어 모듈은, N개의 스위칭 디바이스들 중 하나의 스위칭 디바이스를 선택적으로 작동(actuate)시켜 N개의 PRAM 블록들 중 하나의 PRAM 블록을 전력 소스에 연결하도록 하는 것; N개의 PRAM 블록들 중 하나의 PRAM 블록에 저장된 M개의 디지털 신호 프로세싱 기능들 중 하나의 디지털 신호 프로세싱 기능을 위한 코드의 일부분을 실행하는 것; 그리고 M개의 디지털 신호 프로세싱 기능들 중 하나의 디지털 신호 프로세싱 기능을 위한 코드의 일부분의 실행 이후에, N개의 스위칭 디바이스들 중 하나의 스위칭 디바이스를 작동시켜 N개의 PRAM 블록들 중 하나의 PRAM 블록을 전력 소스로부터 분리하도록 하는 것을 수행하도록 구성된다.
다른 특징들에서, 제어 모듈은, M개의 신호 프로세싱 기능들 중 하나의 신호 프로세싱 기능이 실행될 것이라는 결정에 대한 응답으로, N개의 스위칭 디바이스들 중 하나의 스위칭 디바이스를 작동시켜 N개의 PRAM 블록들 중 하나의 PRAM 블록을 전력 소스에 연결하도록 하는 것을 수행하도록 구성된다.
다른 특징들에서, 제어 모듈은, N개의 PRAM 블록들 중 하나의 PRAM 블록을 전력 소스에 연결하도록 하는 N개의 스위칭 디바이스들 중 하나의 스위칭 디바이스의 작동 이후 미리결정된 기간(predetermined period) 이후에, N개의 PRAM 블록들 중 하나의 PRAM 블록에 저장된 M개의 디지털 신호 프로세싱 기능들 중 하나의 디지털 신호 프로세싱 기능을 위한 코드의 일부분을 실행하기 시작하도록 구성된다.
다른 특징들에서, DSP 시스템은 또한, 클럭 신호(clock signal)에 근거하여 계수기 값(counter value)을 증분(increment)시키도록 구성된 계수기(counter)를 포함한다. 제어 모듈은 계수기 값에 근거하여 코드의 라인(line)들을 실행하도록 구성된다.
다른 특징들에서, 제어 모듈은, N개의 PRAM 블록들 중 하나의 PRAM 블록을 전력 소스에 연결하도록 하는 N개의 스위칭 디바이스들 중 하나의 스위칭 디바이스의 작동 이후 미리결정된 기간 이후에, M개의 디지털 신호 프로세싱 기능들 중 하나의 디지털 신호 프로세싱 기능의 제 1 라인에 대응하는 코드의 라인 번호(line number)로 계수기 값을 선택적으로 설정(set)하도록 구성된다.
다른 특징들에서, 제어 모듈은, N개의 PRAM 블록들 중 하나의 PRAM 블록을 전력 소스에 연결하도록 하는 N개의 스위칭 디바이스들 중 하나의 스위칭 디바이스의 작동 이후 미리결정된 기간 동안 계수기 값을 유지하도록 구성된다.
다른 특징들에서, 제어 모듈은 디지털 샘플이 수신될 때마다 계수기 값을 재설정(reset)하도록 구성된다.
다른 특징들에서,디지털 신호 프로세싱(DSP) 시스템의 전력 소비를 감소시키기 위한 방법이 제공되며, 이러한 방법은, 아날로그 신호의 샘플들을 디지털 샘플들로 변환하는 것; 그리고 N개의 스위칭 디바이스들을 사용하여, N개의 프로그램 무작위 액세스 메모리(PRAM) 블록들을 전력 소스에 연결하는 것과 그리고 전력 소스로부터 분리하는 것을 각각 선택적으로 수행하는 것을 포함한다. N은 1보다 큰 정수이고, M개의 디지털 신호 프로세싱 기능들을 위한 코드가 N개의 PRAM 블록들에 저장되고, M도 1보다 큰 정수이다. 이러한 방법은 또한, N개의 스위칭 디바이스들을 제어하는 것과 그리고 출력을 생성하기 위해 디지털 샘플들에 관해 M개의 디지털 신호 프로세싱 기능들 중 선택된 디지털 신호 프로세싱 기능들을 실행하는 것을 포함한다.
다른 특징들에서, 본 방법은 또한, M개의 디지털 신호 프로세싱 기능들을 실행할지 혹은 실행하지 않을지에 관한 M개의 표시자들을 각각 레지스터에 저장하는 것; 그리고 레지스터에 저장된 M개의 표시자들에 근거하여 M개의 디지털 신호 프로세싱 기능들 중 선택된 디지털 신호 프로세싱 기능들을 선택하고 실행하는 것을 포함한다.
다른 특징들에서, 본 방법은 또한, 레지스터 내의 M개의 표시자들 중 하나의 표시자가, M개의 디지털 신호 프로세싱 기능들 중 하나의 디지털 신호 프로세싱 기능의 실행이 비활성화됨을 표시하는 경우, M개의 디지털 신호 프로세싱 기능들 중 하나의 디지털 신호 프로세싱 기능을 저장하는 N개의 PRAM 블록들 중 하나의 PRAM 블록을, 디지털 샘플의 시작과 디지털 샘플의 끝 사이의 기간 동안, 전력 소스로부터 분리하는 것을 포함한다.
다른 특징들에서, 본 방법은 또한, N개의 스위칭 디바이스들 중 하나의 스위칭 디바이스를 선택적으로 작동시켜 N개의 PRAM 블록들 중 하나의 PRAM 블록을 전력 소스에 연결하도록 하는 것; N개의 PRAM 블록들 중 하나의 PRAM 블록에 저장된 M개의 디지털 신호 프로세싱 기능들 중 하나의 디지털 신호 프로세싱 기능을 위한 코드의 일부분을 실행하는 것; 그리고 M개의 디지털 신호 프로세싱 기능들 중 하나의 디지털 신호 프로세싱 기능을 위한 코드의 일부분의 실행 이후에, N개의 스위칭 디바이스들 중 하나의 스위칭 디바이스를 작동시켜 N개의 PRAM 블록들 중 하나의 PRAM 블록을 전력 소스로부터 분리하도록 하는 것을 포함한다.
다른 특징들에서, 본 방법은 또한, M개의 신호 프로세싱 기능들 중 하나의 신호 프로세싱 기능이 실행될 것이라는 결정에 대한 응답으로, N개의 스위칭 디바이스들 중 하나의 스위칭 디바이스를 작동시켜 N개의 PRAM 블록들 중 하나의 PRAM 블록을 전력 소스에 연결하도록 하는 것을 포함한다.
다른 특징들에서, 본 방법은 또한, N개의 PRAM 블록들 중 하나의 PRAM 블록을 전력 소스에 연결하도록 하는 N개의 스위칭 디바이스들 중 하나의 스위칭 디바이스의 작동 이후 미리결정된 기간 이후에, N개의 PRAM 블록들 중 하나의 PRAM 블록에 저장된 M개의 디지털 신호 프로세싱 기능들 중 하나의 디지털 신호 프로세싱 기능을 위한 코드의 일부분을 실행하기 시작하는 것을 포함한다.
다른 특징들에서, 본 방법은 또한, 클럭 신호에 근거하여 계수기 값을 증분시키는 것; 그리고 계수기 값에 근거하여 코드의 라인들을 실행하는 것을 포함한다.
다른 특징들에서, 본 방법은 또한, N개의 PRAM 블록들 중 하나의 PRAM 블록을 전력 소스에 연결하도록 하는 N개의 스위칭 디바이스들 중 하나의 스위칭 디바이스의 작동 이후 미리결정된 기간 이후에, M개의 디지털 신호 프로세싱 기능들 중 하나의 디지털 신호 프로세싱 기능의 제 1 라인에 대응하는 코드의 라인 번호로 계수기 값을 선택적으로 설정하는 것을 포함한다.
다른 특징들에서, 본 방법은 또한, N개의 PRAM 블록들 중 하나의 PRAM 블록을 전력 소스에 연결하도록 하는 N개의 스위칭 디바이스들 중 하나의 스위칭 디바이스의 작동 이후 미리결정된 기간 동안 계수기 값을 유지하는 것을 포함한다.
다른 특징들에서, 본 방법은 또한, 디지털 샘플이 수신될 때마다 계수기 값을 재설정하는 것을 포함한다.
본 개시내용의 이용가능성의 다른 영역들은 본 명세서의 상세한 설명, 청구항들, 및 도면들로부터 명백하게 될 것이다. 이러한 상세한 설명 및 특정 예들은 단지 예시적 목적으로 의도된 것이며, 본 개시내용의 범위를 한정하려고 의도된 것이 아니다.
도 1은 예시적인 디지털 신호 프로세싱 시스템의 기능적 블록도이다.
도 2는 복수의 신호 프로세싱 기능들을 포함하는 펌웨어에 대한 예시적인 데이터 구조를 포함한다.
도 3, 도 4, 및 도 5는 신호 프로세싱 기능들의 상이한 예시적인 세트들을 실행하기 위한 예시적인 타이밍도들을 포함한다.
도 6은 디지털 신호 프로세싱 기능의 기능적 블록도를 포함한다.
도 7은 복수의 신호 프로세싱 기능들을 포함하는 펌웨어에 대한 예시적인 데이터 구조를 포함한다.
도 8 및 도 9는 신호 프로세싱 기능들의 상이한 예시적인 세트들을 실행하기 위한 예시적인 타이밍도들을 포함한다.
도 10은 메모리 블록들에 전력을 공급 및 차단하는 예시적인 방법을 도시하는 흐름도를 포함한다.
이러한 도면들에서, 유사한 그리고/또는 동일한 요소들을 식별시키기 위해 참조 번호들이 재사용될 수 있다.
디지털 신호 프로세싱(DSP)을 수행하기 위해 디지털 신호 프로세싱 기능들이 디지털 샘플들에 적용된다. 신호 프로세싱 기능들은 메모리에 저장될 수 있고, 계수기가 증분됨에 따라 한 라인씩(line-by-line) 실행된다. 신호 프로세싱 기능들 중 선택된 신호 프로세싱 기능들을 실행할지 혹은 실행하지 않을지는 예를 들어, 사용자에 의해 설정될 수 있거나, 혹은 DSP 시스템을 포함하는 디바이스에 의해 설정될 수 있다.
그러나, 만약 실행되지 않을 신호 프로세싱 기능들을 포함하는 메모리의 부분들에 대한 전력이 차단된다면 전력 소비는 감소될 수 있다. 추가적으로, 각각의 부분들 내에 있는 하나 이상의 신호 프로세싱 기능들이 실행되는 때의 기간들 밖에 있는 메모리의 부분들에 대한 전력을 차단함으로써 전력 소비는 감소될 수 있다.
본 개시내용에 따르면, 메모리는 전력이 독립적으로 공급 및 차단될 수 있는 복수의 메모리 블록들로 분할된다. 신호 프로세싱 기능들 중 하나 이상의 신호 프로세싱 기능들은 메모리 블록들 각각에 저장된다. 실행될 하나 이상의 신호 프로세싱 기능들을 포함하지 않는 메모리 블록들에 대한 전력은 차단된다. 실행될 하나 이상의 신호 프로세싱 기능들을 포함하는 메모리 블록들은 그 하나 이상의 신호 프로세싱 기능들의 실행 동안은 전력을 공급받고, 그 이외의 경우 전력은 차단된다. 그럼으로써 전력 소비는 전체 메모리에 전력을 공급하는 경우와 비교하여 감소된다.
도 1은 디지털 신호 프로세싱(DSP) 시스템을 보여준다. 아날로그 대 디지털 변환기(Analog to Digital Converter)(ADC)(104)는 아날로그 입력 신호의 샘플들을 디지털 입력 샘플들로 변환한다. 제어 모듈(108)은 출력을 발생시키기 위해 디지털 입력 샘플들에 관해 하나 이상의 신호 프로세싱 기능들을 실행한다. 디지털 신호 프로세싱 기능들은 펌웨어(firmware)(112)로 구현되며, 펌웨어(112)는 프로그램 무작위 액세스 메모리(PRAM)(116)에 저장된다.
프로그램 계수기(Program Counter, PC)(120)는 PRAM(116)을 판독하기 위해 사용된다. PC(120)는 클럭 신호(clock signal)(CLK)의 각각의 싸이클에 응답하여 1만큼 증분된다. 클럭 신호의 주파수는 ADC(104)의 샘플링 주파수보다 더 크다. 제어 모듈(108)은, 디지털 입력 샘플이 수신되는 경우, PC(120)를 제로(0)로 재설정한다. 제어 모듈(108)은 PC(120)의 값을 결정하고, 펌웨어(112)의 대응하는 라인을 판독하고 실행한다. 이러한 방식으로, 제어 모듈(108)은 펌웨어(112)를 판독하고 실행하는바, 그럼으로써 펌웨어(112)의 끝에 도달할 때까지 한 라인씩 신호 프로세싱 기능들을 사용하여 디지털 입력 샘플을 프로세싱하게 된다. 이것은 각각의 수신된 디지털 입력 샘플에 대해 수행된다.
실행될 수 있는 복수의 가능한 신호 프로세싱 기능들은 펌웨어(112)에 저장될 수 있다. 실행되는 신호 프로세싱 기능들로서 저장된 신호 프로세싱 기능들, 그리고 실행되지 않는 신호 프로세싱 기능들로서 저장된 신호 프로세싱 기능들은 예를 들어, 사용자에 의해 설정될 수 있거나, 혹은 디지털 신호 프로세싱 시스템을 포함하는 시스템에 의해 설정될 수 있다. 오디오 디지털 신호 프로세싱(audio digital signal processing)의 예가 제공되고 논의되지만, 본 개시내용은 신호들의 다른 타입들의 디지털 신호 프로세싱에 적용가능하다.
I2C(I-two-C) 레지스터(124)와 같은 프로세싱 제어 레지스터(124)는 저장된 신호 프로세싱 기능들을 실행할지 혹은 실행하지 않을지를 표시한다. 프로세싱 제어 레지스터(124)는 오디오 프로세싱 제어 레지스터로서 지칭될 수 있다. 프로세싱 제어 레지스터(124)에 포함되는 데이터를 예시하는 예시적 테이블은 아래와 같은데, 여기서 8개의 신호 프로세싱 기능들, f1, g1, f2, g2, f3, g3, f4, 및 g4는 펌웨어(112)에 저장된다.
Figure 112016119608017-pct00001
프로세싱 제어 레지스터(124)는 각각의 신호 프로세싱 기능들을 대한 표시자들(예를 들어, 플래그(flag)들)을 포함한다. 이러한 표시자들은 신호 프로세싱 기능들이 각각 실행될 것인지(활성화될 것인지) 혹은 실행되지 않을 것인지(비활성화될 것인지)를 표시한다. 예를 들어, 프로세싱 제어 레지스터(124) 내의 1'b1의 표시자는 관련된 신호 프로세싱 기능이 실행될 것임을 표시할 수 있다. 또 하나의 다른 표시자(예컨대, 1'b0의 표시자)는 관련된 신호 프로세싱 기능이 수행되지 않을 것임을 표시할 수 있다.
제어 모듈(108)은 프로세싱 제어 레지스터(124) 내의 표시자들의 상태들을 결정하기 위한 명령(instruction)/커맨드(command)를 실행할 수 있다. 이러한 명령/커맨드의 예는 Stata cond() 함수를 포함한다. 하나의 예에서, 저장된 신호 프로세싱 기능을 실행할지 여부를 결정하기 위한 명령은 해당하는 그 신호 프로세싱 기능을 위한 코드의 제 1 라인 바로 앞에 오는 라인 상에 저장될 수 있다. 하나의 이러한 명령은 저장된 신호 프로세싱 기능들 각각에 대해 펌웨어(112)에 저장될 수 있다.
표시자가 각각의 신호 프로세싱 기능이 실행될 것임을 표시하는 경우, 제어 모듈(108)은 PC(120)가 증분됨에 따라 펌웨어의 대응하는 라인들을 실행한다. 표시자가 각각의 신호 프로세싱 기능이 실행되지 않을 것임을 표시하는 경우, 제어 모듈(108)은 해당하는 그 신호 프로세싱 기능에 대한 펌웨어(112)의 라인들을 스킵(skip)하기 위한 명령/커맨드를 실행한다. 더 구체적으로 살펴보면, 제어 모듈(108)은 임의의 신호 프로세싱 기능이 실행되지 않을 때, 신호 프로세싱 기능들 중 실행될 다음 신호 프로세싱 기능의 제 1 라인에 PC(120)를 설정한다. 이러한 방식으로, 오로지 활성화된 신호 프로세싱 기능들만이 실행될 것이다.
예를 들어, 프로세싱 제어 레지스터(124) [7:0]가 7'b01010101에 설정되는 경우, 오로지 신호 프로세싱 기능들, f1, f2, f3 및 f4만이 실행될 것이고, 신호 프로세싱 기능들, g1, g2, g3, 및 g4는 실행되지 않을 것이다. 도 2에 포함된 예시는, 8개의 신호 프로세싱 기능들 f1 내지 f4 그리고 g1 내지 g4, 그리고 신호 프로세싱 기능들을 실행할지 여부를 결정하기 위해서 프로세싱 제어 레지스터(124)를 점검하기 위한 각각의 커맨드들을 포함하는 펌웨어에 대한 예시적인 데이터 구조이다.
단지 예로서, 신호 프로세싱 기능들이 다음과 같은 순서, f1, f2, f3, f4, g1, g2, g3, 및 g4로 수행되는 것으로서 논의될 것이다. 각각의 신호 프로세싱 기능들을 실행할지 혹은 실행하지 않을지를 결정하기 위해서 프로세싱 제어 레지스터(124)를 점검하기 위한 커맨드들은 신호 프로세싱 기능들 바로 앞에 저장된다. 예를 들어, 신호 프로세싱 기능 f1을 실행할지 여부를 결정하기 위해서 프로세싱 제어 레지스터(124)를 점검하기 위한 커맨드는 신호 프로세싱 기능 f1을 위한 코드의 제 1 라인(라인 1) 바로 앞(라인 0)에 저장된다. 신호 프로세싱 기능 f1을 위한 코드는 '라인 1' 내지 '라인 C1-1'을 점유한다. 신호 프로세싱 기능 f2를 실행할지 여부를 결정하기 위해서 프로세싱 제어 레지스터(124)를 점검하기 위한 커맨드는 신호 프로세싱 기능 f2을 위한 코드 바로 앞인, '라인 C2'에 저장된다. 신호 프로세싱 기능 f2를 위한 코드는 '라인 C2+1' 내지 '라인 C3-1'을 점유한다. 신호 프로세싱 기능 g2를 실행할지 여부를 결정하기 위해서 프로세싱 제어 레지스터(124)를 점검하기 위한 커맨드는 '라인 C3'에 저장되는 등등이다.
도 3은 신호 프로세싱 기능들 f1 내지 f4가 실행되고, 신호 프로세싱 기능들 g1 내지 g4가 실행되지 않는 예에 대한 타이밍도(timing diagram)를 포함한다. 디지털 샘플 X[n]이 수신되는 경우, 제어 모듈(108)은 도 3에서 제시되는 바와 같이 PC(120)를 0으로 재설정한다. PC(120)가 0과 동일하게 되는 경우, 제어 모듈(108)은 '라인 0'을 판독하고, 그럼으로써 신호 프로세싱 기능 f1을 실행할지 여부를 결정하기 위해 프로세싱 제어 레지스터(124)를 점검하게 된다. 신호 프로세싱 기능 f1에 대한 표시자가 신호 프로세싱 기능 f1은 실행돼야 함을 표시하는 경우, 제어 모듈(108)은 PC(120)가 1에 있을 때 신호 프로세싱 기능 f1의 제 1 라인을 실행한다. 제어 모듈(108)은 PC(120)가 증분됨에 따라 신호 프로세싱 기능 f1을 한 라인씩 계속 실행한다.
신호 프로세싱 기능 g1을 실행할지 여부를 결정하기 위해 프로세싱 제어 레지스터(124)를 점검하기 위한 명령은 펌웨어(112)의 '라인 C1' 상에 저장된다. 이러한 예에서, 신호 프로세싱 기능 g1은 실행되지 않을 신호 프로세싱 기능이다.
신호 프로세싱 기능이, 실행되지 않을 그러한 신호 프로세싱 기능인 경우, 제어 모듈(108)은 신호 프로세싱 기능들 중 실행될 다음 신호 프로세싱 기능을 결정한다. 그 다음에, 제어 모듈(108)은 신호 프로세싱 기능들 중 해당하는 그 신호 프로세싱 기능에 대한 펌웨어(112)의 제 1 라인으로 PC(120)를 설정한다.
제어 모듈(108)은 신호 프로세싱 기능들 중 실행될 다음 신호 프로세싱 기능들을 결정하는데, 이러한 결정은 관련된 신호 프로세싱 기능을 실행할지 여부를 결정하기 위해서 프로세싱 제어 레지스터(124)를 점검하기 위한 명령들을 실행함으로써 이루어진다. 더 구체적으로 살펴보면, 각각의 신호 프로세싱 기능이 실행돼야 하는지 여부를 결정하기 위해서, 라인들 C0, C1, C2, C3, C4, C5, C6, C7, 및 C8 상에 저장된 명령들이 이러한 순서로 실행된다. 예를 들어, 비록 (프로세싱 제어 레지스터(124)에서 표시된 바와 같이) 신호 프로세싱 기능 g1이 실행돼야 하는 것이 아닐지라도, 신호 프로세싱 기능 g1에 대한 표시자에 대해 프로세싱 제어 레지스터(124)를 고려하기 위해 라인 C1이 실행된다. 도 3의 예에서, 샘플 x[n]에 대해, 신호 프로세싱 기능 g1이 실행될 신호 프로세싱 기능인 지를 라인 C1의 실행을 통해 점검하는 것(그리고 g1 실행될 신호 프로세싱 기능이 아니라고 결정하는 것) 이후, 그 다음으로 제어 모듈(108)은 라인 C2를 실행하고, 이것은 신호 프로세싱 기능 f1이 실행될 신호 프로세싱 기능인지를 프로세싱 제어 레지스터(124) 내의 신호 프로세싱 기능 f1의 표시자를 통해 점검한다. 일반적으로 말하면, 신호 프로세싱 기능이, 실행될 신호 프로세싱 기능이 아닌 경우, 제어 모듈(108)은 PC(120)를 (프로세싱 제어 레지스터(124)를 점검하기 위한 명령이 저장되어 있는) 라인들 중 다음 라인으로 업데이트한다. 신호 프로세싱 기능이, 실행될 신호 프로세싱 기능인 경우, 제어 모듈(108)은 PC(120)가 증분됨에 따라 그 신호 프로세싱 기능을 실행한다.
도 3의 예에서, 신호 프로세싱 기능 f2는 신호 프로세싱 기능들 중 실행될 다음 신호 프로세싱 기능이다. 그 다음에, 신호 프로세싱 기능 f2는 PC(120)가 증분됨에 따라 한 라인씩 실행된다.
신호 프로세싱 기능 g2를 실행할지 여부에 대해 프로세싱 제어 레지스터(124)를 점검하기 위한 명령은 펌웨어(112)의 라인 C3 상에 저장된다. 이러한 예에서, 신호 프로세싱 기능 g2는 또한 실행되지 않을 신호 프로세싱 기능이다. 따라서, 제어 모듈(108)은 PC(120)를 라인 C4로 업데이트하여 신호 프로세싱 기능 f3이 실행될 신호 프로세싱 기능인지 여부를 점검하게 된다. 이러한 예에서, 신호 프로세싱 기능 f3은 실행될 신호 프로세싱 기능이다. 이에 따라, 제어 모듈(108)은 PC(120)가 증분됨에 따라 신호 프로세싱 기능 f3을 한 라인씩 실행한다.
이러한 프로세스는 펌웨어(112)의 끝에 도달할 때까지 계속되는데, 이러한 시점에서, 제어 모듈(108)은 디지털 입력 샘플 X[n]에 관한 신호 프로세싱 기능들 중 활성화된 신호 프로세싱 기능들을 수행했을 것이고, 신호 프로세싱 기능들 중 비활성화된 신호 프로세싱 기능들은 스킵했을 것이고, 그리고 대응하는 출력을 발생시켰을 것이다. 펌웨어(112)의 실행은, 다음 디지털 입력 샘플 X[n+1]이 수신되는 경우, 다시 시작할 것이다. 도 4는 신호 프로세싱 기능들 f1, g1, 및 f2가 실행되고, 신호 프로세싱 기능들 g2, f3, g3, f4, 및 g4가 실행되지 않는 예에 대한 타이밍도를 포함한다.
만약 PC(120)가 계수되고 있는 시간 전체 걸쳐 전체 PRAM(116)에 전력이 공급된다면 전력은 불필요하게 소비될 수 있다. 예를 들어, 신호 프로세싱 기능들 모두보다 적은 수의 신호 프로세싱 기능들이 수행될 신호 프로세싱 기능들인 경우, 만약 PC(120)가 실행되고 있는 시간 전체에 걸쳐 PRAM(116)에 전력이 "공급"된다면, 불필요한 전력 소비가 일어날 수 있다. 또한, 임의의 주어진 시간에 신호 프로세싱 기능들 중 단지 하나의 신호 프로세싱 기능만이 실행됨에 따라, 펌웨어(112)는 한 라인씩 실행되기 때문에, 사용되고 있지 않은 PRAM(116)의 일부분들에 전력을 공급하기 위해 불필요한 전력이 소비될 수 있다.
도 5는 신호 프로세싱 기능들 f1, g1, 및 f2가 실행되고, 신호 프로세싱 기능들 g2, f3, g3, f4, 및 g4가 실행되지 않는 예에 대한 타이밍도를 포함한다. 시간 t1과 t2 사이에서는, 신호 프로세싱 기능 f1과 관련된 펌웨어(112)의 단지 일부분만이 사용되고 있다. 만약 사용되고 있지 않은 PRAM(116)의 다른 부분들에 대한 전력이 시간 t1과 t2 사이에서 차단된다면 전력 소비는 감소될 수 있다. 추가적으로, 실행될 신호 프로세싱 기능들 모두는 시간 t1과 t3 사이에서 실행된다. 다음 디지털 입력 샘플이 수신될 때까지 메모리에 대한 전력을 차단함으로써 전력 소비가 감소될 수 있다.
도 6은 디지털 신호 프로세싱 시스템의 또 하나의 다른 기능적 블록도를 포함한다. PRAM(116)은 개별적으로 전력을 공급받는 복수의 메모리 블록들(예를 들어, 메모리 블록들(204, 208, 212, 216, 및 220))로 분할된다. 메모리 블록들은 또한 메모리 아일랜드(memory island)들로서 지칭될 수 있다. 5개의 메모리 블록들을 포함하는 PRAM(116)의 예가 제공되고 설명될 것이지만, PRAM(116)은 둘 이상의 메모리 블록들을 포함할 수 있다. 메모리 블록들(204, 208, 212, 216, 및 220)은 동일한 (저장) 크기를 가질 수 있거나 혹은 상이한 크기들을 가질 수 있다.
신호 프로세싱 기능들은 범주화(categorize)되며, 신호 프로세싱 기능들의 하나 이상의 범주(category)들이 각각의 메모리 블록에 저장될 수 있다. 메모리 블록의 크기보다 더 큰 신호 프로세싱 기능들은 둘 이상의 상이한 메모리 블록들에 저장될 수 있다. 하나의 범주는 언제나 실행돼야만 하는 필수적인 신호 프로세싱 기능(mandatory signal processing function)들을 포함한다. 다른 신호 프로세싱 기능들은 실행될 수도 있고 실행되지 않을 수도 있는 선택적인 신호 프로세싱 기능(optional signal processing function)들이다. 선택적인 신호 프로세싱 기능들은 함께 범주화되고, 메모리 블록들 중 하나 이상의 메모리 블록에 저장된다. 선택적인 신호 프로세싱 기능들은, 다른 모든 신호 프로세싱 기능들과 독립적으로 수행될 수 있는 선택적인 신호 프로세싱 기능들과, 그리고 실행시 하나 이상의 다른 선택적인 신호 프로세싱 기능들과 함께 실행되는 선택적인 신호 프로세싱 기능들을 포함한다.
스위칭 디바이스들(224, 228, 232, 236, 및 240)은 메모리 블록들(204, 208, 212, 216, 및 220)을 전력 공급기에 연결하는 것과 전력 공급기로부터 분리하는 것을 각각 제어한다. 이러한 방식으로, 메모리 블록들(204, 208, 212, 216, 및 220)은 메모리 블록들(204, 208, 212, 216, 및 220)의 각각의 다른 메모리 블록과 독립적으로 전력을 공급받을 수 있거나 전력이 차단될 수 있다. 스위칭 디바이스들(224, 228, 232, 236, 및 240)이 PRAM(116) 외부에 있는 것으로 제시되어 있지만, 스위칭 디바이스들(224, 228, 232, 236, 및 240)은 PRAM(116) 내부에 구현될 수 있다. 제어 모듈(108)은 메모리 블록들(204, 208, 212, 216, 및 220)에 대한 전력 공급을 제어하기 위해 스위칭 디바이스들(224, 228, 232, 236, 및 240)을 각각 제어한다.
메모리 블록들(204, 208, 212, 216, 및 220) 각각은 보유 능력(retention capability)을 갖는다. 이에 따라, 전력이 차단될 때, 메모리 블록들(204, 208, 212, 216, 및 220)은 자신들의 내용물(content)을 보존한다. 제어 모듈(108)은 메모리 블록 내에 저장된 신호 프로세싱 기능이 실행되고 있을 때만 혹은 실행되기 직전 임의의 기간(period) 동안만 메모리 블록들(204, 208, 212, 216, 및 220)에 전력을 공급한다. 디폴트(default)로서, 메모리 블록들(204, 208, 212, 216, 및 220) 모두에 대한 전력은 차단될 수 있다.
다음은 앞에서 제공된 신호 프로세싱 기능들의 실행의 예시적 순서(즉, f1, g1, f2, g2, f3, g3, f4, 그리고 그 다음에 g4)와 관련하여 설명될 것이다. 펌웨어는 메모리 블록들(204, 208, 212, 216, 및 220)이 다음과 같은 예시적 순서, 메모리 블록(204), 메모리 블록(208), 메모리 블록(212), 메모리 블록(216), 그 다음에 메모리 블록(220) 순으로 어드레싱(addressing)되도록 저장될 수 있다.
펌웨어(112)의 상이한 부분들이 메모리 블록들(204, 208, 212, 216, 및 220)에 저장된다. 예를 들어, 펌웨어 부분들(244, 248, 252, 256, 및 260)이 도 6에서 예시된다. 하나 이상의 필수적인 신호 프로세싱 기능들이 펌웨어(112) 내에서 첫 번째로 저장되는데, 예를 들어, 라인 0에서 시작하며, 이것은 앞에서 제공된 예시적 순서에서 메모리 블록(204) 내에 존재한다. 도 6의 예에서, 신호 프로세싱 기능들 f1 및 g1이 필수적인 신호 프로세싱 기능들이고, 메모리 블록(204) 내의 펌웨어 부분(244)에 저장된다.
신호 프로세싱 기능 f2는 메모리 블록(208) 내의 펌웨어 부분(248)에 저장된다. 신호 프로세싱 기능들 g2, f3, 및 g3은 활성화시 함께 실행되는 선택적인 신호 프로세싱 기능들이고, 메모리 블록(212) 내의 펌웨어 부분(252)에 저장된다. 신호 프로세싱 기능들 f4 및 g4는 활성화시 독립적으로 실행될 수 있는 선택적인 신호 프로세싱 기능들이고, 메모리 블록(216) 및 메모리 블록(220) 내의 펌웨어 부분(256) 및 펌웨어 부분(260)에 각각 저장된다.
제어 모듈(108)은 디지털 입력 샘플이 수신되는 경우 라인 0에 대응하는 신호 프로세싱 기능이 저장되어 있는 메모리 블록에 전력을 공급한다. 도 6의 예에서, 제어 모듈(108)은 디지털 입력 샘플이 수신되는 경우 필수적인 신호 프로세싱 기능들 f1 및 g1이 저장되어 있는 메모리 블록(204)에 전력을 공급한다. 그 다음에 제어 모듈(108)은 앞에서 설명된 바와 같이 PC(120)가 증분됨에 따라 필수적인 신호 프로세싱 기능들 f1 및 g1을 포함하는 펌웨어 부분(244)을 한 라인씩 실행한다.
펌웨어 부분들 각각은 신호 프로세싱 기능들 중 실행될 다음 신호 프로세싱 기능을 결정하기 위해서 프로세싱 제어 레지스터(124)를 점검하기 위한 명령을 포함한다. 이러한 명령들/커맨드들은 펌웨어 부분들의 각각의 마지막 라인들에 있다. 예를 들어, 이러한 명령들/커맨드들은 도 6에서, 메모리 블록들(204, 208, 212, 216, 및 220) 내의 섹션(section)들(264, 268, 272, 276, 및 280)에 의해 각각 예시되어 있다.
섹션들 각각은 또한 메모리 블록 내에 저장된 펌웨어가 실행될 수 있기 전에 전력을 공급받을 이후의 메모리 블록들에 대해 필요한 기간들의 표시자들을 포함한다. 예를 들어, 섹션(264)은 펌웨어 부분들(248, 252, 256, 및 260)이 각각 실행될 수 있기 전에 전력을 공급받을 메모리 블록들(208, 212, 216, 및 220)에 대해 필요한 기간들의 표시자들을 포함한다. 섹션(268)은 펌웨어 부분들(252, 256, 및 260)이 각각 실행될 수 있기 전에 전력을 공급받을 메모리 블록들(212, 216, 및 220)에 대해 필요한 기간들의 표시자들을 포함한다. 예를 들어, 섹션들은 각각의 기간들에 대응하는 다수의 버퍼 싸이클 펌웨어 라인(buffer cycle firmware line)들을 포함할 수 있다.
메모리 블록의 내용물이 실행될 수 있기 전에 전력을 공급받을 메모리 블록에 대한 기간은 그 메모리 블록의 깨우기 기간(wake up period)으로서 지칭될 수 있다. 메모리 블록들의 깨우기 기간들은 서로 동일할 수 있거나 다를 수 있다. 예를 들어, 서로 다른 크기들을 갖는 메모리 블록들이 사용되는 경우, 깨우기 기간들은 서로 다를 수 있다.
제어 모듈(108)은, PC(120)를 신호 프로세싱 기능들 중 실행될 다음 신호 프로세싱 기능의 제 1 라인으로 설정하고, 그 신호 프로세싱 기능이 저장되어 있는 메모리 블록들(208, 212, 216, 및 220) 중 하나의 메모리 블록에 전력을 공급하고, 그리고 그 메모리 블록의 깨우기 기간 동안 PC(120)를 그 값에서 유지한다. PC(120)를 유지하는 것은 PC(120)의 값을 지속시키는 것 그리고 PC(120)가 증분되는 것을 멈추게 하는 것을 의미할 수 있다. 제어 모듈(108)은 메모리 블록에 전력을 공급하는데, 이것은 그 메모리 블록과 관련된 스위칭 디바이스를 폐쇄(closing)함으로써 이루어진다. 제어 모듈(108)은, 다음 메모리 블록의 깨우기 기간이 경과된 이후에, 이전에 전력을 공급받던 메모리 블록에 대한 전력을 차단한다.
도 7은 도 6의 예와 함께 앞서 설명된 바와 같은 8개의 신호 프로세싱 기능들 f1 내지 f4 및 g1 내지 g4를 포함하는 펌웨어에 대한 예시적인 데이터 구조를 예시한 것을 포함한다. 앞에서 설명된 바와 같이, 어떤 신호 프로세싱 기능들이 실행될 신호 프로세싱 기능인지를 결정하기 위해서 프로세싱 제어 레지스터(124)를 점검하기 위한 커맨드들은 각각의 펌웨어 부분의 끝에 포함된다.
도 8은, 신호 프로세싱 기능들 f1, g1, 및 f2가 실행되고, 신호 프로세싱 기능들 g2, f3, g3, f4, 및 g4가 실행되지 않는 예시적인 경우에 대해 도 6의 사례의 동작을 예시하는 타이밍도를 포함한다. 도 8은 또한 펌웨어 부분들 각각의 사용가능성/전력 상태들을 표시한다. 예를 들어, 도 8에서 FW1 전력은, 메모리 블록(204)이 적어도 그 깨우기 기간에 대해 전력을 공급받았는지 여부를 표시한다(이에 따라 펌웨어 부분(244)이 실행될 수 있게 됨(온(ON) 상태) 혹은 실행될 수 없게 됨(오프(OFF) 상태)을 표시함). 도 8에서 FW2 전력은, 메모리 블록(208)이 적어도 그 깨우기 기간에 대해 전력을 공급받았는지 여부를 표시하고(이에 따라 펌웨어 부분(248)이 실행될 수 있게 됨(온 상태) 혹은 실행될 수 없게 됨(오프 상태)을 표시함), 그리고 기타 등등이다.
디지털 입력 샘플 X[n]이 시간 t1에서 수신되고, 제어 모듈(108)이 PC(120)를 제로(0)로 재설정한다. 메모리 블록(204)은 (이러한 예에서 실행될 신호 프로세싱 기능들인) 필수적인 신호 프로세싱 기능들 f1 및 g1을 포함한다. 따라서, 메모리 블록(204)은 시간 t1에서 전력을 공급받는데, 이것은 도 8에서 FW1 전력이 공급 상태(온(ON) 상태)인 것으로 표시되는 바와 같다. 다른 메모리 블록들 모두는 전력 소비를 최소화시키기 위해 전력이 차단된다.
신호 프로세싱 기능 f1은 펌웨어 라인 0 내지 라인 C1을 점유하고, 신호 프로세싱 기능 g1은 펌웨어 라인 C1+1 내지 라인 C2-1을 점유한다. 실행될 다음 신호 프로세싱 기능을 결정하기 위해서 프로세싱 제어 레지스터(124)를 점검하기 위한 메모리 블록(204)의 커맨드는 펌웨어 라인 C2를 점유한다. 이러한 예에서, 신호 프로세싱 기능들 f1 및 g1은 실행될 신호 프로세싱 기능들이기 때문에, 제어 모듈(108)은 PC(120)가 증분됨에 따라 라인 0 내지 라인 C2를 한 라인씩 실행한다.
라인 C2에서, 제어 모듈(108)은 실행될 다음 신호 프로세싱 기능을 결정하기 위해서 프로세싱 제어 레지스터(124)를 점검한다. 이러한 예에서, 신호 프로세싱 기능 f2가 실행될 다음 신호 프로세싱 기능이다. 신호 프로세싱 기능 f2가 메모리 블록(208)에 저장되어 있기 때문에, 제어 모듈(108)은 시간 t2에서 스위칭 디바이스(228)를 폐쇄함으로써 메모리 블록(208)에 전력을 공급한다. 메모리 블록(208)에 대한 깨우기 기간은 시간 t2와 시간 t3 사이의 기간에 대응한다. 제어 모듈(108)은 (메모리 블록(208) 내의 펌웨어가 실행될 수 있는 때인) 시간 t3까지 PC(120)를 라인 C2에서 유지한다.
시간 t3에서, 메모리 블록(208)은 그 깨우기 기간에 대해 전력을 공급받게 되고(도 8에서 FW2 전력이 시간 t3에서 오프(OFF) 상태(전력 차단 상태)로부터 온(ON) 상태(전력 공급 상태)로 전이하는 것으로 표시된 바와 같음), 따라서 펌웨어 부분(248)이 실행될 수 있게 된다. 제어 모듈(108)은 시간 t3에서 메모리 블록(204)에 대한 전력을 차단하고, 다른 메모리 블록들 모두는 전력이 차단된 상태로 유지된다.
신호 프로세싱 기능 f2는 펌웨어 라인 C2+1 내지 라인 C3-1을 점유한다. 실행될 다음 신호 프로세싱 기능을 결정하기 위해서 프로세싱 제어 레지스터(124)를 점검하기 위한 메모리 블록(208)의 커맨드는 펌웨어 라인 C3을 점유한다. 제어 모듈(108)은 PC(120)가 증분됨에 따라 라인 C2+1 내지 라인 C3을 한 라인씩 실행한다.
라인 C3에서, 다시 제어 모듈(108)은 실행될 다음 신호 프로세싱 기능을 결정하기 위해서 프로세싱 제어 레지스터(124)를 점검한다. 이러한 예에서는, 디지털 입력 샘플 X[n]에 관해 실행될 다른 어떤 신호 프로세싱 기능들도 존재하지 않는다. 이에 따라, 제어 모듈(108)은, 실행될 다음 신호 프로세싱 기능이 메모리 블록(204)에 저장되어 있는 신호 프로세싱 기능 f1이라고 결정한다. 따라서, 제어 모듈(108)은 시간 t4에서 메모리 블록(208)에 대한 전력을 차단한다. 제어 모듈(108)은 스위칭 디바이스(228)를 개방(opening)함으로써 메모리 블록(208)에 대한 전력을 차단한다.
제어 모듈(108)은 시간 t5까지 메모리 블록들(204, 208, 212, 216, 및 220) 모두를 전력이 차단된 상태로 유지한다. 다음 디지털 입력 샘플 X[n+1]이 시간 t6에서 수신된다. 시간 t5와 시간 t6 사이의 기간은 (실행될 다음 신호 프로세싱 기능(f1)이 저장되어 있는) 메모리 블록(204)에 대한 깨우기 기간에 대응한다. 실행될 다음 신호 프로세싱 기능이 메모리 블록(204)에 저장되어 있기 때문에, 제어 모듈(108)은 시간 t5에서 스위칭 디바이스(224)를 폐쇄함으로써 메모리 블록(204)에 전력을 공급한다. 따라서, 메모리 블록(204)은 시간 t6에서 그 깨우기 기간에 대해 전력을 공급받게 되고, 실행될 다음 신호 프로세싱 기능, 즉 이러한 예에서는 다음 디지털 입력 샘플 X[n+1]에 관한 신호 프로세싱 기능 f1은 시간 t6에서 시작하여 실행될 수 있다. 이러한 프로세스는, 만약 프로세싱 제어 레지스터(124)가 예컨대 사용자에 의해 조정되지 않는다면, 각각의 디지털 입력 샘플에 대해 계속된다.
도 9는, 신호 프로세싱 기능들 f1, g1, f2, 및 f4가 실행되고, 신호 프로세싱 기능들 g2, f3, g3, 및 g4가 실행되지 않는 예시적인 경우에 대한 타이밍도를 포함한다. 디지털 입력 샘플 X[n]이 시간 t1에서 수신되고, 이에 따라 제어 모듈(108)이 PC(120)를 0으로 재설정한다. 도 8의 사례와 연계되어 앞서 설명된 바와 같이 라인 0 내지 라인 C3이 실행된다.
라인 C3에서, 제어 모듈(108)은 실행될 다음 신호 프로세싱 기능을 결정하기 위해서 프로세싱 제어 레지스터(124)를 점검한다. 이러한 예에서, 신호 프로세싱 기능 f4가 디지털 입력 샘플 X[n]에 관해 실행될 다음 신호 프로세싱 기능이다. 신호 프로세싱 기능 f4가 메모리 블록(216)에 저장되어 있기 때문에, 제어 모듈(108)은 시간 t4에서 스위칭 디바이스(236)를 폐쇄함으로써 메모리 블록(216)에 전력을 공급한다. 메모리 블록(216)에 대한 깨우기 기간은 시간 t4와 시간 t5 사이의 기간에 대응한다. 제어 모듈(108)은 (메모리 블록(216) 내의 펌웨어가 실행될 수 있는 때인) 시간 t5까지 PC(120)를 라인 C3에서 유지한다.
시간 t5에서, 메모리 블록(216)은 그 깨우기 기간에 대해 전력을 공급받게 되고(도 9에서 FW4 전력이 시간 t5에서 오프(OFF) 상태(전력 차단 상태)로부터 온(ON) 상태(전력 공급 상태)로 전이하는 것으로 표시된 바와 같음), 따라서 펌웨어 부분(256)이 실행될 수 있게 된다. 제어 모듈(108)은 시간 t5에서 메모리 블록(204)에 대한 전력을 차단하고, 다른 메모리 블록들 모두는 전력이 차단된 상태로 유지된다.
신호 프로세싱 기능 f4는 펌웨어 라인 C6+1 내지 라인 C7-1을 점유한다. 실행될 다음 신호 프로세싱 기능을 결정하기 위해서 프로세싱 제어 레지스터(124)를 점검하기 위한 메모리 블록(216)의 커맨드는 펌웨어 라인 C7을 점유한다. 제어 모듈(108)은 PC(120)가 증분됨에 따라 라인 C6+1 내지 라인 C7을 한 라인씩 실행한다.
라인 C7에서, 다시 제어 모듈(108)은 실행될 다음 신호 프로세싱 기능을 결정하기 위해서 프로세싱 제어 레지스터(124)를 점검한다. 이러한 예에서는, 디지털 입력 샘플 X[n]에 관해 실행될 다른 어떤 신호 프로세싱 기능들도 존재하지 않는다. 이에 따라, 제어 모듈(108)은, 실행될 다음 신호 프로세싱 기능이 메모리 블록(204)에 저장되어 있는 다음 디지털 입력 샘플 X[n+1]에 관한 신호 프로세싱 기능 f1이라고 결정한다. 따라서, 제어 모듈(108)은 라인 C7에서 메모리 블록(216)에 대한 전력을 차단한다. 제어 모듈(108)은 스위칭 디바이스(236)를 개방함으로써 메모리 블록(216)에 대한 전력을 차단한다.
제어 모듈(108)은 시간 t6까지 메모리 블록들(204, 208, 212, 216, 및 220) 모두를 전력이 차단된 상태로 유지한다. 다음 디지털 입력 샘플 X[n+1]이 시간 t7에서 수신된다. 시간 t6과 시간 t7 사이의 기간은 (실행될 다음 신호 프로세싱 기능이 저장되어 있는) 메모리 블록(204)에 대한 깨우기 기간에 대응한다. 실행될 다음 신호 프로세싱 기능이 메모리 블록(204)에 저장되어 있기 때문에, 제어 모듈(108)은 시간 t6에서 스위칭 디바이스(224)를 폐쇄함으로써 메모리 블록(204)에 전력을 공급한다. 따라서, 메모리 블록(204)은 시간 t7에서 그 깨우기 기간에 대해 전력을 공급받게 되고, 실행될 다음 신호 프로세싱 기능, 즉 이러한 예에서는 신호 프로세싱 기능 f1이 시간 t7에서 시작하여 실행될 수 있다. 이러한 프로세스는, 만약 프로세싱 제어 레지스터(124)가 예컨대 사용자에 의해 조정되지 않는다면, 각각의 디지털 입력 샘플에 대해 계속된다.
도 10은 메모리 블록들에 전력을 공급 및 차단하는 예시적인 방법을 포함하는 흐름도이다. 제어는 단계(304)에서 시작하는데, 여기서 제어 모듈(108)은 각각의 수신된 디지털 샘플에 대해 실행될 제 1 신호 프로세싱 기능이 저장되어 있는 제 1 메모리 블록에 전력을 공급한다. 예를 들어, 제어 모듈(108)은 도 6의 예에서 메모리 블록(204)에 전력을 공급한다. 단계(304)에서, 다른 메모리 블록들 모두는 전력이 차단된 상태로 유지될 수 있다. 제어 모듈(108)은 예를 들어, PC(120)가 임의의 미리결정된 값에 도달하는 경우, 제 1 메모리 블록에 전력을 공급할 수 있다. PC(120)가 그 미리결정된 값과 동일하게 되는 시간과 다음 디지털 입력 샘플이 수신되는 시간 간의 기간은 제 1 메모리 블록의 깨우기 기간보다 더 크거나 같을 수 있다.
단계(312)에서는, 디지털 입력 샘플이 수신되는 경우, 제어 모듈(108)은 PC(120)를 제로(0)와 같도록 설정하고 PC(120)가 증분될 수 있게 한다. PC(120)는 클럭 신호에 근거하여 증분된다. 단계(316)에서, 제어 모듈(108)은 PC(120)가 증분됨에 따라 제 1 메모리 블록에 저장된 하나 이상의 신호 프로세싱 기능들을 한 라인씩 실행한다. 단계(320)에서, 제어 모듈(108)은 (단계(308)에서 수신된) 디지털 입력 샘플에 대해 실행될 하나 이상의 신호 프로세싱 기능들이 여전히 존재하는지 여부를 결정한다. 제어 모듈(108)은 실행될 하나 이상의 신호 프로세싱 기능들이 여전히 존재하는지 여부를 프로세싱 제어 레지스터(124)를 사용하여 결정한다. 만약 단계(320)가 참(true)이라면, 제어는 단계(324)에서 계속된다. 만약 단계(320)가 거짓(false)이라면, 제어는 끝날 수 있다. 도 10에서는 끝나는 것으로서 제시되어 있지만, 제어는 다음 디지털 입력 샘플을 위해 단계(304)로 되돌아 갈 수 있다.
단계(324)에서, 제어 모듈(108)은 실행될 다음 신호 프로세싱 기능을 프로세싱 제어 레지스터(124)를 사용하여 결정한다. 단계(328)에서, 제어 모듈(108)은 그 신호 프로세싱 기능이 저장되어 있는 메모리 블록에 전력을 공급한다. 여기서 해당 메모리 블록은 이전에는 전력이 차단되어 있었지만 다음 신호 프로세싱 기능이 실행되기 전에 그 깨우기 기간에 대해 전력이 공급된다. 제어 모듈(108)은 단계(328)에서 PC(120)를 유지한다.
단계(332)에서는, 깨우기 기간이 경과된 경우, 제어 모듈(108)이 PC(120)를 실행될 다음 신호 프로세싱 기능의 제 1 라인에 대응하는 값으로 설정한다. 제어 모듈(108)은 단계(332)에서 또한 PC(120)가 증분될 수 있게 하고, 전력이 공급되던 마지막 메모리 블록에 대한 전력을 차단한다. 단계(332)에 직면하게 되는 제 1 시간에, 예를 들어, 제어 모듈(108)은 제 1 메모리 블록에 대한 전력을 차단한다. 단계(336)에서, 제어 모듈(108)은 PC(120)에 따라 다음 신호 프로세싱 기능을 한 라인씩 실행한다. 그 다음에 제어는 단계(320)로 되돌아 갈 수 있다. 메모리 블록들에 전력을 공급하는 것이 그 안에 저장되어 있는 신호 프로세싱 기능의 실행을 위해 필요한 경우에만 이루어져 전력 소비를 감소시킨다.
앞서의 설명은 본질적으로 단지 예시적인 것이며 본 개시내용과 그 응용 혹은 용도를 제한할 의도를 전혀 갖고 있지 않다. 본 개시내용의 광범위한 가르침은 다양한 형태로 구현될 수 있다. 따라서, 본 개시내용이 특정 예들을 포함하고 있지만, 도면, 명세서 및 다음의 청구범위를 연구함으로써 다른 수정들이 가능함이 명백해지기 때문에, 본 개시내용의 진정한 범위가 이러한 예들로만 한정돼서는 안 된다. 본 명세서에서 사용되는 바와 같은, 문구 "A, B 및 C 중 적어도 하나"의 의미는, 비-배타적 논리 연산자인 OR를 사용하는 논리연산 (A OR B OR C)를 의미하는 것으로 해석돼야 하며, "적어도 하나의 A, 적어도 하나의 B, 그리고 적어도 하나의 C"를 의미하는 것으로 해석돼서는 안 된다. 본 발명의 방법 내에서의 하나 이상의 단계들은 본 개시내용의 원리를 변경시킴 없이 서로 다른 순서로(혹은 동시에) 실행될 수 있음을 이해해야 한다.
아래의 정의들을 포함하는 본 명세서에서, 용어 "모듈" 혹은 용어 "제어기"는 용어 "회로"로 대체될 수 있다. 용어 "모듈"은, 예컨대 시스템-온-칩(system-on-chip)에서와 같은, 애플리케이션 특정 집적 회로(Application Specific Integrated Circuit, ASIC); 디지털, 아날로그, 혹은 아날로그/디지털 혼합형 이산 회로; 디지털, 아날로그, 혹은 아날로그/디지털 혼합형 집적 회로; 조합형 로직 회로; 현장 프로그래밍가능 게이트 어레이(Field Programmable Gate Array, FPGA); 코드를 실행하는 (공유된 혹은 전용의 혹은 그룹) 프로세서 회로; 프로세서 회로에 의해 실행되는 코드를 저장하는 (공유된 혹은 전용의 혹은 그룹) 메모리 회로; 설명된 기능을 제공하는 다른 적절한 하드웨어 컴포넌트들; 또는 앞서의 것들의 일부 혹은 모두의 임의의 조합을 지칭할 수 있거나, 이들의 일부일 수 있거나, 혹은 이들을 포함할 수 있다.
모듈은 하나 이상의 인터페이스 회로들을 포함할 수 있다. 일부 예들에서, 인터페이스 회로들은 로컬 영역 네트위크(Local Area Network, LAN), 인터넷, 와이드 영역 네트위크(Wide Area Network, WAN), 혹은 이들의 조합들에 연결되는 유선 또는 무선 인터페이스들을 포함할 수 있다. 본 개시내용의 임의의 주어진 모듈의 기능은 인터페이스 회로들을 통해 연결되는 복수의 모듈들 간에 분산될 수 있다. 예를 들어, 복수의 모듈들은 로드 발란싱(load balancing)을 허용할 수 있다. 다른 예에서, 서버(이것은 또한 원격 혹은 클라우드(cloud)로서 알려져 있음) 모듈은 클라이언트 모듈을 위한 일부 기능을 달성할 수 있다.
앞에서 사용된 바와 같은 용어 "코드"는 소프트웨어, 펌웨어 및/또는 마이크로코드(microcode)를 포함할 수 있고, 프로그램들, 루틴들(routines), 함수들(functions), 클래스들(classes), 데이터 구조들 및/또는 오브젝트들(objects)을 지칭할 수 있다. 용어 "공유된 프로세스 회로"는 복수의 모듈들로부터의 일부 혹은 모든 코드를 실행하는 단일 프로세서 회로를 포괄한다. 용어 "그룹 프로세서 회로"는 하나 이상의 모듈들로부터의 일부 혹은 모든 코드를 추가적인 프로세서 회로들과 함께 실행하는 프로세서 회로를 포괄한다. 복수의 프로세서 회로들로 지칭되는 것은, 개별 다이들 상의 복수의 프로세서 회로들, 단일 다이 상의 복수의 프로세서 회로들, 단일 프로세서 회로의 복수의 코어들(cores), 단일 프로세서 회로의 복수의 쓰레드들(threads), 혹은 앞서의 것들의 임의의 조합을 포괄한다. 용어 "공유된 메모리 회로"는 복수의 모듈들로부터의 일부 혹은 모든 코드를 저장하는 단일 메모리 회로를 포괄한다. 용어 "그룹 메모리 회로"는 하나 이상의 모듈들로부터의 일부 혹은 모든 코드를 추가적인 메모리들과 함께 저장하는 메모리 회로를 포괄한다.
용어 "메모리 회로"는 용어 "컴퓨터-판독가능 매체"의 서브세트이다. 본 명세서에서 사용되는 바와 같은 용어 "컴퓨터-판독가능 매체"는 임의의 매체를 통해서 (예컨대, 반송파를 통해) 전파되는 일시적인 전기적 혹은 전자기적 신호들을 포괄하지 않으며, 따라서, 용어 "컴퓨터-판독가능 매체"는 형태가 있는 유형의 일시적이지 않은 것으로 고려될 수 있다. 비-일시적인 유형의 컴퓨터-판독가능 매체의 비-한정적 예들은, 비휘발성 메모리 회로들(예컨대, 플래시 메모리 회로, 소거가능하고 프로그래밍가능한 판독-전용 메모리 회로, 혹은 마스크 판독-전용 메모리 회로), 휘발성 메모리 회로들(예컨대, 정적 랜덤 액세스 메모리 회로 혹은 동적 랜덤 액세스 메모리 회로), 자기적 스토리지 매체들(예컨대, 아날로그 혹은 디지털 자기 테이프 또는 하드 디스크 드라이브), 그리고 광학적 저장 매체들(예컨대, CD, DVD, 혹은 블루-레이 디스크)이다.
본 명세서에서 설명되는 장치들 및 방법들은, 컴퓨터 프로그램들로 구현되는 하나 이상의 특정 기능들을 실행하도록 범용 컴퓨터를 구성함으로써 생성되는 특수 목적 컴퓨터에 의해 부분적으로 혹은 전체적으로 구현될 수 있다. 앞서 설명된 기능적 블록들 및 흐름도 컴포넌트들, 및 다른 요소들은 소프트웨어 사양들로서의 역할을 하며, 이것은 숙련된 기술자 혹은 프로그래머의 일상적 작업에 의해 컴퓨터 프로그램들로 변환될 수 있다.
컴퓨터 프로그램들은 적어도 하나의 비-일시적인 유형의 컴퓨터-판독가능 매체 상에 저장되는 프로세서-실행가능 명령들을 포함한다. 컴퓨터 프로그램들은 또한 저장된 데이터를 포함할 수 있거나 저장된 데이터에 의존할 수 있다. 컴퓨터 프로그램들은, 특수 목적 컴퓨터의 하드웨어와 상호작용하는 기본 입력/출력 시스템(Basic Input/Output System, BIOS), 특수 목적 컴퓨터의 특정 디바이스들과 상호작용하는 디바이스 드라이버들, 하나 이상의 오퍼레이팅 시스템들, 사용자 애플리케이션들, 백그라운드 서비스들, 백그라운드 애플리케이션들, 등을 포괄할 수 있다.
컴퓨터 프로그램들은, (ⅰ) HTML(HyperText Markup Language) 혹은 XML(eXtensible Markup Language)과 같은 파싱(parsing)될 서술적 텍스트(descriptive text), (ⅱ) 어셈블리 코드(assembly code), (ⅲ) 컴파일러에 의해 소스 코드로부터 발생되는 오브젝트 코드, (ⅳ) 인터프리터(interpreter)에 의한 실행을 위한 소스 코드, (ⅴ) 적시 컴파일러(just-in-time compiler)에 의한 컴파일링 및 실행을 위한 소스 코드 등을 포함할 수 있다. 단지 예시적인 것으로서, 소스 코드는, C, C++, C#, 오브젝티브 C(Objective C), 하스켈(Haskell), 고(Go), SQL, R, 리습(Lisp), 자바(Java®), 포트란(Fortran), 펄(Perl), 파스칼(Pascal), 컬(Curl), 오캐멀(OCaml), 자바스크립트(Javascript®), HTML5, 에이다(Ada), ASP(Active Server Pages), PHP, 스칼라(Scala), 에펠(Eiffel), 스몰토크(Smalltalk), 얼랭(Erlang), 루비(Ruby), 플래시(Flash®), 비주얼 베이직(Visual Basic®), 루아(Lua), 및 파이씬(Python®)을 포함하는 언어들로부터의 신택스(syntax)를 사용하여 기입될 수 있다.
청구항들에 기재되는 요소들 그 어떤 것도, 만약 임의의 요소가 어구 "~ 기능을 위한 수단"을 사용하여 명시적으로 기재되지 않는다면 또는 방법 청구항의 경우에는 어구들 "~ 기능을 위한 동작" 혹은 "~ 기능을 위한 단계"를 사용하여 명시적으로 기재되지 않는다면, 35 U.S.C. §112(f)의 의미 내에서 기능적 요소(means-plus-function element)가 되도록 의도된 것이 아니다.

Claims (20)

  1. 디지털 신호 프로세싱(Digital Signal Processing, DSP) 시스템으로서,
    아날로그 대 디지털 변환기(analog to digital converter)와;
    프로그램 무작위 액세스 메모리(Program Random Access Memory, PRAM)와;
    N개의 스위칭 디바이스(switching device)들과; 그리고
    제어 모듈(control module)을 포함하여 구성되며,
    상기 아날로그 대 디지털 변환기는 아날로그 신호(analog signal)의 샘플(sample)들을 디지털 샘플(digital sample)들로 변환(convert)하도록 되어 있고,
    상기 프로그램 무작위 액세스 메모리(PRAM)는,
    N개의 PRAM 블록(PRAM block)들과, 그리고
    상기 N개의 PRAM 블록들에 저장되는 M개의 디지털 신호 프로세싱 기능(digital signal processing function)들을 위한 코드(code)를 포함하고,
    여기서 상기 N은 1보다 큰 정수이고, 상기 M도 1보다 큰 정수이며,
    상기 M개의 디지털 신호 프로세싱 기능들 각각을 위한 코드의 마지막 라인(line)들은, (i) 상기 M개의 디지털 신호 프로세싱 기능들 중 실행될 다음 디지털 신호 프로세싱 기능을 결정하기 위한 명령 및 (ii) 상기 M개의 디지털 신호 프로세싱 기능들 중 상기 다음 디지털 신호 프로세싱 기능이 저장되어 있는 상기 N개의 PRAM 블록들 중 하나의 PRAM 블록의 깨우기 기간(wake up period)의 표시자(indicator)를 포함하고,
    상기 N개의 스위칭 디바이스들은, 상기 N개의 PRAM 블록들을 전력 소스(power source)에 연결하는 것 그리고 상기 전력 소스로부터 분리하는 것을 각각 수행하도록 되어 있고,
    상기 제어 모듈은,
    상기 N개의 스위칭 디바이스들을 제어하는 것과; 그리고
    출력을 생성하기 위해 상기 디지털 샘플들에 관해 상기 M개의 디지털 신호 프로세싱 기능들 중 선택된 디지털 신호 프로세싱 기능들을 상기 PRAM으로부터 판독하여 실행하는 것을
    수행하도록 되어 있고,
    상기 제어 모듈은,
    상기 N개의 스위칭 디바이스들 중 제 1 스위칭 디바이스를 선택적으로 작동(actuate)시켜 상기 N개의 PRAM 블록들 중 제 1 PRAM 블록을 상기 전력 소스에 연결하도록 하는 것과;
    상기 N개의 PRAM 블록들 중 상기 제 1 PRAM 블록에 저장된 상기 M개의 디지털 신호 프로세싱 기능들 중 제 1 디지털 신호 프로세싱 기능을 위한 코드의 제 1 부분을 실행하는 것과;
    상기 M개의 디지털 신호 프로세싱 기능들 중 상기 제 1 디지털 신호 프로세싱 기능을 위한 코드의 마지막 라인을 실행하는 것에 대한 응답으로, (i) 상기 M개의 디지털 신호 프로세싱 기능들 중 제 2 디지털 신호 프로세싱 기능이 상기 M개의 디지털 신호 프로세싱 기능들 중 상기 제 1 디지털 신호 프로세싱 기능 이후 다음에 실행될 것이라고 결정하는 것과, 그리고 (ii) 상기 M개의 디지털 신호 프로세싱 기능들 중 상기 제 2 디지털 신호 프로세싱 기능이 저장되어 있는 상기 N개의 PRAM 블록들 중 제 2 PRAM 블록의 깨우기 기간을 결정하는 것과;
    상기 M개의 디지털 신호 프로세싱 기능들 중 상기 제 1 디지털 신호 프로세싱 기능을 위한 코드의 마지막 라인의 실행 이후에, 상기 N개의 스위칭 디바이스들 중 상기 제 1 스위칭 디바이스를 작동시켜 상기 N개의 PRAM 블록들 중 상기 제 1 PRAM 블록을 상기 전력 소스로부터 분리하도록 하는 것과;
    상기 M개의 디지털 신호 프로세싱 기능들 중 상기 제 2 디지털 신호 프로세싱 기능이 상기 M개의 디지털 신호 프로세싱 기능들 중 상기 제 1 디지털 신호 프로세싱 기능 이후 다음에 실행될 것이라는 결정에 근거하여, 상기 N개의 스위칭 디바이스들 중 제 2 스위칭 디바이스를 선택적으로 작동시켜 상기 N개의 PRAM 블록들 중 상기 제 2 PRAM 블록을 상기 전력 소스에 연결하도록 하는 것과; 그리고
    상기 N개의 PRAM 블록들 중 상기 제 2 PRAM 블록을 상기 전력 소스에 연결하도록 하는 상기 N개의 스위칭 디바이스들 중 상기 제 2 스위칭 디바이스의 작동 이후 상기 N개의 PRAM 블록들 중 상기 제 2 PRAM 블록의 깨우기 기간의 경과에 대한 응답으로, 상기 M개의 디지털 신호 프로세싱 기능들 중 상기 제 2 디지털 신호 프로세싱 기능을 위한 코드의 제 2 부분을 실행하는 것을 시작하는 것을
    수행하도록 되어 있는 것을 특징으로 하는 DSP 시스템.
  2. 제1항에 있어서,
    상기 DSP 시스템은 또한, 상기 M개의 디지털 신호 프로세싱 기능들을 실행할지 혹은 실행하지 않을지에 관한 M개의 표시자들을 각각 저장하는 레지스터(register)를 포함하고,
    상기 제어 모듈은 상기 레지스터에 저장된 상기 M개의 표시자들에 근거하여 상기 M개의 디지털 신호 프로세싱 기능들 중 상기 선택된 디지털 신호 프로세싱 기능들을 선택하고 실행하도록 되어 있는 것을 특징으로 하는 DSP 시스템.
  3. 제2항에 있어서,
    상기 레지스터 내의 상기 M개의 표시자들 중 하나의 표시자가, 상기 M개의 디지털 신호 프로세싱 기능들 중 제 3 디지털 신호 프로세싱 기능의 실행이 비활성화(disable)됨을 표시하는 경우, 상기 제어 모듈은 상기 M개의 디지털 신호 프로세싱 기능들 중 상기 제 3 디지털 신호 프로세싱 기능을 저장하는 상기 N개의 PRAM 블록들 중 제 3 PRAM 블록을, 디지털 샘플의 시작과 상기 디지털 샘플의 끝 사이의 기간(period) 동안, 상기 전력 소스로부터 분리하도록 되어 있는 것을 특징으로 하는 DSP 시스템.
  4. 삭제
  5. 삭제
  6. 삭제
  7. 제1항에 있어서,
    상기 DSP 시스템은 또한, 클럭 신호(clock signal)에 근거하여 계수기 값(counter value)을 증분(increment)시키도록 되어 있는 계수기(counter)를 포함하고,
    상기 제어 모듈은 상기 계수기 값에 근거하여 상기 코드의 라인들을 실행하도록 되어 있는 것을 특징으로 하는 DSP 시스템.
  8. 제7항에 있어서,
    상기 제어 모듈은, 상기 N개의 PRAM 블록들 중 상기 제 2 PRAM 블록을 상기 전력 소스에 연결하도록 하는 상기 N개의 스위칭 디바이스들 중 상기 제 2 스위칭 디바이스의 작동 이후 상기 깨우기 기간 이후에, 상기 M개의 디지털 신호 프로세싱 기능들 중 상기 제 2 디지털 신호 프로세싱 기능을 위한 코드의 제 1 라인에 대응하는 코드의 라인 번호(line number)로 상기 계수기 값을 선택적으로 설정(set)하도록 되어 있는 것을 특징으로 하는 DSP 시스템.
  9. 제7항에 있어서,
    상기 제어 모듈은, 상기 N개의 PRAM 블록들 중 상기 제 2 PRAM 블록을 상기 전력 소스에 연결하도록 하는 상기 N개의 스위칭 디바이스들 중 상기 제 2 스위칭 디바이스의 작동 이후 상기 깨우기 기간 동안 상기 계수기 값을 유지하도록 되어 있는 것을 특징으로 하는 DSP 시스템.
  10. 제7항에 있어서,
    상기 제어 모듈은 디지털 샘플이 수신될 때마다 상기 계수기 값을 재설정(reset)하도록 되어 있는 것을 특징으로 하는 DSP 시스템.
  11. 디지털 신호 프로세싱(DSP) 시스템의 전력 소비를 감소시키기 위한 방법으로서, 상기 방법은,
    상기 DSP 시스템의 아날로그 대 디지털 변환기에 의해, 아날로그 신호의 샘플들을 디지털 샘플들로 변환하는 단계와;
    상기 DSP 시스템의 N개의 스위칭 디바이스들에 의해, N개의 프로그램 무작위 액세스 메모리(PRAM) 블록들을 전력 소스에 연결하는 것과 그리고 상기 전력 소스로부터 분리하는 것을 각각 선택적으로 수행하는 단계와, 여기서 상기 N개의 PRAM 블록들에는 M개의 디지털 신호 프로세싱 기능들을 위한 코드가 저장되고, 상기 N은 1보다 큰 정수이고, 상기 M도 1보다 큰 정수이며, 상기 M개의 디지털 신호 프로세싱 기능들 각각을 위한 코드의 마지막 라인들은, (i) 상기 M개의 디지털 신호 프로세싱 기능들 중 실행될 다음 디지털 신호 프로세싱 기능을 결정하기 위한 명령 및 (ii) 상기 M개의 디지털 신호 프로세싱 기능들 중 상기 다음 디지털 신호 프로세싱 기능이 저장되어 있는 상기 N개의 PRAM 블록들 중 하나의 PRAM 블록의 깨우기 기간의 표시자를 포함하고;
    상기 DSP 시스템의 제어 모듈에 의해, 상기 N개의 스위칭 디바이스들을 제어하는 단계와; 그리고
    상기 제어 모듈에 의해, 출력을 생성하기 위해 상기 디지털 샘플들에 관해 상기 M개의 디지털 신호 프로세싱 기능들 중 선택된 디지털 신호 프로세싱 기능들을 상기 PRAM으로부터 판독하여 실행하는 단계를 포함하고,
    상기 제어 모듈에 의한 상기 제어하는 단계 및 상기 판독하여 실행하는 단계는,
    상기 N개의 스위칭 디바이스들 중 제 1 스위칭 디바이스를 선택적으로 작동시켜 상기 N개의 PRAM 블록들 중 제 1 PRAM 블록을 상기 전력 소스에 연결하는 것과;
    상기 N개의 PRAM 블록들 중 상기 제 1 PRAM 블록에 저장된 상기 M개의 디지털 신호 프로세싱 기능들 중 제 1 디지털 신호 프로세싱 기능을 위한 코드의 제 1 부분을 실행하는 것과;
    상기 M개의 디지털 신호 프로세싱 기능들 중 상기 제 1 디지털 신호 프로세싱 기능을 위한 코드의 마지막 라인을 실행하는 것에 대한 응답으로, (i) 상기 M개의 디지털 신호 프로세싱 기능들 중 제 2 디지털 신호 프로세싱 기능이 상기 M개의 디지털 신호 프로세싱 기능들 중 상기 제 1 디지털 신호 프로세싱 기능 이후 다음에 실행될 것이라고 결정하는 것과, 그리고 (ii) 상기 M개의 디지털 신호 프로세싱 기능들 중 상기 제 2 디지털 신호 프로세싱 기능이 저장되어 있는 상기 N개의 PRAM 블록들 중 제 2 PRAM 블록의 깨우기 기간을 결정하는 것과;
    상기 M개의 디지털 신호 프로세싱 기능들 중 상기 제 1 디지털 신호 프로세싱 기능을 위한 코드의 마지막 라인의 실행 이후에, 상기 N개의 스위칭 디바이스들 중 상기 제 1 스위칭 디바이스를 작동시켜 상기 N개의 PRAM 블록들 중 상기 제 1 PRAM 블록을 상기 전력 소스로부터 분리하도록 하는 것과;
    상기 M개의 디지털 신호 프로세싱 기능들 중 상기 제 2 디지털 신호 프로세싱 기능이 상기 M개의 디지털 신호 프로세싱 기능들 중 상기 제 1 디지털 신호 프로세싱 기능 이후 다음에 실행될 것이라는 결정에 근거하여, 상기 N개의 스위칭 디바이스들 중 제 2 스위칭 디바이스를 선택적으로 작동시켜 상기 N개의 PRAM 블록들 중 상기 제 2 PRAM 블록을 상기 전력 소스에 연결하도록 하는 것과; 그리고
    상기 N개의 PRAM 블록들 중 상기 제 2 PRAM 블록을 상기 전력 소스에 연결하도록 하는 상기 N개의 스위칭 디바이스들 중 상기 제 2 스위칭 디바이스의 작동 이후 상기 N개의 PRAM 블록들 중 상기 제 2 PRAM 블록의 깨우기 기간의 경과에 대한 응답으로, 상기 M개의 디지털 신호 프로세싱 기능들 중 상기 제 2 디지털 신호 프로세싱 기능을 위한 코드의 제 2 부분을 실행하는 것을 시작하는 것을
    포함하는 것을 특징으로 하는 DSP 시스템의 전력 소비를 감소시키기 위한 방법.
  12. 제11항에 있어서,
    상기 DSP 시스템의 레지스터에 의해, 상기 M개의 디지털 신호 프로세싱 기능들을 실행할지 혹은 실행하지 않을지에 관한 M개의 표시자들을 각각 저장하는 단계와; 그리고
    상기 제어 모듈에 의해, 상기 레지스터에 저장된 상기 M개의 표시자들에 근거하여 상기 M개의 디지털 신호 프로세싱 기능들 중 상기 선택된 디지털 신호 프로세싱 기능들을 선택하고 실행하는 단계를 더 포함하는 것을 특징으로 하는 DSP 시스템의 전력 소비를 감소시키기 위한 방법.
  13. 제12항에 있어서,
    상기 레지스터 내의 상기 M개의 표시자들 중 하나의 표시자가, 상기 M개의 디지털 신호 프로세싱 기능들 중 제 3 디지털 신호 프로세싱 기능의 실행이 비활성화됨을 표시하는 경우, 상기 제어 모듈에 의해, 상기 M개의 디지털 신호 프로세싱 기능들 중 상기 제 3 디지털 신호 프로세싱 기능을 저장하는 상기 N개의 PRAM 블록들 중 제 3 PRAM 블록을, 디지털 샘플의 시작과 상기 디지털 샘플의 끝 사이의 기간 동안, 상기 전력 소스로부터 분리하는 단계를 더 포함하는 것을 특징으로 하는 DSP 시스템의 전력 소비를 감소시키기 위한 방법.
  14. 삭제
  15. 삭제
  16. 삭제
  17. 제11항에 있어서,
    상기 DSP 시스템의 계수기에 의해, 클럭 신호에 근거하여 계수기 값을 증분시키는 단계와; 그리고
    상기 제어 모듈에 의해, 상기 계수기 값에 근거하여 상기 코드의 라인들을 실행하는 단계를 더 포함하는 것을 특징으로 하는 DSP 시스템의 전력 소비를 감소시키기 위한 방법.
  18. 제17항에 있어서,
    상기 제어 모듈에 의해, 상기 N개의 PRAM 블록들 중 상기 제 2 PRAM 블록을 상기 전력 소스에 연결하도록 하는 상기 N개의 스위칭 디바이스들 중 상기 제 2 스위칭 디바이스의 작동 이후 상기 깨우기 기간 이후에, 상기 M개의 디지털 신호 프로세싱 기능들 중 상기 제 2 디지털 신호 프로세싱 기능을 위한 코드의 제 1 라인에 대응하는 코드의 라인 번호로 상기 계수기 값을 선택적으로 설정하는 단계를 더 포함하는 것을 특징으로 하는 DSP 시스템의 전력 소비를 감소시키기 위한 방법.
  19. 제17항에 있어서,
    상기 제어 모듈에 의해, 상기 N개의 PRAM 블록들 중 상기 제 2 PRAM 블록을 상기 전력 소스에 연결하도록 하는 상기 N개의 스위칭 디바이스들 중 상기 제 2 스위칭 디바이스의 작동 이후 상기 깨우기 기간 동안 상기 계수기 값을 유지하는 단계를 더 포함하는 것을 특징으로 하는 DSP 시스템의 전력 소비를 감소시키기 위한 방법.
  20. 제17항에 있어서,
    상기 제어 모듈에 의해, 디지털 샘플이 수신될 때마다 상기 계수기 값을 재설정하는 단계를 더 포함하는 것을 특징으로 하는 DSP 시스템의 전력 소비를 감소시키기 위한 방법.
KR1020167034209A 2014-05-07 2015-04-30 저전력 분산형 메모리 네트워크 KR102345613B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201461989697P 2014-05-07 2014-05-07
US61/989,697 2014-05-07
PCT/US2015/028591 WO2015171428A1 (en) 2014-05-07 2015-04-30 Low power distributed memory network
US14/700,755 US9836235B2 (en) 2014-05-07 2015-04-30 Low power distributed memory network
US14/700,755 2015-04-30

Publications (2)

Publication Number Publication Date
KR20170003967A KR20170003967A (ko) 2017-01-10
KR102345613B1 true KR102345613B1 (ko) 2021-12-30

Family

ID=54367897

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167034209A KR102345613B1 (ko) 2014-05-07 2015-04-30 저전력 분산형 메모리 네트워크

Country Status (6)

Country Link
US (1) US9836235B2 (ko)
EP (1) EP3140714A1 (ko)
JP (1) JP6519089B2 (ko)
KR (1) KR102345613B1 (ko)
CN (1) CN106462214B (ko)
WO (1) WO2015171428A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102017126723A1 (de) * 2017-11-14 2019-05-16 Infineon Technologies Ag Vorrichtung und Verfahren zum Verarbeiten von Radarsignalen

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007257259A (ja) 2006-03-23 2007-10-04 Nec Corp 情報処理装置、記憶領域クリーンアップ方法およびプログラム
JP2011065737A (ja) 2009-09-18 2011-03-31 Toshiba Corp 抵抗変化型メモリ
WO2014064846A1 (ja) 2012-10-26 2014-05-01 三菱電機株式会社 アナログ変換装置およびプログラマブルコントローラシステム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FI932051A (fi) * 1992-05-28 1993-11-29 Hughes Aircraft Co Integrerad kontroll och signalbehandling i en cellulaer telefon
US5940627A (en) * 1997-03-13 1999-08-17 Compaq Computer Corporation User selectable feature set for a flash ROM based peripheral
JPH10262248A (ja) * 1997-03-17 1998-09-29 Fujitsu Ltd マイクロコントローラ
CN1198208C (zh) 1999-05-13 2005-04-20 Arc国际美国控股公司 流水线处理器内用于松散寄存器编码的方法和装置
US6789184B1 (en) * 2000-09-29 2004-09-07 Intel Corporation Instruction address generation and tracking in a pipelined processor
JP2004139262A (ja) * 2002-10-16 2004-05-13 Fuji Photo Film Co Ltd 情報処理装置、情報処理方法及び情報処理プログラム
US8495122B2 (en) * 2003-12-29 2013-07-23 Xilinx, Inc. Programmable device with dynamic DSP architecture
JP4209906B2 (ja) * 2006-08-02 2009-01-14 株式会社日立製作所 低消費電力メモリ管理方法及びその方法を用いた計算機
US8854867B2 (en) * 2011-04-13 2014-10-07 Semiconductor Energy Laboratory Co., Ltd. Memory device and driving method of the memory device
JP5653315B2 (ja) 2011-07-28 2015-01-14 株式会社東芝 情報処理装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007257259A (ja) 2006-03-23 2007-10-04 Nec Corp 情報処理装置、記憶領域クリーンアップ方法およびプログラム
JP2011065737A (ja) 2009-09-18 2011-03-31 Toshiba Corp 抵抗変化型メモリ
WO2014064846A1 (ja) 2012-10-26 2014-05-01 三菱電機株式会社 アナログ変換装置およびプログラマブルコントローラシステム

Also Published As

Publication number Publication date
EP3140714A1 (en) 2017-03-15
JP6519089B2 (ja) 2019-05-29
WO2015171428A1 (en) 2015-11-12
CN106462214A (zh) 2017-02-22
JP2017520818A (ja) 2017-07-27
US20150324147A1 (en) 2015-11-12
KR20170003967A (ko) 2017-01-10
US9836235B2 (en) 2017-12-05
CN106462214B (zh) 2019-07-12

Similar Documents

Publication Publication Date Title
US8417918B2 (en) Reconfigurable processor with designated processing elements and reserved portion of register file for interrupt processing
CN103605568A (zh) 一种多线程管理方法及装置
US20070067471A1 (en) Message translation systems and methods
US8127116B2 (en) Dependency matrix with reduced area and power consumption
KR970071273A (ko) 전자 디바이스에 데이터를 다운로드하기 위한 장치 및 방법
US20140026148A1 (en) Low power execution of a multithreaded program
CN102866947A (zh) 一种Linux内核内存泄漏的检测方法
KR20170141205A (ko) Dsp 엔진 및 향상된 컨텍스트 스위치 기능부를 구비한 중앙 처리 유닛
US20170139693A1 (en) Code execution method and device
KR102345613B1 (ko) 저전력 분산형 메모리 네트워크
WO2014136002A1 (en) Data prefetch for a chip having a parent core and a scout core
KR102205899B1 (ko) 메모리의 뱅크 충돌을 방지하기 위한 방법 및 장치
US10761890B2 (en) Optimizing memory fences based on workload
US9588747B2 (en) Method and apparatus for converting programs
CN111819629A (zh) 管理存储器供电状态的方法及芯片
KR101959252B1 (ko) 데이터를 기반으로 전력을 관리하는 장치 및 방법
US9395962B2 (en) Apparatus and method for executing external operations in prologue or epilogue of a software-pipelined loop
CN113688343B (zh) 一种页面权限控制方法、装置、设备及可读存储介质
US9304967B2 (en) Reconfigurable processor using power gating, compiler and compiling method thereof
JP6404751B2 (ja) 制御プログラム分割装置、制御プログラム分割方法及びコンピュータプログラム
CN109756550B (zh) 一种智能网联驾驶车云通信方法、装置以及系统
US9748954B2 (en) Calculation device and calculation method
CN104615458A (zh) 一种基于json数据格式模块加载的方法及系统
US20130318509A1 (en) Generating object code from a conjoined assembler directive
US20230367738A1 (en) Asic power control

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant