KR20220062072A - 프로세서에서의 전력 소모 감소를 위한 플래시 및 ram 할당을 위한 시스템 및 방법 - Google Patents

프로세서에서의 전력 소모 감소를 위한 플래시 및 ram 할당을 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20220062072A
KR20220062072A KR1020227012025A KR20227012025A KR20220062072A KR 20220062072 A KR20220062072 A KR 20220062072A KR 1020227012025 A KR1020227012025 A KR 1020227012025A KR 20227012025 A KR20227012025 A KR 20227012025A KR 20220062072 A KR20220062072 A KR 20220062072A
Authority
KR
South Korea
Prior art keywords
ram
memory
code module
portable code
portable
Prior art date
Application number
KR1020227012025A
Other languages
English (en)
Other versions
KR102523300B1 (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 KR20220062072A publication Critical patent/KR20220062072A/ko
Application granted granted Critical
Publication of KR102523300B1 publication Critical patent/KR102523300B1/ko

Links

Images

Classifications

    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • G06F3/0649Lifecycle management
    • 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/0673Single storage device
    • G06F3/068Hybrid storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System (AREA)
  • Power Sources (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 ROM에서 카피된 절전 코드와 패킷 저장에 사용되는 일시적 RAM 메모리 사이에 RAM을 동적으로 할당하는 컨트롤러이다. 일시적 RAM 메모리의 이용도가 낮은 경우, 코드 세그먼트는 ROM에서 카피되고 그 코드 세그먼트가 ROM에서 카피된 후에 업데이트되는 RAM 포인터 테이블을 사용하여 RAM에서 실행되며, 일시적 RAM 메모리의 이용도가 높은 경우, 코드 세그먼트는 RAM에서 할당 해제되고 포인터 테이블은 플래시 ROM 내의 대응하는 위치를 가리키도록 업데이트된다.

Description

프로세서에서의 전력 소모 감소를 위한 플래시 및 RAM 할당을 위한 시스템 및 방법
본 발명은 2019년 9월 11일에 출원된 미국 가특허 출원 제62/899,084호에 대한 우선권을 주장한다.
본 발명은 일반적으로 통신 시스템에서 전력 소모를 줄이기 위한 방법에 관한 것이다. 특히, 본 발명은 전력 소모를 최소화하기 위해 RAM(random access memory) 및 플래시 메모리에서의 데이터 관리에 관한 것이다.
마이크로컨트롤러 및 마이크로프로세서의 경우 전형적으로 임시 데이터 및 실행 가능한 명령의 저장을 위한 RAM을 가진다. 현재 저전력 또는 배터리 동력의 IoT(Internet of Things) 및 CPU(Central Processing Unit)를 가지는 임베디드 시스템에서는, 최적의 전력 소모와 보다 높은 스루풋(throughput) 능력 사이에 트레이드오프가 있다. 최적의 전력 소모 및 네트워크 스루풋을 가지는 CPU의 경우, RAM 메모리는 실행 가능한 절전 코드 및 데이터 메모리뿐만 아니라, 전송 및 수신 패킷 큐(queue)를 위한 패킷 버퍼와 같은 동적 또는 일시적 사이즈 요구 사항(requirement)을 가지는 데이터 구조를 포함하는 것이 요구된다. 임베디드 SOC(System on a Chip) 환경에서, 전력 소모 감소를 위해, RAM은 위에서의 스토리지 요구 사항을 충족하는 최소 사이즈가 되도록 의도적으로 선택된다. 시스템에 의해 요구되는 RAM이 적거나 사용 중인 RAM이 적을수록 마이크로컨트롤러 또는 마이크로프로세서의 전력 소모는 감소하기 때문에, 통신 애플리케이션을 위한 네트워크 스루풋과 같은 일시적 RAM 메모리 스토리지 요구 사항을 필요로 하는 태스크 성능을 손상시키지 않으면서 전력 소모를 더 줄이는 것이 요망된다. 본 발명의 또 다른 예에서는, 플래시 메모리 또는 RAM에서 코드를 실행하는데 있어서 유연성(flexibility)을 제공하여, 소프트웨어 프로세스의 성능이 프로세서 명령의 실행을 위한 플래시와 RAM 간의 동적 할당에 의해 전력 소모 감소 또는 성능 향상에 대해 최적화된다. RAM 사용과 관련된 전력 소모를 줄이거나 최소화하는 것이 더 요망된다.
본 발명의 제1 목적은 RAM에 저장된 데이터에 대한 일시적 요구 사항을 갖는 시스템에서 전력 소모를 줄이기 위한 장치로서, 이 장치는 포터블 코드 모듈 세그먼트, 실행 가능한 고정 코드, 및 부트 코드를 포함하도록 구성된 플래시 메모리를 가진다.
본 발명의 제2 목적은 데이터가 RAM에 저장되는 경우의 전력 소모를 줄이기 위한 프로세서 SOC에 대한 방법으로서, 이 방법은 내부의 RAM 및 외부의 플래시 ROM에 연결된 CPU를 가지는 SOC에서 동작하며, 이 방법은:
플래시 메모리에, 포터블 코드 모듈 세그먼트, 고정 코드, 및 부트 코드 중 적어도 하나와 같은 실행 가능한 코드를 배열하고;
CPU는, 부팅시, RAM에 절전 코드를 배치하는 부트 코드를 칩 ROM에서 실행하고, 특정 포터블 코드 모듈 세그먼트가 플래시 ROM 위치 또는 RAM 위치에서 실행되어야 하는지 여부를 나타내도록 RAM 내의 펑션 포인터 테이블을 초기화하는 것을 포함한다. 절전 코드는 현재의 일시적 RAM 메모리 이용도(예로써 패킷 버퍼 이용도)를 전체 RAM 사이즈로 나눈 이용률을 주기적으로 결정하며, 다음과 같이 이용률을 형성한다:
이용률이 임계값을 초과하는 경우, 플래시 ROM 내에 대응하는 포터블 코드 모듈을 가리키도록 펑션 포인터 테이블 엔트리를 업데이트하고, 그 후에 RAM에서 포터블 코드 모듈 세그먼트를 할당 해제하고 이 할당 해제된 세그먼트를 패킷 버퍼와 같은 일시적 RAM으로 할당하며;
이용률이 임계값 미만인 경우, 포터블 코드 모듈 세그먼트를 RAM으로 이동시키고, RAM에서 포터블 코드 모듈 세그먼트를 실행하게 하도록 펑션 포인터 테이블을 업데이트한다.
본 발명의 제3 목적은 실행 가능한 코드 명령의 동적 할당을 위한 장치로서, 이 장치는:
포터블 코드 모듈 세그먼트, 실행 가능한 고정 코드, 및 부트 코드를 포함하도록 구성된 플래시 메모리;
플래시 메모리 내의 코드 모듈 세그먼트 또는 RAM 내의 대응하는 코드 모듈 세그먼트에 대한 포인터 엔트리를 갖는 펑션 포인터 테이블을 포함하는 RAM;
CPU 실행에 기초하여 코드 이용도를 결정하기 위한 포인터 할당 컨트롤러를 포함하며, 코드 이용도는 현재 플래시 메모리에서 실행 중인, RAM에서의 실행을 위한 제1 포터블 코드 모듈 및 현재 RAM에서 실행 중인, 플래시에서의 실행을 위한 제2 포터블 코드 모듈을 식별하고;
포인터 할당 컨트롤러는 연관된 플래시 메모리의 포터블 코드 모듈을 가리키도록 제2 포터블 코드 모듈과 연관된 펑션 포인터 테이블 엔트리를 변경하고, 플래시 메모리에서의 제1 포터블 코드 모듈을 RAM의 세그먼트에 카피하고, 그리고 연관된 RAM의 세그먼트를 가리키도록 제1 포터블 코드 모듈과 연관된 펑션 포인터 테이블을 변경한다.
본 발명의 제4 목적은 실행 가능한 코드 명령의 동적 할당을 위한 장치로서, 이 장치는:
포터블 코드 모듈 세그먼트, 실행 가능한 고정 코드, 및 부트 코드를 포함하도록 구성된 플래시 메모리;
플래시 메모리 내의 코드 모듈 세그먼트 또는 RAM 내의 대응하는 코드 모듈 세그먼트에 대한 포인터 엔트리를 갖는 펑션 포인터 테이블을 포함하는 RAM;
CPU 실행에 기초하여 코드 이용도를 결정하기 위한 포인터 할당 프로세스를 포함하며, 코드 이용도는 현재 RAM에서 실행 중인, 플래시에서의 실행을 위한 포터블 코드 모듈을 식별하고;
포인터 할당 프로세스는 연관된 플래시 메모리의 포터블 코드 모듈을 가리키도록 포터블 코드 모듈과 연관된 펑션 포인터 테이블 엔트리를 변경한다.
RAM 및 플래시 ROM을 가지고 전력 소모 감소를 제공하는 시스템으로서,
RAM에 연결되고, 또한 플래시 ROM에 연결된 CPU를 포함하고;
플래시 ROM은:
엔트리 포인트 어드레스를 가지는 포터블 코드 모듈;
고정 코드 모듈;
절전 코드를 포함하는 부트 코드;
의 각각을 포함하고;
RAM은:
절전 코드 영역,
호출 가능 포터블 코드 모듈 영역,
펑션 포인터 테이블 영역, 및
패킷 버퍼와 같은 일시적 RAM 메모리 영역을 가지고;
여기서, 파워 온 초기화시, CPU는 칩 ROM에서 부트 코드를 실행하고, 플래시 메모리에서의 절전 코드를 RAM의 절전 코드 영역에 카피하고, 그 후에 RAM 내의 공간을 일시적 RAM 메모리 영역으로 할당하고, 플래시 ROM에서의 포터블 코드 모듈 세그먼트를 RAM의 호출 가능 포터블 코드 모듈 영역에 카피하고, 그리고 플래시 ROM 내의 포터블 코드 모듈 세그먼트 또는 RAM 내의 포터블 코드 모듈 세그먼트를 가리키도록 펑션 포인터 테이블 영역을 초기화하며, 그 후에 펑션 포인터 테이블에 따라, 플래시 ROM 또는 RAM에서 포터블 코드 모듈이 실행되면서, 절전 코드는 바람직하게는 RAM에서 실행된다. 절전 코드는 전체 RAM에 대해 사용 중인 일시적 RAM 메모리의 사이즈의 이용률을 주기적으로 형성한다. 이용률이 임계값(예로써, 50%) 미만인 경우, 절전 코드는 RAM에서 일시적 RAM 메모리를 할당 해제하고 그것을 RAM 내의 포터블 코드 모듈로 할당하며, ROM에서의 대응하는 포터블 코드 모듈을 RAM에 카피하고, 그리고 RAM 내의 대응하는 포터블 코드 모듈을 가리키도록 펑션 포인터 테이블을 업데이트한다. 이용률이 임계값(예로써, 50%)을 초과하는 경우, 절전 코드는 플래시 ROM 내의 포터블 코드 모듈을 참조하도록 펑션 포인터 테이블을 변경하고, RAM에서의 연관된 포터블 코드 모듈을 할당 해제하고 그것을 일시적 RAM 메모리의 일부로 할당한다.
본 발명의 다른 예에서, RAM 및 플래시 ROM을 가지고 전력 소모 감소를 제공하는 시스템으로서,
RAM에 연결되고, 또한 플래시 ROM에 연결된 CPU를 포함하고;
플래시 ROM은:
엔트리 포인트 어드레스를 가지는 포터블 코드 모듈;
고정 코드 모듈;
절전 코드를 포함하는 부트 코드;
의 각각을 포함하고;
RAM은:
절전 코드 영역,
호출 가능 포터블 코드 모듈 영역,
펑션 포인터 테이블 영역, 및
패킷 버퍼와 같은 일시적 RAM 메모리 영역을 가지고;
여기서, 파워 온 초기화시, CPU는 칩 ROM에서 부트 코드를 실행하고, 플래시 메모리에서의 절전 코드를 RAM의 절전 코드 영역에 카피하고, RAM에서의 실행(execute-from-RAM) 코드 최적화 프로세스를 시작하여, 플래시 ROM에서 실행되는 포터블 코드 모듈이 연관된 임계값보다 더 자주 호출되는 것으로 검출되는 경우, 포터블 코드 모듈은 RAM의 포터블 코드 영역에 카피되고, RAM의 펑션 포인터 테이블 영역은 포터블 코드 모듈의 연관된 엔트리 포인트로 업데이트되며, 그리고 RAM에서 실행되는 포터블 코드 모듈이 연관된 임계값보다 덜 자주 호출되는 것으로 검출되는 경우, RAM의 펑션 포인터 테이블 영역은 플래시 ROM 내의 대응하는 포터블 코드 모듈을 가리키도록 업데이트된다.
도 1은 외부 플래시 메모리를 가지는 프로세서 SOC의 블록도를 나타내는 도면이다.
도 2의 (A)는 플래시 메모리의 할당 예를 나타내는 도면이다.
도 2의 (B) 및 (C)는, 각각, 적은 수의 패킷 버퍼 및 많은 수의 패킷 버퍼를 가지는 RAM의 할당 예를 나타내는 도면이다.
도 3은 본 발명의 동작 플로차트이다.
도 1은 본 발명의 프로세스에 대한 블록도를 나타내고, 도 2의 (A)는 플래시 메모리(120) 및 RAM(108)의 예시적인 공간 할당을 나타낸다. 본 발명은 실행될 펑션이 플래시 ROM에 있어야 하는지 또는 RAM에 있어야 하는지 여부를 나타내는 펑션 포인터 테이블을 사용하여 시스템의 RAM 및 플래시 ROM 사이에서 실행 가능한 펑션의 동적 할당을 위한 시스템 및 방법을 제공한다. 본 발명의 예에서, 일시적(transient) RAM 메모리에 대한 RAM의 할당이 일반적으로 설명된다. 일시적 RAM 메모리의 구체적인 예로는 전송 및 수신 버퍼를 유지하는 네트워킹 디바이스 내의 패킷 버퍼 메모리를 포함하며, 이것은 수신 버퍼에서 수신 버퍼 데이터가 판독되고 처리되는 경우 필요하지 않으며, 전송 버퍼의 데이터는 전송된 데이터가 확인 응답(Ack)된 후에는 필요하지 않아 재전송의 필요성이 없다. 일시적 RAM 메모리는 메모리 할당 및 할당 해제에 사용될 수 있다(예를 들면, C 프로그래밍 언어에서의 "malloc()" 및 "free()", 또는 C++, C#, 및 Java와 같은 객체 지향 프로그래밍 언어에서의 "new" 및 "delete"). 네트워킹 애플리케이션을 위한 펑션 포인터 테이블 및 일시적 RAM 메모리 할당은, 사용중인 패킷 버퍼 메모리가 차지한 RAM의 퍼센티지와 같은 네트워킹 스택/애플리케이션 메트릭에 기초하여 동적으로 수행될 수 있다. 이러한 방식으로, RAM(108)은 다음 사이의 이용률에 기초하여 동적으로 공유된다:
1) 일시적 RAM 메모리(패킷 버퍼(228)로 도시됨)에 사용되는 RAM(230) - 패킷 버퍼는 TCP 전송 및 수신 버퍼와 같은 장기 지속성(long persistence) 버퍼를 포함하며, TCP 전송 버퍼는 수신 피어(peer)에 의해 전송된 패킷의 확인 응답을 대기 중이고, TCP 수신 버퍼는 모든 순차 패킷이 전송 피어로부터 수신될 때까지 유지함 - . UDP 전송 및 수신 버퍼(연관된 피어에 의해 확인 응답되지 않음) 또는 즉시 처리될 수 있는 제어 프레임 버퍼와 같은 단기 지속성(short persistence) 버퍼는 단기 지속성 때문에 "특수 풀"의 일부일 수 있음;
2) 다른 모든 RAM 이용도 - 절전(동작) 코드 및 데이터(220), 플래시 메모리(202)에서 카피된 호출 가능 펑션(224), 및 절전 코드(220)에 의해 호출된 특정 펑션이 호출 가능 펑션(224) 영역에서 실행되어야 하는지 또는 플래시 메모리의 포터블 코드 모듈(202) 영역에서 실행되어야 하는지 여부를 나타내는 펑션 포인터 테이블(226)을 위해 RAM(230)이 요구되는 것을 포함함 - .
전형적인 애플리케이션에서, 일시적 RAM 메모리의 패킷 버퍼 메모리와 같은 일시적 RAM 메모리 요구 사항 증가로 인해 일시적 RAM 메모리에 대한 RAM 할당이 증가되며, 여기서 패킷 스토리지 요구 사항을 버스트시 발행하는 네트워크 트래픽의 특성, 및 네트워크 상태에 의해 결정된다. 예를 들어, 일시적 RAM 메모리의 전송 버퍼는 저장 중인 관련 패킷이 수신 스테이션 또는 액세스 포인트(AP)에 의해 수신된 것으로 확인 응답될 때까지 할당 해제되지 않을 수 있다. 모든 패킷이 블록 확인 응답이 수신될 때까지, 일시적 RAM 메모리의 네트워크 트래픽 수신 버퍼는 할당 해제되지 않을 수 있으며, 또는 수신 버퍼가 TCP/IP 트래픽에 사용되는 경우에는, 수신 패킷은 순차적인 패킷이 수신되고 버퍼가 해제될 때까지 유지된다. 큰 트래픽 버스트가 있거나, 전송 또는 수신 패킷 버퍼에 대한 증가된 요구 사항이 발생하면, 패킷 버퍼에 대한 증가된 RAM 요구 사항이 필요하다. 반대로, 네트워크가 활발하지 않을(quiet) 때에는, RAM 요구 사항은 플래시 ROM에서 카피되는 포터블 코드 모듈 세그먼트 간의 RAM의 할당을 관리하는 "절전 코드(powersave code)"(220)라고 불리는 동작 코드를 저장하려는 최소 요구 사항으로 떨어진다. 추가로, 처리하고 전달할 많은 스루풋 트래픽이 존재하는 경우, CPU는 절전 모드로 이행할 기회가 적을 것이다.
도 1은 예시적인 절전 장치 및 방법을 보여준다. 프로세서 SOC(System on a Chip)(100)는 플래시 ROM(Read Only Memory)(120)에 대한 인터페이스(118)(예를 들면 직렬 주변기기 인터페이스(SPI; Serial Peripheral Interface) 버스를 이용함), 호스트 인터페이스(112)를 동작시키는데 경유하는 인터페이스(110)를 포함할 수 있으며, 이 둘은 CPU(106)에 연결된다. CPU(106)는 RAM(108)에 연결되며, 선택적으로 CPU 레지스터(102)뿐만 아니라, 기동을 위한 기본 명령을 포함하는 부트롬 칩(104)에도 연결된다. 프로세서(100)에는 전형적으로 다른 특징들이 존재하며, 이것들은 예시적인 목적으로만 보여지는 것이다. 본 방법은 다음과 같이 동작한다:
1) 기동 및 초기화시, 이 디바이스는 기본 인터페이스(118 및 110)의 초기화를 수행하는 부트롬 칩(104)에서 시작하고, 플래시 ROM(120)의 부트 코드 섹션에서 RAM(108)에 카피되는 기동 코드를 검색할 수 있으며, 그 후에는 CPU는 RAM에서 직접 절전 코드를 실행한다. 플래시 ROM(120)의 구성이 도 2의 (A)의 208에 도시되어 있으며, RAM(108)의 구성은 도 2의 (B)의 230에서는 초기화 후 또는 약간의(light) 무선 트래픽 이용도 동안의 경우가 도시되어 있고, 도 2의 (C)에서는 추가적인 패킷 버퍼의 할당 및 플래시 ROM(120)에서 직접 실행하기 위해 또는 다른 일시적 RAM 메모리 요구를 위해 포터블 코드 모듈의 할당 해제를 요구하는 많은(heavy) 무선 트래픽 동안과 같은, 일시적 RAM 메모리 요구 시간 동안의 경우가 도시되어 있다. 부트 코드(206)는 전형적으로 초기에 RAM(230/231)의 세그먼트(220)에 카피되어 후속적으로 실행되는 절전 코드를 포함할 수 있으며, 이 절전 코드는 RAM(224)에 카피되는, 플래시 ROM(120)의 연관된 포터블 코드 모듈(202)에 대한 포인터를 포함하도록 초기화되는 펑션 포인터 테이블(226)에 각각 디렉팅되는 여러 펑션에 대한 호출을 포함한다. 대안적으로, 절전 코드는 플래시 ROM(120)에서 실행될 수 있으며, RAM(108) 또는 플래시 ROM(120)에 위치된 포터블 코드 모듈에 대한 펑션 포인터 테이블(226)을 사용할 수 있다. 초기에, 도 2의 (B)에 도시된 바와 같이, 패킷 버퍼(228) 이용도가 낮은 경우, 패킷 버퍼(228)의 사이즈는 매우 작을 수 있으며, 사용되지 않는 공간은 도 2의 (B)의 포터블 코드 모듈(224)로서 RAM에 카피되는 포터블 코드 모듈(202)로 채워질 수 있으며, 및 절전 코드로부터의 펑션 호출을 RAM(108)에 카피된 포터블 코드 모듈(224)로 디렉팅되도록 펑션 포인터 테이블(226)을 업데이트할 수 있다. 이러한 방식으로, RAM(108)에서 실행되는 포터블 코드 모듈은 플래시 ROM(120)에서 실행될 때보다 훨씬 더 빠르게 실행되어, 보다 높은 성능을 제공한다. 들어오는 수신 패킷 및 나가는 전송 패킷이 패킷 버퍼 영역(228)에 저장되도록 패킷 버퍼가 할당되는 경우의 일시적 RAM 메모리 요구 사항의 경우, RAM 패킷 버퍼(228)의 할당 사이즈는 도 2의 (C)에 도시된 바와 같이 증가할 것이고, RAM(108)에서 이전에 실행되던 포터블 코드 모듈(224)은 패킷 버퍼(228)의 사용을 위해 할당 해제 및 재할당될 것이며, 펑션 포인터 테이블(226)은 패킷 버퍼(228)에 요구되는 RAM의 퍼센티지에 기초하여 연관된 플래시 메모리(208)의 포터블 코드 모듈 펑션을 가리키도록 재기입된 포터블 코드 모듈에 대한 참조를 디렉팅할 것이다.
절전 코드(220)는 이용 가능한 할당 가능 RAM(236)에 대한 패킷 버퍼(228)의 이용도 및 할당을 모니터링하여, 할당 가능 RAM(236)에 대한 패킷 버퍼(228)의 이용도와 같은 일시적 RAM 메모리 요구의 비율이 네트워크 스루풋으로 인해 제1 임계값(예로써, 50%의 RAM 이용도)을 초과하는 경우, RAM의 호출 가능 펑션 공간(224)은 하나 이상의 포터블 코드 모듈 세그먼트가 RAM에서 할당 해제됨에 따라 점진적으로 감소할 것이며, 각각의 대응하는 코드 세그먼트에 대한 펑션 포인터 테이블(226)의 엔트리는 코드 실행이 중단되지 않도록 할당 해제 전에 플래시 ROM(208)을 가리키도록 업데이트된다. 할당 해제는 먼저 펑션 포인터 테이블(226) 내에 업데이트된 펑션 포인터를 기입한 다음에, RAM에서 임의의 미완료된 코드 실행이 완료되도록 소정의 시간 간격을 대기하여 수행되거나, 또는 연관된 루틴이 실행 시작시에 판독 가능한 플래그를 설정하고 실행 완료시에 그 플래그를 제거하는 것에 의해 수행될 수 있다. 그 후에, 할당 해제된 포터블 코드 모듈에 의해 이전에 이용되던 RAM은 패킷 버퍼(228)의 사이즈를 증가시키도록 재할당된다.
반대로, 전체 이용 가능한 할당 가능 RAM(236)에 대한 RAM의 패킷 버퍼(228)의 할당 비율이 제2 임계값(예로써 40%) 미만으로 떨어지고, 사용되지 않은 RAM의 패킷 버퍼가 재할당을 위해 이용 가능한 경우, 포터블 코드 모듈(202)의 세그먼트가 ROM(202)에서 카피되어, RAM의 할당 해제된 패킷 버퍼 영역(224)에 기입되며, 각각의 연관된 포터블 코드 모듈 호출에 대한 펑션 포인터 테이블(226)의 엔트리는 플래시 메모리(208)의 어드레스로부터 연관된 호출 가능 펑션(224)의 RAM(230)의 어드레스로 포터블 코드 모듈에 대한 호출을 가리키도록 업데이트된다. 절전 코드(220)는 최적으로 인접한 코드 블록이지만, 플래시 ROM(202)에서 카피된 포터블 코드 모듈 세그먼트는 사이즈가 더 작고, 각 포터블 코드 세그먼트는 펑션 포인터 테이블(226) 내에 각자의 포인터를 갖기 때문에, 그 각각은 임의의 다른 포터블 코드 모듈 세그먼트로부터 RAM의 비인접한 위치에 배치될 수 있다.
본 발명의 일 예에서, 호출 가능 펑션(224)은 도 2에 도시된 바와 같이 패킷 버퍼(228)와 분리된 RAM의 하나의 블록이지만, 본 발명의 다른 예에서는, 패킷 버퍼(228)는 인접한 RAM의 공간에 있거나 또는 호출 가능 펑션에 의해 할당된 공간(224)과 혼합될 수 있는 연결 리스트(linked list)를 포함한다. 이 예에서, 패킷 버퍼의 사이즈는 연결 리스트 디스크립터(그 각각은 시작 노드, 다음 노드, 및 사이즈를 포함할 수 있음)에 의해 결정될 수 있으며, 호출 가능 펑션을 위해 할당된 영역은 펑션 포인터 테이블(226)의 일부이거나, 또는 그것과 별개일 수 있는 별도의 할당 테이블에 유지될 수 있다.
본 발명의 일 예에서, RAM 할당을 위한 방법은 도 3에 나타낸 바와 같이 패킷 버퍼의 예에 대해 도시되는 일련의 스텝으로 동작하지만, 일시적 RAM 메모리 요구 사항을 가지는 다른 애플리케이션으로 일반화될 수 있으며, 여기서 일시적 RAM 메모리 요구 사항은 실행 가능한 코드에 대한 것이거나, 또는 일시적 RAM 메모리 요구 사항은 동적 데이터에 대한 것이다. 스텝 302에서, CPU는 부트롬 칩(120)에서 부팅하고, 플래시 ROM(120)에서의 절전 코드를 RAM(108)에 카피하고, RAM(108)의 펑션 포인터 테이블(226)을 초기화하고, 그리고 RAM(108)에서 절전 코드(220)를 실행한다. 스텝 302에서 RAM 내에 일시적 RAM 메모리 풀(228)(예로써 패킷 버퍼 풀(228)) 및 포터블 코드 모듈(224)에 대한 RAM의 초기 할당은, 각각, 대략 70% 및 30%일 수 있다.
스텝 303에서, 새 수신 패킷이 도착하거나, 또는 전송될 새 패킷이 생성될 때와 같이, 새로운 증가된 일시적 RAM 메모리가 요구될 때마다, 패킷 버퍼 할당 요청은 추가적인 패킷 버퍼 사이즈(228)를 생성하고, 반대로, 전송 패킷이 전송 및 확인 응답되거나, 수신된 패킷이 처리를 위해 제거될 때마다, 패킷 버퍼는 할당 해제된다.
스텝 304에서는 전체 RAM에 대한 패킷 버퍼의 비율이 제1 임계값(예로써 60%)을 초과하는지 여부를 결정하도록 테스트하고, 만일 초과한다면, 펑션 포인터 테이블(226)이 플래시 메모리(202) 내의 코드 세그먼트에 대해 연관된 포터블 코드 모듈 세그먼트를 가리키도록 업데이트되고, 연관된 호출 가능 펑션에 대한 RAM(224)이 할당 해제되고, 그 해제된 RAM은 패킷 버퍼 RAM(228)으로 할당되는 스텝 306이 수행된다. 본 발명의 다른 실시예에서, 일시적 RAM 메모리 할당 요청이 제어 패킷, 관리 패킷, 또는 UDP 패킷에 대한 패킷 메모리로 사용되는 경우에는, 제어 패킷, 관리 패킷 및 UDP 패킷은, 그것들이 확인 응답되거나 저장될 필요가 없이, 처리하는 절전 코드에만 전달되어, 단기 지속성 메모리 요구 사항을 가지기 때문에, 그때에는 요구된 일시적 RAM 메모리 패킷 버퍼의 RAM은 특수 임시 RAM 영역(도시하지 않았지만 230의 일부)에서 할당될 수 있다. 패킷 버퍼 메모리 할당 요청과 같이 일시적 RAM 메모리 할당이 TCP 데이터 패킷에 대한 것인 경우, 그때에는 메모리 할당은 패킷 버퍼 메모리 풀(228)에서 이루어지며, 그리고 본 발명의 다른 실시에에서, 추가적인 일시적 RAM 메모리 패킷 버퍼의 RAM(228)이 이용 가능하지 않은 경우에는, 패킷 버퍼 요청은 RAM(108)의 특수 메모리 풀(도시하지 않음)에서 할당될 수 있다. 추가적인 일시적 RAM 메모리 패킷 버퍼의 RAM(228)의 할당 및 RAM에서 실행 가능한 포터블 코드 모듈의 RAM(224)의 감소는 도 2의 (B)의 230에서 도 2의 (C)의 231로의 변화로 보여진다.
스텝 308에서는 전체 이용 가능한 할당 가능 RAM(236)에 대한 일시적 RAM 메모리(228) 또는 패킷 버퍼(228)의 사이즈의 비율이 제2 임계값(예로써 50%) 미만인 경우를 테스트하며, 이 경우, 절전 코드는 플래시 ROM(208)에서의 포터블 코드 모듈 세그먼트(202)를 RAM 내의 호출 가능 펑션(224)에 점진적으로 카피하고, 펑션 포인터 테이블(226)을 업데이트하여, 이들 펑션에 대한 호출을 연관된 RAM 위치에서 실행한다. 스텝 310에서는 도 2의 (C)에서 도 2의 (B)로의 메모리 할당의 변화를 보여준다. 일시적 RAM 메모리 패킷 버퍼의 할당 해제 및 포터블 호출 가능 펑션으로 재할당 그리고 ROM에서 RAM으로의 펑션의 카피가 완료된 후, 펑션 포인터 테이블(226)이 업데이트된다.
스텝 310 후에, 프로세스는 스텝 303으로 되돌아가거나, 또는 스텝 303의 할당 및 할당 해제가 이전에 수행되어 스텝 306 및 310에서 완료되었을 경우에는 스텝 304로 되돌아가며, 각 반복에서는 선택적으로 지연이 있다. 이러한 방식으로, RAM(108) 사이즈는 패킷 버퍼뿐만 아니라 펑션 포인터 테이블 및 절전 코드를 지원하기 위한 요구 사항이 최소로 감소될 수 있으며, 이로 인해 정적(static) RAM 할당을 유지하거나 ROM 또는 플래시에서 독점적으로 코드 모듈을 실행하는 종래 기술의 방법에 비해 전력을 절약할 수 있다.
주어진 예들은 예시적인 것이며 본 발명의 범위를 제한하려는 것이 아님을 이해해야 한다. 제1 및 제2 임계값은, 그 임계값이 공칭 사이즈 x보다 큰 차수(10x) 또는 그보다 작은 차수(x/10)의 범위 내에 있도록, x의 차수로 변화할 수 있다. 또는, 임계값은, 대략적으로 4x 또는 x/4의 범위 내인, 대략적으로 주어진 공칭 사이즈일 수 있다. 본 발명의 일 예에서, 제1 임계값은 40% 내지 60%의 범위 내이고, 제2 임계값은 20% 내지 40%의 범위 내이다. 본 발명의 또 다른 예에서, 제2 임계값은 제1 임계값보다 작다.

Claims (18)

  1. 절전형(power saving) 프로세서로서,
    CPU(Central Processing Unit);
    부트 코드(boot code), 고정 코드(fixed code), 및 포터블 코드 모듈 세그먼트를 포함하는 플래시 ROM(Read Only Memory);
    일시적 RAM 메모리를 위해 할당된 영역, 호출 가능 펑션을 위해 할당된 영역, 펑션 포인터 테이블, 및 절전 코드를 가지는 RAM(Random Access Memory);을 포함하며,
    상기 호출 가능 펑션을 위해 할당된 RAM 영역은 플래시 ROM의 포터블 코드 모듈 세그먼트에서 카피된 적어도 하나의 펑션을 가지고;
    상기 펑션 포인터 테이블은 상기 ROM의 포터블 코드 세그먼트 또는 상기 ROM의 포터블 코드 모듈 세그먼트에서 카피된 적어도 하나의 펑션을 가지는 RAM 영역에 대한 포인터를 포함하고;
    상기 절전 코드는 할당 비율을 형성하기 위해 전체 RAM 사이즈에 대한 호출 가능 펑션을 위한 RAM 할당의 비율을 주기적으로 조사하도록 상기 CPU에 명령하고;
    상기 할당 비율이 제1 임계값을 초과하는 경우:
    플래시 ROM의 포터블 코드 모듈 세그먼트에서 카피된 적어도 하나의 RAM 영역의 호출 가능 펑션을 식별하고;
    연관된 플래시 ROM의 포터블 코드 모듈 세그먼트를 가리키도록 연관된 펑션 포인터 테이블을 업데이트하고;
    적어도 하나의 RAM 영역의 호출 가능 펑션에 의해 사용된 상기 RAM을 할당 해제하여, 일시적 RAM 메모리의 RAM으로 할당하며; 그리고
    상기 할당 비율이 제2 임계값 미만 경우:
    일시적 RAM 메모리의 세그먼트를 할당 해제하고;
    상기 할당 해제된 세그먼트를 RAM의 호출 가능 펑션 메모리로 할당하고;
    플래시 ROM에서의 적어도 하나의 포터블 코드 모듈 세그먼트를 RAM의 호출 가능 펑션 영역에 카피하고;
    플래시 ROM으로부터 카피된 상기 포터블 코드 모듈 세그먼트에 대한 호출을 RAM의 연관 위치로 디렉팅하도록 상기 펑션 포인터 테이블을 업데이터하는 절전형 프로세서.
  2. 청구항 1에 있어서,
    상기 제1 임계값은 40-60%인 장치.
  3. 청구항 1에 있어서,
    상기 제2 임계값은 20-50%인 장치.
  4. 청구항 1에 있어서,
    상기 RAM 할당이 제1 임계값을 초과하거나 또는 상기 RAM 할당이 제2 임계값 미만인 경우가 주기적으로 조사되는 장치.
  5. 포터블 코드 모듈을 포함하는 플래시 ROM 및 RAM에 연결된 CPU로 동작하는 프로세스로서,
    상기 CPU는 플래시 ROM의 영역에서 코드를 실행하고 플래시 ROM에서 실행 가능한 절전 코드를 RAM에 카피하고, 그 후로 상기 CPU는 RAM에서 실행하며;
    상기 CPU는 플래시 ROM에서의 포터블 코드 모듈을 RAM에 카피하고;
    상기 CPU는 각 포터블 코드 모듈이 플래시 ROM에서 실행되어야 하는지 또는 RAM에서 실행되어야 하는지를 나타내는 RAM 내의 포인터를 초기화하고;
    상기 CPU는 수신 및 전송 패킷을 위해 상기 RAM 내에 일시적 RAM 메모리를 할당하고;
    상기 CPU는 전체 RAM에 대해 사용 중인 일시적 RAM 메모리의 비율을 주기적으로 조사하고;
    상기 전체 RAM에 대한 일시적 RAM 메모리의 비율이 제1 임계값보다 큰 경우:
    포터블 코드 모듈에 사용된 RAM을 할당 해제하고, 플래시 ROM 내의 포터블 코드 모듈을 가리키도록 RAM 내의 포인터를 업데이트하고, 할당 해제된 RAM을 일시적 RAM 메모리로 할당하며;
    상기 전체 RAM에 대한 일시적 RAM 메모리의 비율이 제2 임계값보다 작은 경우:
    포터블 코드 모듈을 위한 RAM을 할당하고 RAM 내의 상기 포터블 코드 모듈에 대한 포인터를 업데이트하는 것을 포함하는 프로세스.
  6. 청구항 5에 있어서,
    상기 제1 임계값은 40% 내지 60%인 프로세스.
  7. 청구항 5에 있어서,
    상기 제2 임계값은 20% 내지 40%인 프로세스.
  8. 청구항 5에 있어서,
    상기 제2 임계값은 상기 제1 임계값보다 작은 프로세스.
  9. 청구항 5에 있어서,
    상기 RAM은 특수 풀(special pool)을 포함하는 프로세스.
  10. 청구항 9에 있어서,
    상기 특수 풀은 제어 패킷, UDP 패킷, 또는 제어 패킷을 위한 패킷 메모리로 사용되는 프로세스.
  11. RAM(random access memory);
    플래시 ROM(Read Only Memory);
    상기 RAM에 연결되고, 또한 상기 플래시 ROM에 연결된 CPU;
    를 포함하는 시스템으로서,
    상기 플래시 ROM은:
    엔트리 포인트 어드레스를 가지는 실행 가능한 포터블 코드 모듈;
    실행 가능한 고정 코드 모듈;
    절전 코드를 포함하는 부트 코드;
    의 각각을 포함하고;
    상기 RAM은 절전 코드 영역, 호출 가능 포터블 코드 모듈 영역, 펑션 포인터 테이블 영역, 및 일시적 RAM 메모리 영역을 가지고;
    상기 CPU는 칩 ROM에서 부트 코드를 실행하고, 또한 상기 플래시 ROM에서의 절전 코드를 상기 RAM 내의 절전 코드 영역에 카피하도록 동작하고;
    상기 CPU는 상기 RAM 내의 공간을 상기 일시적 RAM 메모리 영역으로 할당하도록 동작하고, 상기 플래시 ROM에서의 포터블 코드 모듈 세그먼트를 상기 RAM의 호출 가능 포터블 코드 모듈 영역에 카피하도록 동작하며, 상기 플래시 ROM 내의 포터블 코드 모듈 세그먼트 또는 상기 RAM 내의 포터블 코드 모듈 세그먼트를 가리키도록 펑션 포인터 테이블 영역을 초기화하도록 동작하고;
    상기 CPU는 RAM에서 상기 절전 코드를 실행하도록 동작하고;
    상기 CPU는 상기 펑션 포인터 테이블에 의해 지시된 대로, 상기 플래시 ROM 또는 상기 RAM 중 적어도 하나에서 실행되는 상기 포터블 코드 모듈을 실행하도록 동작하는 시스템.
  12. 청구항 11에 있어서,
    상기 CPU는 전체 RAM에 대한 절전 코드, 호출 가능 포터블 코드, 펑션 포인터 테이블, 및 일시적 RAM 메모리에 의해 사용된 일시적 RAM 메모리의 사이즈의 비율에 기초하여, 이용률을 주기적으로 계산하도록 동작하는 시스템.
  13. 청구항 12에 있어서,
    상기 CPU는 RAM에서 일시적 RAM 메모리의 메모리를 할당 해제하고 상기 할당 해제된 일시적 RAM 메모리의 메모리 공간의 적어도 일부를 RAM 내의 포터블 코드 모듈로 할당하며, 플래시 ROM에서 대응하는 포터블 코드 모듈을 RAM에 카피하고, 그리고 상기 이용률이 제1 임계값 미만인 경우 RAM 내의 상기 대응하는 포터블 코드 모듈을 가리키도록 상기 펑션 포인터 테이블을 업데이트하도록 동작하는 시스템.
  14. 청구항 13에 있어서,
    상기 CPU는 플래시 ROM 내의 포터블 코드 모듈을 참조하도록 상기 펑션 포인터 테이블을 변경하고, 상기 이용률이 제2 임계값을 초과하는 경우 RAM에서 연관된 포터블 코드 모듈을 할당 해제하고 상기 연관된 포터블 코드 모듈의 메모리를 일시적 RAM 메모리로 할당하도록 동작하는 시스템.
  15. 청구항 12에 있어서,
    상기 제1 임계값은 40% 내지 60%의 범위 내인 시스템.
  16. 청구항 14에 있어서,
    상기 제2 임계값은 20% 내지 50%의 범위 내인 시스템.
  17. 청구항 12에 있어서,
    상기 CPU는 RAM에서 일시적 RAM 메모리의 메모리를 할당 해제하고 상기 할당 해제된 일시적 RAM 메모리 공간의 적어도 일부를 RAM 내의 포터블 코드 모듈로 할당하며, 플래시 ROM에서 대응하는 포터블 코드 모듈을 RAM에 카피하고, 그리고 상기 이용률이 제1 임계값 미만인 경우 RAM 내의 상기 대응하는 포터블 코드 모듈을 가리키도록 상기 펑션 포인터 테이블을 업데이트하도록 동작하고;
    상기 CPU는 플래시 ROM 내의 포터블 코드 모듈을 참조하도록 상기 펑션 포인터 테이블을 변경하고, 상기 이용률이 제2 임계값을 초과하는 경우 RAM에서 연관된 포터블 코드 모듈을 할당 해제하고 상기 연관된 포터블 코드 모듈의 메모리를 일시적 RAM 메모리로 할당하도록 동작하며;
    상기 제1 임계값은 상기 제2 임계값보다 큰 시스템.
  18. 실행 가능한 코드 명령의 동적 할당을 위한 장치로서,
    포터블 코드 모듈 세그먼트, 실행 가능한 고정 코드, 및 부트 코드를 포함하도록 구성된 플래시 메모리;
    플래시 메모리 내의 코드 모듈 세그먼트 또는 RAM 내의 대응하는 코드 모듈 세그먼트에 대한 포인터 엔트리를 갖는 펑션 포인터 테이블을 포함하는 RAM(random access memory);
    CPU 실행에 기초한 코드 이용도를 결정하기 위한 포인터 할당 컨트롤러를 포함하며, 상기 포인터 할당 컨트롤러는 플래시 메모리에서 현재 실행 중인, RAM에서의 실행을 위한 제1 포터블 코드 모듈 및 RAM에서 현재 실행 중인, 플래시에서의 실행을 위한 제2 포터블 코드 모듈을 식별하고;
    상기 포인터 할당 컨트롤러는 연관된 플래시 메모리의 포터블 코드 모듈을 가리키도록 상기 제2 포터블 코드 모듈과 연관된 펑션 포인터 테이블 엔트리를 변경하고, 플래시 메모리에서의 상기 제1 포터블 코드 모듈을 RAM의 세그먼트에 카피하고, 그리고 연관된 RAM의 세그먼트를 가리키도록 상기 제1 포터블 코드 모듈과 연관된 상기 펑션 포인터 테이블을 변경하는 장치.
KR1020227012025A 2019-09-11 2020-09-11 프로세서에서의 전력 소모 감소를 위한 플래시 및 ram 할당을 위한 시스템 및 방법 KR102523300B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962899084P 2019-09-11 2019-09-11
US62/899,084 2019-09-11
US16/992,098 2020-08-13
US16/992,098 US11307779B2 (en) 2019-09-11 2020-08-13 System and method for flash and RAM allocation for reduced power consumption in a processor
PCT/US2020/050590 WO2021051025A1 (en) 2019-09-11 2020-09-11 System and method for flash and ram allocation for reduced power consumption in a processor

Publications (2)

Publication Number Publication Date
KR20220062072A true KR20220062072A (ko) 2022-05-13
KR102523300B1 KR102523300B1 (ko) 2023-04-20

Family

ID=74849327

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227012025A KR102523300B1 (ko) 2019-09-11 2020-09-11 프로세서에서의 전력 소모 감소를 위한 플래시 및 ram 할당을 위한 시스템 및 방법

Country Status (6)

Country Link
US (2) US11307779B2 (ko)
JP (1) JP7194314B2 (ko)
KR (1) KR102523300B1 (ko)
CN (1) CN114730245B (ko)
DE (1) DE112020004284B4 (ko)
WO (1) WO2021051025A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11860795B2 (en) * 2020-02-18 2024-01-02 Arm Limited Device, system, and method of determining memory requirements and tracking memory usage
US11500555B2 (en) 2020-09-04 2022-11-15 Micron Technology, Inc. Volatile memory to non-volatile memory interface for power management
CN113419858B (zh) * 2021-06-30 2024-02-13 明见(厦门)技术有限公司 一种动态内存分配方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100146256A1 (en) * 2000-01-06 2010-06-10 Super Talent Electronics Inc. Mixed-Mode ROM/RAM Booting Using an Integrated Flash Controller with NAND-Flash, RAM, and SD Interfaces
US20160300064A1 (en) * 2015-04-10 2016-10-13 Vixs Systems Inc. Secure processor for soc initialization

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5237669A (en) * 1991-07-15 1993-08-17 Quarterdeck Office Systems, Inc. Memory management method
JP2000293433A (ja) * 1999-04-12 2000-10-20 Nec Niigata Ltd プログラム実行方式
JP2001025053A (ja) * 1999-07-09 2001-01-26 Mitsubishi Electric Corp 携帯電話のメモリシステム
US8296467B2 (en) * 2000-01-06 2012-10-23 Super Talent Electronics Inc. Single-chip flash device with boot code transfer capability
CN1498485A (zh) * 2001-02-06 2004-05-19 ���﹫˾ 动态带宽分配
US8112618B2 (en) * 2004-04-08 2012-02-07 Texas Instruments Incorporated Less-secure processors, integrated circuits, wireless communications apparatus, methods and processes of making
US8452929B2 (en) * 2005-04-21 2013-05-28 Violin Memory Inc. Method and system for storage of data in non-volatile media
WO2007001222A1 (en) * 2005-06-29 2007-01-04 Telefonaktiebolaget Lm Ericsson (Publ) Evaluation of random access preamble codes
US7554855B2 (en) * 2006-12-20 2009-06-30 Mosaid Technologies Incorporated Hybrid solid-state memory system having volatile and non-volatile memory
US7769945B2 (en) * 2007-01-18 2010-08-03 Sandisk Il Ltd. Method and system for facilitating fast wake-up of a flash memory system
US20110113216A1 (en) * 2007-08-31 2011-05-12 Panasonic Corporation Information processing apparatus
US8006108B2 (en) * 2007-11-08 2011-08-23 International Business Machines Corporation Dynamic selection of group and device power limits
US8838928B2 (en) * 2008-02-08 2014-09-16 Freescale Semiconductor, Inc. Memory management and method for allocation using free-list
US8812825B2 (en) * 2011-01-10 2014-08-19 Dell Products L.P. Methods and systems for managing performance and power utilization of a processor employing a fully multithreaded load threshold
US9372524B2 (en) * 2011-12-15 2016-06-21 Intel Corporation Dynamically modifying a power/performance tradeoff based on processor utilization
DE112011106032B4 (de) * 2011-12-22 2022-06-15 Intel Corporation Energieeinsparung durch Speicherkanal-Abschaltung
US9734079B2 (en) * 2013-06-28 2017-08-15 Intel Corporation Hybrid exclusive multi-level memory architecture with memory management
JP6303670B2 (ja) * 2014-03-19 2018-04-04 日本電気株式会社 複数cpuの起動回路、複数cpuの起動方法及び複数cpuの起動回路のプログラム
CN105630407A (zh) * 2015-05-29 2016-06-01 上海磁宇信息科技有限公司 一种计算系统及操作系统调度内存和启动系统的方法
US10430208B2 (en) * 2017-05-02 2019-10-01 Huawei Technologies Co., Ltd. Multi-version asynchronous dynamic software update system and method for applications with multiple threads
CN107391085A (zh) * 2017-06-20 2017-11-24 深圳芯邦科技股份有限公司 一种rom代码补丁运行方法和系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100146256A1 (en) * 2000-01-06 2010-06-10 Super Talent Electronics Inc. Mixed-Mode ROM/RAM Booting Using an Integrated Flash Controller with NAND-Flash, RAM, and SD Interfaces
US20160300064A1 (en) * 2015-04-10 2016-10-13 Vixs Systems Inc. Secure processor for soc initialization

Also Published As

Publication number Publication date
CN114730245A (zh) 2022-07-08
WO2021051025A1 (en) 2021-03-18
US20220206694A1 (en) 2022-06-30
KR102523300B1 (ko) 2023-04-20
US20210072906A1 (en) 2021-03-11
JP7194314B2 (ja) 2022-12-21
CN114730245B (zh) 2023-05-09
US11307779B2 (en) 2022-04-19
DE112020004284T5 (de) 2022-06-09
JP2022537601A (ja) 2022-08-26
US11893249B2 (en) 2024-02-06
DE112020004284B4 (de) 2022-12-08

Similar Documents

Publication Publication Date Title
KR102523300B1 (ko) 프로세서에서의 전력 소모 감소를 위한 플래시 및 ram 할당을 위한 시스템 및 방법
KR100326864B1 (ko) 네트워크통신방법및네트워크시스템
US6442661B1 (en) Self-tuning memory management for computer systems
JP3643318B2 (ja) メモリ圧縮に対するオペレーティング・システム・サポートのための方法
US20130219404A1 (en) Computer System and Working Method Thereof
JP2005092875A (ja) スレッドスケジューリングを使用してデータスループットを向上させるためのシステムおよび方法
JP2004500605A (ja) 仮想記憶システムにおける物理メモリの割り振りをアプリケーションプログラムによって制御するアプリケーション・プログラミング・インターフェイス
WO2020019743A1 (zh) 流量控制方法及装置
US6487630B2 (en) Processor with register stack engine that dynamically spills/fills physical registers to backing store
CN109062826B (zh) 数据传输方法及系统
CN109002364B (zh) 进程间通信的优化方法、电子装置以及可读存储介质
US8966212B2 (en) Memory management method, computer system and computer readable medium
US20140089624A1 (en) Cooperation of hoarding memory allocators in a multi-process system
CN111857992A (zh) 一种Radosgw模块中线程资源分配方法和装置
CN112306693B (zh) 数据包的处理方法和设备
US6807588B2 (en) Method and apparatus for maintaining order in a queue by combining entry weights and queue weights
CN113010453A (zh) 一种内存管理的方法、系统、设备及可读存储介质
US7434021B2 (en) Memory allocation in a multi-processor system
US6985970B2 (en) Data transfer with implicit notification
JP2008033838A (ja) メモリ管理装置及びメモリ管理方法
US7853771B2 (en) Page allocation management for virtual memory
US20080126625A1 (en) Just-in-time buffer allocation for use in event completion style input/output models
KR20020038195A (ko) 휴대용 정보 기기에 다중 처리 운영 체제를 탑재한 경우의메모리 관리 기법
WO2016006228A1 (ja) 仮想化システムおよび仮想化方法
CN111858392A (zh) 一种内存空间的分配方法及装置、存储介质、电子装置

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
N231 Notification of change of applicant