KR20190018434A - 계산 유닛 작동 방법 - Google Patents

계산 유닛 작동 방법 Download PDF

Info

Publication number
KR20190018434A
KR20190018434A KR1020187036172A KR20187036172A KR20190018434A KR 20190018434 A KR20190018434 A KR 20190018434A KR 1020187036172 A KR1020187036172 A KR 1020187036172A KR 20187036172 A KR20187036172 A KR 20187036172A KR 20190018434 A KR20190018434 A KR 20190018434A
Authority
KR
South Korea
Prior art keywords
program
calculation unit
local memory
unit
memory
Prior art date
Application number
KR1020187036172A
Other languages
English (en)
Other versions
KR102339278B1 (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 KR20190018434A publication Critical patent/KR20190018434A/ko
Application granted granted Critical
Publication of KR102339278B1 publication Critical patent/KR102339278B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • G06F9/3455Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)
  • Multi Processors (AREA)
  • Memory System (AREA)
  • Microcomputers (AREA)

Abstract

본 발명은 계산 유닛(10)을 작동하기 위한 방법에 관한 것으로, 상기 계산 유닛(10)은 하나 이상의 프로세서 코어(12)와, 계산 유닛(10)과 관련한 로컬 메모리(14)를 포함하고, 하나 이상의 프로세서 코어(12)에 의해 계산 유닛(10)을 위한 컴퓨터 프로그램(24)의 복수의 프로그램 기능(22)이 실행된다. 상기 방법은 하기 단계들: 향후 실행 시점(t1", t2", t3")에 실행될 프로그램 기능(22)에 속하는 모든 프로그램 명령을 결정하는 단계(102), 및 결정된 프로그램 명령(26)을 상기 실행 시점(t1", t2", t3") 이전에 로컬 메모리(14)에 제공하는 단계(104)를 특징으로 한다.

Description

계산 유닛 작동 방법
본 발명은 청구항 제1항의 전제부에 따른 방법, 그리고 대등의 특허 청구항들에 따른 계산 유닛, 전송 유닛, 및 개루프 및/또는 폐루프 제어 장치에 관한 것이다.
데이터 메모리에서 데이터 및/또는 프로그램 명령을 판독할 수 있는 하나 또는 복수의 프로세서 또는 프로세서 코어를 구비하고, 그럼으로써 각각의 컴퓨터 프로그램을 실행할 수 있는 계산 유닛들이 시중에 공지되어 있다.
본 발명의 기초가 되는 과제는 청구항 제1항에 따른 방법을 통해, 그리고 대등의 청구항들에 따른 계산 유닛, 전송 유닛, 및 개루프 및/또는 폐루프 제어 유닛을 통해 해결된다. 바람직한 개선예들은 종속 청구항들에 명시되어 있다. 또한, 본 발명을 위해 중요한 특징들은 추가로 하기 기재내용 및 도면들에도 명시되며, 상기 특징들은, 이에 대해 재차 명시되지 않더라도, 독자적으로도, 서로 상이한 조합들로서도 본 발명을 위해 중요할 수 있다.
본 발명은 계산 유닛을 작동하기 위한 방법에 관한 것으로, 상기 계산 유닛은 하나 이상의 프로세서 코어와, 계산 유닛과 관련한 로컬 메모리를 포함하고, 하나 이상의 프로세서 코어에 의해 계산 유닛을 위한 컴퓨터 프로그램의 복수의 프로그램 기능이 실행된다. 이 경우, 상기 방법은 하기 단계들을 포함한다.
- 향후 실행 시점에 실행될 프로그램 기능에 속하는 프로그램 명령, 특히 모든 프로그램 명령을 결정하는 단계; 및
- 실행 시점 전에 로컬 메모리에 결정된 프로그램 명령을 제공하는 단계.
바람직하게는(그러나 강제적이지 않은 방식으로), 프로그램 명령을 결정하는 단계는, 계속하여 하기에서 훨씬 더 상세하게 설명되는 것처럼, 시간상 컴퓨터 프로그램의 실행 시간 이전에 수행된다.
예컨대 로컬 메모리는 계산 유닛의 내부 전역 메모리이고, 그리고/또는 계산 유닛의 외부 메모리이고, 그리고/또는 프로세서 코어의 로컬 메모리이다. 상기 메모리는 예컨대 RAM 메모리, 즉, 랜덤 액세스 메모리(Random Access Memory)"이다.
계산 유닛은 컴퓨터 프로그램의 실행을 위한 임의의 장치, 예컨대 그 주변 구성요소들을 포함한 프로세서, 또는 마이크로컨트롤러 등일 수 있다. 계산 유닛은 단일 집적 반도체 회로에 의해 또는 복수의 집적 반도체 회로에 의해 구현될 수 있다. 프로세서 코어는 바람직하게 처리 코어이다.
상기 컴퓨터 프로그램은 하나 또는 복수의 프로그램 기능을 포함할 수 있고, 각각의 프로그램 기능은 하나 또는 복수의 프로그램 명령(instruction)를 포함할 수 있다. 영어 사용 시, "프로그램 기능"은 경우에 따라 "Runnable(실행 가능)"의 개념으로 특징지어질 수 있다. 프로그램 기능들은 스케줄링 가능한 프로그램 기능 및/또는 스케줄링 불가능한 프로그램 기능을 포함할 수 있다.
본원의 제안되는 방법은, 프로그램 기능들 또는 프로그램 명령의 실행 시, 특히 스케줄링 가능한 프로그램 기능의 경우, 실행을 위해 필요한 프로그램 명령의 실행 전에 프로세서 코어의 로컬 메모리에 제공됨으로써 대기 시간을 방지할 수 있다.
간단히 말하면, 각각 실행 대기중인 다음 프로그램 기능에 대한 정보가 결정되고, 각각 필요한 프로그램 명령을 (최적으로) 로컬 메모리에 제공하기 위해 이용된다. 상기 정보는 프로그램 기능들의 주기적인 실행과 관련한 정적 스케줄링(static scheduling)을 통해, 그리고/또는 프로그램 분석(소프트웨어 분석)을 통해 결정될 수 있다. 즉, 이미 실행 전에 각각의 프로그램 기능들의 순서를 알고 있는 경우, 상기 프로그램 기능들은 로컬 메모리 내에 준비되어 (최적으로) 배열될 수 있다. 그 결과, 각각의 프로세서 코어가 시스템 메모리에서(예컨대 소위 "플래시 메모리", 또는 로컬 메모리보다 더 많은 대기시간을 갖는 다른 메모리에서) 프로그램 명령을 하나씩 로딩해야 할 필요가 없어진다. 특히, 그 결과, 프로세서 코어가 경우에 따라 프로그램 기능 또는 프로그램 명령을 실행할 수도 있지만, 상기 프로그램 기능 또는 프로그램 명령이 아직 로딩되어 있지 않아서 프로세서 코어가 대기해야 할 확률이 바람직하게 감소할 수 있다. 이러한 시나리오는 영어의 "instruction stall(명령 스톨)" 개념을 특징으로 한다.
또한, 간단히 말하면, 방법에 따라서 각각의 향후 실행에 대한 시스템 관련 지식이 기능 레벨들에서 이용될 수 있고, 그에 상응하게 하나의 프로그램 기능에 속하는, 바람직하게는 모든, 프로그램 명령이 연역적으로(a priori) 제공될 수 있다고도 할 수 있다. 상기 "시스템 관련 지식"은 예컨대 엔진 제어 등에서 적용될 수 있는 것과 같은, 예컨대 소위 "임베딩 시스템(embedded system)"과 관련한, 예컨대 "도메인 특정 지식(domain specific knowledge)"에 상응한다.
또한, 간단히 말하면, 예측 가능한(특히 스케줄링 가능한) 프로그램 기능들을 위한 프로그램 명령의 제공은 다양한 유형으로 수행 가능하다고 할 수 있다. 이는 계속하여 하기에서 훨씬 더 상세히 설명된다.
또한, 간단히 말하면, 프로그램 기능들의 실행을 위한 예측이 임베딩 시스템 내에서 실행되는 모든 프로그램 기능에 대해 가능하지는 않은 경우가 많다. 이는 예컨대, 경우에 따라서는 전술한 방식으로 연역적으로 예측하고 스케줄링하기가 곤란한 소위 "인터럽트 핸들러(Interrupt-Handler)" 및/또는 라이브러리 기능들(library function) 및/또는 작동 시스템의 기능들에 관계될 수 있다.
일 구현예에서, 이를 위해 혼합 모드가 제공된다. 요컨대, 스케줄링 가능한 프로그램 기능들은 로컬 메모리로부터 실행되며, 스케줄링 불가능한 프로그램 기능들은 종래 방식으로 실행되어 경우에 따라 대기시간이 비교적 긴 코드 메모리로부터 판독된다.
본 발명은, 컴퓨터 프로그램들의 처리를 특징짓는, 계산 유닛 또는 프로세서 코어의 이용 효율이 증가될 수 있다는 장점을 갖는다. 예컨대 마이크로컨트롤러의 이용 효율이 증가될 수 있다. 특히, 프로그램 기능들의 실행 동안, 상대적으로 더 높은 IPC(Instructions per Cycle), 즉 "하나의 클록 주기에서 실행 가능한 명령(프로그램 명령)의 개수"가 구현될 수 있다.
본 발명의 또 다른 장점은, 특히 스케줄링 가능한 프로그램 기능들의 실행 시, 캐시 메모리가 적어도 부분적으로 또는 일시적으로 불필요할 수 있다는 점에 있다. 그 결과, 캐시 메모리의 효율이 증가될 수 있으며, 예컨대 캐시 메모리 상에 존재하는 정보들은 상대적으로 더 뜸하게 덮어쓰기되면 된다[더 적은 "대체(displacement)"]. 마찬가지로, 캐시 메모리를 더 작게 설계할 수도 있으며, 그럼으로써 비용이 절약될 수 있다. 캐시 메모리는, 예컨대 비교적 느린 시스템 메모리에 대한 반복적인 액세스 또는 경우에 따라 필요한 재계산을 방지할 수 있는 비교적 빠른 버퍼 메모리에 상응한다. 캐시 메모리는 통상 전역 메모리보다 더 적은 대기시간을 갖기 때문에, 상기 캐시 메모리는 일반적으로 예컨대 로컬 메모리와 같은 (종래의) 로컬 메모리보다 더 비싸다. 전체적으로, 본 발명에 따른 원리의 적용은, 그로부터 알려진 단점들(예: 명령 스톨)이 발생하지 않으면서, 상대적으로 느리면서도 그로 인해 유리한 (예컨대 플래시 메모리와 같은) 코드 메모리의 이용도 가능하게 한다.
본원 방법의 일 구현예에서, 결정된 프로그램 명령은 실행될 프로그램 기능에 따른 순서로 계산 유닛의 로컬 메모리에 제공된다. 그 결과, 프로그램 실행 동안 전체적으로 높은 효율이 바람직하게 구현될 수 있다.
또 다른 구현예에서, 복수의 다양한 프로그램 기능을 위해, 각각 관련 프로그램 기능에 속하는 모든 프로그램 명령이 각각의 실행 시점 이전에 로컬 메모리에 제공된다. 그 결과, 프로그램 기능들의 처리 시 있을 수 있는 지연이 바람직하게 방지될 수 있다.
또 다른 구현예에서, 로컬 메모리는 계산 유닛의 전역 메모리이고, 그리고/또는 하나 이상의 프로세서 코어의 로컬 메모리이다. 그 결과, 바람직하게는 각각의 대기시간이 비교적 짧게 유지될 수 있다. 예컨대 전역 메모리는, 계산 유닛의 복수의 프로세서 코어, 즉, 2개 이상의 프로세서 코어가 액세스할 수 있도록 형성된다. 일 구현예에서, 전역 메모리는 계산 유닛의 외부 또는 내부 RAM 메모리이다.
또 다른 구현예에서, 로컬 메모리 내에 결정된 프로그램 명령을 제공하기 위해 하나 이상의 링 버퍼(ring memory)가 제공되며, 특히 링 버퍼는 프로그램 실행을 위해 주기적으로 계산 유닛에 의해 판독되고, 이 경우 링 버퍼는, 주기 중에 이미 계산 유닛에 의해 판독되었던 링 버퍼의 주소에서, 결정되어 시간상 후행하는 추가 프로그램 명령으로 주기적으로 기록된다. 예컨대 링 버퍼는 로컬 메모리의 주소 영역에 배치되며, 방법에 따라 링 버퍼에 액세스하기 위해 주기적으로 변경될 수 있는 하나 이상의 주소 포인터가 각각 제공된다. 그 결과, 결정된 프로그램 명령의 제공 및/또는 실행이 매우 효율적으로 수행될 수 있다.
예컨대 프로세서 코어는 연속해서 링 버퍼로부터 실행될 프로그램 기능들을 실행하는 반면, 또 다른 유닛은 링 버퍼를 적합한 방식으로 채운다. 이에 대해서는 계속하여 하기에 기술되는 전송 유닛을 참조한다. 로컬 메모리의 적어도 일부분을 링 버퍼로서 구현하거나 구성하는 점이 본원의 방법을 위해 매우 바람직할 수 있지만, 로컬 메모리를 위한 또 다른 구현 형태 또는 구성 형태도 방법에 따라서 이용될 수 있다.
또 다른 구현예에서, 계산 유닛에서 주기적으로 복수의 프로그램 블록( "tasks")이 실행되며, 특히 상이한 프로그램 블록들에 각각 상이한 주기 시간이 할당되고, 각각의 프로그램 블록은 기설정 순서로 실행되는 컴퓨터 프로그램의 복수의 프로그램 기능을 포함하며, 상이한 프로그램 블록들의 결정된 프로그램 명령의 제공을 위해 각각 별도의 링 버퍼가 제공된다. 예컨대 자동차의 엔진 제어를 위한 개루프 및/또는 폐루프 제어 장치에서, 프로그램 블록들은 1㎳(밀리초), 2㎳, 5㎳, 10㎳ 등의 주기 시간을 가질 수 있다. 그에 상응하게 바람직하게는, 주어진 매 주기 시간 동안 고유 링 버퍼를 이용할 수 있으며, 그럼으로써 계산 유닛의 작동 시 효율이 개선될 수 있다.
또 다른 구현예에서, 결정된 프로그램 명령의 제공은, 바람직하게 계산 유닛으로부터 독립된 전송 유닛이 결정된 프로그램 명령을 소스 메모리(source memory)로부터 로컬 메모리로 복사함으로써 수행된다. 예컨대 소스 메모리는 계산 유닛과 관련하여 외부에 있는 외부 플래시 메모리이다. 전송 유닛의 이용을 통해 본원 방법은 바람직하게 촉진될 수 있고 각각의 프로세서 코어의 부하가 경감될 수 있다.
또한, 전송 유닛은 추가 계산 유닛, 및/또는 상기 계산 유닛의 추가 프로세서 코어, 및/또는 직접 메모리 액세스 제어 장치를 포함할 수 있다. 그 결과, 전송 유닛은 바람직하게 간단하게 효율적으로 구현될 수 있다. 매우 바람직한 구현예에서, 직접 메모리 액세스 제어 장치는 순수 하드웨어 회로로서 구현된다. 직접 메모리 액세스 제어 장치는 영어로 "DMA-Controller"(DMA: "Direct Memory Access")라고도 지칭된다. 그 대안으로, 직접 메모리 액세스 제어 장치는 소프트웨어에 의해 실현될 수 있거나, 또는 하드웨어 및 소프트웨어에 의해 혼합되어 실현될 수 있다. 또 다른 구현예에서, 전송 유닛은 전용(응용 주문형) 하드웨어 회로로서 구현된다. 그 결과, 코드 변환(code transformation), 및/또는 주소 위치와 무관한 프로그램 코드("position independent code")를 이용하는 것이 특히 간단할 수 있다.
또 다른 구현예에서, 프로그램 기능에 속하는 모든 프로그램 명령을 결정하는 단계는, 프로그램 기능들의 주기적인 실행의 스케줄링, 바람직하게는 정적 스케줄링을 평가하는 단계, 및/또는 컴퓨터 프로그램의 적어도 일부분의 소프트웨어 분석 단계를 포함한다. 그럼으로써, 도래하는 시간 간격 동안 실행될 복수의 프로그램 기능 중에서 각각 정규 실행될 프로그램 기능들이 프로그램 기능들의 선형 리스트(linear list)의 이용 하에 정적 스케줄링에 의해 바람직하게 결정될 수 있고, 그리고/또는 실행될 나머지 프로그램 기능들이 분석, 특히 소프트웨어 분석에 의해 바람직하게 결정될 수 있다. 이는, 계속해서 상술한 시스템 관련 지식 또는 도메인 고유 지식도 특징짓는다.
또 다른 구현예에서, 프로그램 기능들의 복수의 선형 리스트가 결정되고, 컴퓨터 프로그램 또는 프로그램 블록들의 실행 시간 동안에, 이 시간 동안 결정되는 조건들을 이용하여, 상기 복수의 선형 리스트에서 처리를 위한 프로그램 기능들의 개별 리스트가 선택된다. 상기 "준정적 스케줄링(quasi-static scheduling)"의 선택적 이용을 통해, 본원 방법이 추가로 개선될 수 있다.
일 구현예에서, 컴퓨터 프로그램의 실행 시간을 위해, 실행을 위해 제공되는 프로그램 기능들의 하나 이상의 시퀀스가 결정된다. 그 다음, 상기 시퀀스는 전술한 선형 리스트들과 필적하는 방식으로 본원 방법을 위해 이용될 수 있다.
또 다른 구현예에서, 프로그램 기능들은, 그 실행이 각각 향후 실행 시점을 위해 스케줄링될 수 있는 제1 그룹과, 그 실행이 각각 향후 실행 시점을 위해 스케줄링될 수 없는 제2 그룹을 포함하며, 제1 그룹의 프로그램 기능들은 적어도 부분적으로, 예컨대 링 버퍼로서 조직된 메모리에 의해 실행되며, 제2 그룹의 프로그램 기능들은 종래의 캐시 메모리 또는 종래의 코드 메모리에 의해 실행된다. 그 결과, 본원의 방법은, 계산 유닛 및/또는 컴퓨터 프로그램의 각각의 작동 조건들에 바람직하게 매칭될 수 있다.
또 다른 구현예에서, 전송 유닛은 계산 유닛의 실행 시작 시, 그리고/또는 계산 유닛의 실행 시간 동안 프로그래밍되는데, 특히 전송 유닛이 실행 시점 이전에 로컬 메모리에 각각 필요한 순서로 결정된 프로그램 명령을 제공하는 단계를 실행할 수 있는 방식으로 프로그래밍된다.
또한, 전송 유닛의 프로그래밍은 각각 하나 이상의 소스 주소 및 하나 이상의 타깃 주소; 그리고 로컬 메모리에 제공될, 해당 프로그램 기능들의 다수의 관련 데이터 블록;을 포함할 수 있다. 그 결과, 전송 유닛의 동작이 바람직하게 최적화될 수 있다. 데이터 블록들은 하나 이상의 프로그램 기능의 결정된 프로그램 명령의 각각의 개수를 포함한다. 이에 대한 제1 변형예에서, 전송 유닛은, 계산 유닛 또는 프로세서 코어 또는 임베딩 시스템의 시작 시 1회 프로그래밍되고, 그리고/또는 구성된다. 이는, 이에 대한 제2 변형예에서, 시작 후에, 즉, 실행 시간 동안에 적어도 1회 수행된다.
또한, 전송 유닛은, 각각의 프로그램 명령을 결정하기 위해, 그리고/또는 결정된 프로그램 명령을 로컬 메모리에 제공하기 위해, 타이머("timer")에 의해 시간 제어될 수 있다. 그 결과, 본원 방법의 시간 시퀀스가 개선될 수 있다.
또한, 전송 유닛은, 각각의 프로그램 명령을 결정하기 위해, 그리고/또는 결정된 프로그램 명령을 로컬 메모리에 제공하기 위해, 프로그램 블록들을 실행하는 계산 유닛(또는 프로세서 코어)에 의해, 그리고/또는 그와 다른 계산 유닛(또는 프로세서 코어)에 의해 제어된다. 그 결과, 전송 유닛의 바람직한 제어가 가능해진다. 일 구현예에서, 상기 제어는 인터럽트에 의해 수행된다.
또한, 전송 유닛의 제어는, 로컬 메모리 또는 링 버퍼의 점유율, 및/또는 계산 유닛 또는 프로세서 코어의 시스템 상태, 및/또는 계산 유닛 또는 프로세서 코어의 주변 유닛들의 시스템 상태에 따라서 수행될 수 있다. 그 결과, 로컬 메모리는 바람직하면서도 효율적으로 이용될 수 있다.
또한, 링 버퍼에 결정된 프로그램 명령을 제공하는 단계는, 각각 정확히 하나의 프로그램 기능을 포함하는 데이터 블록들이 이용되면서 수행될 수 있다. 그 결과, 본원의 방법은 추가로 개선될 수 있다. 계속하여 상기에서 이미 설명한 것처럼, 각각의 프로그램 기능은 하나 또는 복수의 프로그램 명령(instruction)을 포함할 수 있다.
또한, 링 버퍼에 결정된 프로그램 명령을 제공하는 단계는, 각각의 프로그램 기능으로부터 독립적으로, 일정한 값을 갖는 데이터 블록들의 이용 하에 수행될 수 있다. 그 결과, 본원의 방법은 바람직하게 간소화될 수 있다. 경우에 따라서, 상기 데이터 블록이 하나보다 많은 프로그램 기능을 포함하거나, 전체 데이터 블록이 프로그램 명령을 포함하지 않는다. 경우에 따라서, 비록 프로그램 기능들이 전형적으로 상이한 데이터 길이를 갖더라도, 프로그램 기능들의 잇따른 전송이 유의미할 수 있다. 이 경우, 예컨대 하드웨어 아키텍처, 및/또는 버스 시스템의 대역폭, 및/또는 로컬 메모리의 크기에 따라 각각 적합한 변형예의 선택이 수행될 수 있다.
또한, 로컬 메모리 또는 링 버퍼에 제공될 프로그램 명령의 주소 지정 또는 주소들은 컴파일러(compiler) 및/또는 링커(linker)에 의해 관련된 프로그램 기능들의 특성들에 따라서 매칭될 수 있다. 그 결과, 본원의 방법은 실질적으로 프로그램 코드의 특성들로부터 독립적으로 실행될 수 있다.
그 결과, 바람직하게는, 로컬 메모리에 결정된 프로그램 명령을 제공하는 단계가 강제적으로 각각의 프로그램 기능을 위해 적합한 주소 영역에서 수행되지 않는 상황이 고려될 수 있다. 그러므로 바람직하게 전송 유닛은, (각각의 고유한) 프로그램 기능에 속하는 프로그램 명령을, 실행측 프로세서 코어의 로컬 메모리 내 마찬가지로 고유한("동일한") 주소로 전송할 수 있다. 그 다음, 기술한 것처럼, 프로그램 명령의 주소 지정 또는 주소들은 컴파일러/링커에 의해 스케줄링된 버퍼링에 상응하게 매칭될 수 있다.
컴파일러/링커를 이용한 프로그램 명령("이진 프로그램 코드")의 정적 매칭에 대한 대안으로 또는 그 보충안으로, 메모리 관리 유닛(MMU: "Memory Management Unit")의 이용이 제공될 수 있다. 또 다른 변형예에서, 프로그램 기능들 또는 프로그램 명령은 주소 독립 코드("position independent code")에 의해 실행된다.
또한, 전송 유닛에 의해, 로컬 메모리에 제공될 프로그램 기능들에서, 그리고/또는 프로그램 명령에서 코드 변환 또는 주소 변환이 실행될 수 있다. 그 결과, 상기 절차들은 바람직하게 전송 유닛에 의해서도 수행될 수 있으며, 이 경우 경비 및 비용이 절약될 수 있다.
또 다른 구현예에서, 프로그램 명령을 결정하는 단계는, 시간상 컴퓨터 프로그램의 실행 시간 이전에, 특히 컴퓨터 프로그램 및/또는 이 컴퓨터 프로그램을 포함하는 프로그램 시스템의 개발 시점("설계 시점")에 수행되며, 경우에 따라 훨씬 더 나중에 발생하는 컴퓨터 프로그램의 실행 시간에 처음으로 상기 결정된 프로그램 명령을 제공하는 단계가 수행된다. 바람직하게 (그러나 강제적이지 않은 방식으로) 프로그램 명령을 결정하는 단계는, 계산 유닛과 다른 유닛 또는 그와 다른 시스템을 통해 수행된다. 그 결과, 프로그램 명령을 결정하는 단계는 바람직하게는 프로그램 명령을 제공하는 단계로부터 분리될 수 있다. 특히 그 결과, 프로그램 명령을 결정하는 단계를 단 1회만 수행하는 것이 가능할 수 있으며, 그럼으로써 장치 비용 및/또는 계산 비용이 경우에 따라 감소할 수 있다.
또한, 본 발명은 하나 이상의 프로세서 코어와, 계산 유닛과 관련한 로컬 메모리를 포함하는 계산 유닛에 관한 것으로, 상기 계산 유닛은, 하나 이상의 프로세서 코어를 이용하여 계산 유닛을 위한 컴퓨터 프로그램의 복수의 프로그램 기능을 실행하도록 형성되며, 계산 유닛은 추가로 하기 단계들을 실행하도록 형성된다.
- 향후 실행 시점에 실행될 프로그램 기능에 속하는 프로그램 명령, 특히 모든 프로그램 명령을 결정하는 단계; 및
- 상기 결정된 프로그램 명령을 실행 시점 이전에 로컬 메모리에 제공하는 단계.
이에 대한 일 구현예에서, 로컬 메모리는 계산 유닛의 전역 메모리이고, 그리고/또는 하나 이상의 프로세서 코어의 로컬 메모리이다.
이에 대한 또 다른 구현예에서, 계산 유닛은 전송 유닛을 포함하며, 이 전송 유닛은, 전송 유닛 자신이 결정된 프로그램 명령을 소스 메모리로부터 로컬 메모리에 복사함으로써, 상기 결정된 프로그램 명령을 제공하는 단계를 실행하도록 형성된다.
또 다른 구현예에서, 전송 유닛은, 결정된 프로그램 명령을 로컬 메모리에 제공하는 단계를 계산 유닛 및/또는 프로세서 코어에 시그널링하도록 형성된다. 그 결과, 그와 동시에 하나의 가능한 방법 단계가 기재된다. 그 보충안으로, 전송 유닛은, 계산 유닛 및/또는 프로세서 코어로, 로컬 메모리 내 결정된 프로그램 명령 및/또는 프로그램 기능들의 각각의 메모리 주소들도 전송할 수 있다. 그 결과, 본원의 계산 유닛의 동작이 개선되고 더 안전해질 수 있다.
본 발명에 따른 계산 유닛 및 이를 위해 제안되는 구현예들에 대해, 계속하여 상기에서 본 발명에 따른 방법에 대해 이미 기술한 것과 같은 필적하는 장점들이 달성된다.
또한, 본 발명은 특히 자동차를 위한 개루프 및/또는 폐루프 제어 장치에도 관한 것이며, 상기 개루프 및/또는 폐루프 제어 장치는 기술한 구현예들 중 어느 하나에 따른 계산 유닛을 포함한다. 그 결과, 자동차의 개루프 및/또는 폐루프 제어가 바람직하게 개선될 수 있다.
또한, 본 발명은, 컴퓨터 프로그램의 프로그램 기능에 속하는 프로그램 명령, 특히 모든 프로그램 명령을 결정하기 위한 시스템에 관한 것이며, 상기 프로그램 기능은 향후 실행 시점에 실행되고, 상기 시스템은, 프로그램 명령을 결정하는 단계를 시간상 컴퓨터 프로그램의 실행 시간 이전에, 특히 컴퓨터 프로그램 및/또는 이 컴퓨터 프로그램을 포함하는 프로그램 시스템의 개발 시점에 수행하도록 형성된다. 본 발명에 따른 시스템에 의해, 프로그램 명령을 결정하는 단계는 바람직하게 프로그램 명령을 제공하는 단계로부터 분리될 수 있다. 특히, 그 결과, 프로그램 명령을 결정하는 단계를 단 1회만 수행하는 점이 가능해질 수 있으며, 그럼으로써 장치 비용 및/또는 계산 비용은 경우에 따라 감소할 수 있다.
또한, 본 발명은 계산 유닛 또는 상기 계산 유닛을 위한 전송 유닛에 관한 것이며, 계산 유닛은 하나 이상의 프로세서 코어와, 상기 계산 유닛과 관련한 로컬 메모리를 포함하고, 계산 유닛은, 하나 이상의 프로세서 코어를 이용하여, 계산 유닛을 위한 컴퓨터 프로그램의 복수의 프로그램 기능을 실행하도록 형성된다. 이 경우, 상기 전송 유닛은, 향후 실행 시점에 계산 유닛을 통해 실행되는 프로그램 기능에 속하면서, 바람직하게는 전송 유닛으로부터 독립된 유닛을 통해 결정되는 프로그램 명령, 특히 모든 프로그램 명령을, 소스 메모리로부터 로컬 메모리로 복사하도록 형성된다. 예컨대 소스 메모리는 계산 유닛과 관련하여 외부에 있는 외부 플래시 메모리이다. 전송 유닛을 통해 컴퓨터 프로그램이 매우 바람직하게 처리될 수 있고, 계산 유닛 또는 각각의 프로세서 코어의 부하가 바람직하게 경감될 수 있다.
이에 대한 일 구현예에서, 프로그램 명령은 프로그램 기능들의 주기적인 실행의 스케줄링, 바람직하게는 정적 스케줄링을 평가하는 단계, 및/또는 컴퓨터 프로그램의 적어도 일부분의 소프트웨어 분석 단계에 의해 결정되었다. 상응하는 데이터는, 계산 유닛에서 컴퓨터 프로그램의 실행 전에, 또는 동적으로도, 즉, 계산 유닛에서 컴퓨터 프로그램의 실행 중에 전송 유닛으로 제공될 수 있다. 예컨대 상기 데이터는 컴퓨터 프로그램에 대한 부가물로서 제공될 수 있다.
또 다른 구현예에서, 전송 유닛은 직접 메모리 액세스 제어 장치("DMA-Controller", "Direct Memory access") 및/또는 프로세서 코어, 예컨대 계산 유닛의 추가 프로세서 코어, 및/또는 프로세서 코어 및 직접 메모리 액세스 제어 장치로부터 독립된 하드웨어 유닛, 예컨대 ASIC("Application Specific Integrated Circuit"), 또는 그 일부분, 또는 FPGA("Field Programmable Gate Array"), 또는 그 일부분을 포함한다. 전송 유닛의 구현예들은 계속하여 앞서 계산 유닛을 작동하기 위한 방법에서 이미 상세하게 기술하였다. 필적하는 장점들이 달성된다.
하기에서는, 본 발명의 바람직한 실시형태들이 도면을 참조하여 설명된다.
도 1은 계산 유닛을 포함하는 간소화된 블록선도이다.
도 2는 도 1의 계산 유닛의 로컬 메모리에 프로그램 명령을 제공하기 위한 개략도이다.
도 3은 도 1의 계산 유닛의 로컬 메모리의 일 실시형태를 포함하는 간소화된 개략도이다.
도 4는 계산 유닛을 작동하기 위한 방법에 대한 제1 흐름도이다.
도 5는 프로그램 명령을 결정하기 위한 시스템; 및 계산 유닛을 포함한 제어 장치;를 포함하는 개략도이다.
도 6은 계산 유닛을 작동하기 위한 방법에 대한 제2 흐름도이다.
도 7은 도 5와 관련하여 확장된 개략도이다.
모든 도면에서, 기능이 동등한 요소들 및 변수들에 대해 서로 상이한 실시형태들에서도 동일한 도면부호가 사용된다.
도 1에는, 본 실시예에서 하나 이상의 프로세서 코어(12)를 구비한 계산 유닛(10)을 포함하는 블록선도가 도시되어 있다. 프로세서 코어(12)는 로컬 메모리(14)와 연결되며, 로컬 메모리(14)는 버스 시스템(16)과 연결된다. 한 바람직한 실시형태에서, 버스 시스템(16)은 예컨대 마이크로컨트롤러에서 이용되는 것과 같은 복수의 데이터 라인 및 주소 라인을 가진 병렬 버스 시스템(16)이다.
이 경우, 계산 유닛(10)은, 하나 이상의 프로세서 코어(12)를 이용하여, 계산 유닛(10)을 위한 컴퓨터 프로그램(24)(도 2 참조)의 복수의 프로그램 기능(22)(도 2 참조)을 실행하도록 형성되며, 계산 유닛(10)은 추가로 하기 단계들을 실행하도록 형성된다.
- 향후 실행 시점(t1", t2", t3")(도 2 참조)에 실행될 프로그램 기능(22)에 속하는 프로그램 명령(26), 특히 모든 프로그램 명령을 결정하는 단계(102)(도 2 또는 도 4 참조); 및
- 상기 결정된 프로그램 명령(26)을 실행 시점(t1", t2", t3") 이전에 로컬 메모리(14)에 제공하는 단계(104)(도 2 또는 도 4 참조).
한 바람직한 실시형태에서, 결정하는 단계(102)는, 컴퓨터 프로그램(24), 및/또는 컴퓨터 프로그램(24)을 포함하는 프로그램 시스템의 개발 시점("설계 시점") 동안 수행된다. 이 경우, 결정하는 단계(102)는 바람직하게는 계산 유닛(10)을 통해서가 아니라, 예컨대 계산 유닛(10)으로부터 분리된 시스템(200)을 통해 수행된다(계속하여 하기에서 도 5 참조).
또 다른 실시형태에서, 결정하는 단계(102)는 컴퓨터 프로그램(24)의 실행 시간 동안 수행된다. 이 경우, 결정하는 단계(102)는 분리된 시스템(200)을 통해 그리고/또는 계산 유닛(10)을 통해, 그리고/또는 계산 유닛(10)에 인접하며 필적하는 계산 유닛(10')(미도시) 등을 통해 수행될 수 있다.
일 실시형태에서, 로컬 메모리(14)는 계산 유닛(10)(도 1)의 전역 메모리이고, 그리고/또는 하나 이상의 프로세서 코어(12)의 로컬 메모리이다. 예컨대 전역 메모리는, 계산 유닛(10)의 복수의 프로세서 코어(12)가 액세스할 수 있도록 형성된다.
본 실시예에서, 계산 유닛(10)은 전송 유닛(20)을 포함하며, 이 전송 유닛은, 전송 유닛(20) 자신이 결정된 프로그램 명령(26)을 소스 메모리(18)로부터 로컬 메모리(14)로 복사함으로써, 결정된 프로그램 명령(26)을 제공하는 단계(104)를 실행하도록 형성된다. 소스 메모리(18)는 예컨대 소위 "플래시 메모리"로서 구현된다. 소스 메모리(18) 및 전송 유닛(20)은 버스 시스템(16)에 연결된다. 전송 유닛(20)은 계속하여 하기에서 더 상세하게 설명된다. 계산 유닛(10)의 또 다른 가능한 주변 요소들은 도 1에 함께 도시되어 있지 않다.
일 실시형태에서 전송 유닛(20)은, 결정된 프로그램 명령(26)을 로컬 메모리(14)에 제공하는 단계(104)를 계산 유닛(10) 및/또는 프로세서 코어(12)에 시그널링하도록 형성된다.
예컨대 로컬 메모리(14)는 계산 유닛(10)의 내부 전역 메모리이고, 그리고/또는 계산 유닛(10)의 외부 메모리이고, 그리고/또는 프로세서 코어(12)의 로컬 메모리(14)이다. 로컬 메모리(14)는 예컨대 RAM 메모리, 즉, "랜덤 액세스 메모리(Random Access Memory)"이다.
예컨대 도 1에 따른 계산 유닛(10)은, 예컨대 자동차용으로 구현된 것과 같은 개루프 및/또는 폐루프 제어 장치(미도시)의 요소이다.
계산 유닛(10)의 일 실시형태에서, 하나 이상의 링 버퍼(14')(도 2 참조)가 로컬 메모리(14) 내에 결정된 프로그램 명령(26)의 제공을 위해 구성되고, 링 버퍼(14')는 프로그램 실행을 위해 주기적으로 계산 유닛(10)에 의해 판독되며, 이때 링 버퍼(14')는 주기 중에 이미 계산 유닛(10)에 의해 판독되었던 링 버퍼(14')의 주소들 상에서, 추가로 결정되어 시간상 후행하는 프로그램 명령(26)으로 주기적으로 기록된다. 예컨대 링 버퍼(14')는 로컬 메모리(14)의 주소 영역에 배열되며, 링 버퍼(14')에 액세스하기 위해 주기적으로 변경될 수 있는 하나 이상의 포인터가 각각 제공된다. 이에 대해 도 2에 일 실시예가 도시되어 있다.
전체적으로, 도 2에는, 컴퓨터 프로그램(24)의 프로그램 기능들(22)의 시퀀스에 대한 개략도가 도시되어 있다. 이를 위해, 도 2에서 상부 영역에는 소스 메모리(18) 및 제1 시간 축(t')이 도시되어 있다. 프로그램 기능들(22)은 각각 하나 또는 복수의 프로그램 명령(26)을 포함하며, 이 프로그램 명령은 전송 유닛(20)에 의해 로컬 메모리(14)에 제공될 수 있다.
도시된 것처럼, 컴퓨터 프로그램(24)은 하나 또는 복수의 프로그램 기능(22)을 포함할 수 있으며, 각각의 프로그램 기능(22)은 하나 또는 복수의 프로그램 명령(26)(instructions)을 포함할 수 있다. 영어에서 "프로그램 기능"은 경우에 따라 "Runnable(실행 가능)"의 개념을 특징으로 한다. 프로그램 기능들(22)은 스케줄링 가능한 프로그램 기능들(22) 및/또는 스케줄링 불가능한 프로그램 기능들(22)을 포함할 수 있다.
또한, 도 2에는, 본 실시예에서 링 버퍼(14')이거나, 링 버퍼를 포함하는 로컬 메모리(14)의 일 실시형태가 도시되어 있다. 예컨대 링 버퍼(14')는 RAM 메모리 내에서 고정 길이의 기설정 기억 영역을 특징으로 한다. 링 버퍼(14')는, 현재 전송된 프로그램 명령(26)이 기록될 수 있는 현재 주소를 특징짓는 기록 포인터(28)를 포함한다.
바람직하게는 계산 유닛(10)에 의해 제어되는 판독 포인터(30)가 시간상 이격되어 기록 포인터(28)에 후행할 수 있으며, 그에 따라 계산 유닛(10) 또는 프로세서 코어(12)를 통한 처리부에 각각의 프로그램 명령(26)을 공급할 수 있다. 기록 포인터(28) 및 판독 포인터(30)는 링 버퍼(14')에 할당된 메모리 영역을 주기적으로 통과할 수 있다.
도 2의 하부 영역에는 제2 시간 축(t")이 개략적으로 도시되어 있으며, 이 제2 시간 축에는 로컬 메모리(14)에 제공되어 프로세서 코어(12)를 통해 실행될 프로그램 기능들(22)이 도시되어 있다. 이를 위해, 제2 시간 축(t")은, 인과관계로 인해, 상부의 제1 시간 축(t') 상에 도시되어 있는 각각의 시간들(t1', t2' 및 t3')에 시간상 후행하는 각각의 실행 시점들(t1", t2" 및 t3")을 포함한다.
도 3에는, 예컨대 하나 또는 복수의 링 버퍼(14')를 포함하는(도 2 참조) 로컬 메모리(14)에 대한 간소화된 개략도가 도시되어 있다. 이 경우, 로컬 메모리(14)가 이용되면서 복수(여기서는 각각 2개)의 제1 프로그램 기능(22') 및 제2 프로그램 기능(22")이 제공되어 실행되어야 한다. 예컨대 제1 프로그램 기능들(22')은 10㎳(밀리초)의 제1 주기 시간(기간)을 가지며, 제2 프로그램 기능들(22")은 1㎳의 제2 주기 시간을 갖는다. 예를 들어, 제1 프로그램 기능들(22')은 서로 동일한 크기의 주소 영역들을 포함하며, 제2 프로그램 기능들(22")은 서로 상이한 크기의 주소 영역들을 포함한다.
도 3에 도시된 것처럼, 바람직하게는 제1 프로그램 기능들(22')은 로컬 메모리(14)의 제1 기억 영역(14a)에 제공되고, 제2 프로그램 기능들(22")은 로컬 메모리(14)의 제2 기억 영역(14b)에 제공된다. 그 결과, 계산 유닛(10)의 프로세서 코어(12)를 통해, 로컬 메모리(14) 내에서 프로그램 기능들(22' 및 22")의 효율적인 관리, 그리고 각각의 프로그램 명령(26)의 효율적인 제공이 가능해진다.
도 1 및 도 3에 의해 그리고 하기의 도 4를 참조하여, 계산 유닛(10)을 작동하기 위한 방법이 기술되고, 이 방법에서는 계산 유닛(10)이 하나 이상의 프로세서 코어(12)와, 계산 유닛(10)과 관련한 로컬 메모리(14)를 포함하며, 하나 이상의 프로세서 코어(12)에 의해 계산 유닛(10)을 위한 컴퓨터 프로그램(24)의 복수의 프로그램 기능(22)이 실행되고, 상기 방법은 하기 단계들을 특징으로 한다.
- 향후 실행 시점(t1", t2", t3")에 실행될 프로그램 기능(22)에 속하는 프로그램 명령(26), 특히 모든 프로그램 명령(26)을 결정하는 단계(102); 및
- 상기 결정된 프로그램 명령(26)을 실행 시점(t1", t2", t3") 이전에 로컬 메모리(14; 14a, 14b, 14')에 제공하는 단계(104).
이미 위에서도 도 1의 설명에서 더 상세히 기술한 것처럼, 프로그램 명령(26)을 결정하는 단계(102)는 바람직하게 (그러나 강제적이지 않은 방식으로) 결정된 프로그램 명령(26)을 제공하는 단계(104)로부터 분리되어 수행될 수 있다.
예컨대 로컬 메모리(14)는 계산 유닛(10)의 내부 전역 메모리이고, 그리고/또는 계산 유닛(10)의 외부 메모리이고, 그리고/또는 프로세서 코어(12)의 로컬 메모리(14)이다. 로컬 메모리(14)는 예컨대 RAM 메모리, 즉 "랜덤 액세스 메모리(Random Access Memory)"이다.
일 실시형태에서, 결정된 프로그램 명령(26)은 실행 대상 프로그램 기능(22)에 따른 순서로 계산 유닛(10)의 로컬 메모리(14)에 제공된다.
일 실시형태에서, 다수의 다양한 프로그램 기능(22)을 위해, 각각 해당 프로그램 기능(22)에 속하는 모든 프로그램 명령(26)은 각각의 실행 시점(t1", t2", t3") 이전에 로컬 메모리(14)에 제공된다.
일 실시형태에서, 결정된 프로그램 명령(26)을 제공하는 단계(104)는, 전송 유닛(20), 바람직하게는 계산 유닛(10)으로부터 독립된 전송 유닛(20)이 결정된 프로그램 명령(26)을 소스 메모리(18)로부터 로컬 메모리(14)로 복사함으로써 수행된다.
일 실시형태에서, 전송 유닛(20)은 추가 계산 유닛(10), 및/또는 계산 유닛(10)의 추가 프로세서 코어(12), 및/또는 본래 공지된 방식으로 버스 시스템(16)을 통해 직접 메모리 액세스를 실행할 수 있는 직접 메모리 액세스 제어 장치를 포함한다. 한 바람직한 실시형태에서, 전송 유닛(20) 또는 직접 메모리 액세스 제어 장치는 순수 하드웨어 회로로서 구현된다. 직접 메모리 액세스 메모리는 영어로 "DMA Controller"("Direct Memory Access")라고도 지칭된다. 그 대안으로, 직접 메모리 액세스 제어 장치는 소프트웨어에 의해 실현될 수 있거나, 하드웨어와 소프트웨어에 의해 혼합되어 실현될 수 있다. 또 다른 구현예에서, 전송 유닛(20)은 전용(응용 주문형) 하드웨어 회로로서 구현된다. 이에 대해서는 하기에서 도 5 및 도 7도 참조된다.
도 4에는, 도 1 내지 도 3 중 하나 이상의 도면에 따른 계산 유닛(10)을 작동하기 위한 방법의 흐름도가 도시되어 있다. 제1 블록에서는, 향후 실행 시점(t1", t2", t3")에 실행될 프로그램 기능(22)에 속하는, 바람직하게는 모든 프로그램 명령(26)을 결정하는 단계(102)가 수행된다.
일 실시형태에서, 결정하는 단계(102)는, 프로그램 기능들(22)의 주기적인 실행의 스케줄링, 바람직하게는 정적 스케줄링을 평가하는 단계(103), 및/또는 컴퓨터 프로그램(24)의 적어도 일부분의 소프트웨어 분석 단계를 포함한다. 그에 따라, 다가오는 시간 간격 동안 실행될 복수의 프로그램 기능(22)에서 각각 정기적으로 실행될 프로그램 기능들(22)이 프로그램 기능들(22)의 선형 리스트의 이용 하에 정적 스케줄링에 의해 결정될 수 있고, 그리고/또는 나머지 실행될 프로그램 기능들(22)은 분석, 특히 소프트웨어 분석에 의해 결정될 수 있다.
후속 블록에서는, 결정된 프로그램 명령(26)을 실행 시점(t1", t2", t3") 이전에 로컬 메모리(14)에 제공하는 단계(104)가 수행된다. 후속 블록에서는, 로컬 메모리(14)의 이용 하에 각각의 실행 시점(t1", t2", t3")에, 제공된 프로그램 기능들(22) 또는 프로그램 명령(26)을 프로세서 코어(12)를 이용하여 실행하는 단계(106)가 수행된다. 파선은 블록(106) 뒤에서 블록(102)의 시작부로 분기되며, 도 4에 도시된 방법이 상응하는 방식으로 주기적으로 또는 연속적으로 속행될 수 있음을 기호화한 것이다.
또한, 또 다른 발명 변형예의 경우, 로컬 메모리(14)를 링 버퍼(14')의 형태와 다르게 조직하는 점도 생각해볼 수 있다.
본 발명에 따른 원리의 적용은, 바람직하게는 소위 명령 스톨의 방지를 가능하게 하고, 그에 따라 비록 비교적 느린 코드 메모리(18)가 제공되는 경우에도 계산 유닛(10)의 계산 시간 자원들의 더 효율적인 이용을 가능하게 한다.
도 5에는, 컴퓨터 프로그램(24)의 프로그램 기능(22)에 속하는 프로그램 명령(26), 특히 모든 프로그램 명령(26)을 결정(102)하기 위한 시스템(200)(도 5에서 왼쪽)이 도시되어 있으며, 상기 프로그램 기능(22)은 향후 시점(t1", t2", t3")에 실행되고, 상기 시스템(200)은, 시간상 컴퓨터 프로그램(24)의 실행 시간 전에, 특히 컴퓨터 프로그램(24) 및/또는 이 컴퓨터 프로그램(24)을 포함하는 프로그램 시스템의 개발 시점에 프로그램 명령(26)을 결정하는 단계(102)를 실행하도록 형성된다.
도 5에서 오른쪽에는, 계산 유닛(10) 및 전송 유닛(20)을 포함하는 제어 장치(300)가 도시되어 있으며, 이 제어 장치는 예컨대 자동차용 제어 장치(300)이다. 시스템(200) 또는 제어 장치(300)의 상부에는, 각각 프로그램 명령(26)을 결정하는 단계(102), 또는 프로그램 명령(26)을 제공하는 단계(104) 및 실행하는 단계(106)에 대한 도면부호들로 표시되어 있는 수평 양방향 화살표가 각각 도시되어 있다.
본 실시예에서, 시스템(200) 내에서 결정된 프로그램 명령(26) 및/또는 이들을 특징짓는 정보들은 제어 장치(300)의 메모리(310)에 저장될 수 있다. 일 실시형태에서, 메모리(310)는, 그로부터 프로그램 명령(26)이 컴퓨터 프로그램(24)의 실행 시간 동안 로컬 메모리(14) 내에 또는 링 버퍼(14') 내에 기록될 수 있는 버퍼 메모리이다. 일 실시형태에서, 메모리(310)는 로컬 메모리(14) 또는 링 버퍼(14')와 동일하다.
미도시한 실시형태에서, 시스템(200)은 제어 장치(300) 내에, 또는 계산 유닛(10) 내에 통합 형성된다. 이 경우, 시스템(200)은 하드웨어에 의해, 그리고/또는 제어 장치(300)에서 실행될 수 있는 소프트웨어에 의해 구현된다.
그 대안으로, 시스템(200)은 계산 유닛(10) 또는 제어 장치(300)로부터 분리되며, 예컨대 계산 유닛(10)용 컴퓨터 프로그램들(24)을 위한 개발 환경의 부분이다. 또한, 시스템(200)은 예컨대 하기 단계들, 즉: 프로그램 기능들(22)의 주기적인 실행의 스케줄링, 바람직하게는 정적 스케줄링을 평가하는 단계, 및/또는 컴퓨터 프로그램(24)의 적어도 일부분의 소프트웨어 분석 단계를 실행하도록 형성될 수 있으며, 상기 단계들은 예컨대 시스템(200)의 내부에서도 실행될 수 있고, 특히 아직 컴퓨터 프로그램(24)이 실행을 위해 계산 유닛(10)으로 제공되기 전에 실행될 수 있다.
도 6에는, 계산 유닛(10)을 작동하기 위한 방법에 대한 또 다른 흐름도가 도시되어 있다. 흐름도는 바람직하게 (그러나 강제적이지 않은 방식으로) 도 5의 어셈블리와 관련하여 실행될 수 있다.
제1 단계(미도시)에서, 프로그램 명령(26)을 결정하는 단계(102)는 시간상 컴퓨터 프로그램(24)의 실행 시간 이전에, 또는 도 6에 도시된 흐름도의 실행 이전에 수행된다. 바람직하게, 결정하는 단계(102)는 컴퓨터 프로그램(24) 및/또는 이 컴퓨터 프로그램(24)을 포함하는 프로그램 시스템의 개발 시점에 수행된다.
제2 단계에서, 컴퓨터 프로그램(24)의 실행 시간 동안, 계속하여 앞서 도 4에서 이미 기술한 것처럼, 결정된 프로그램 명령(26)을 제공하는 단계(104) 및 프로세서 코어(12)를 이용하여 제공된 프로그램 기능들(22) 또는 프로그램 명령(26)을 실행하는 단계(106)가 수행된다. 블록(106)의 종료부에서부터 블록(104)의 시작부까지의 파선은, 도 6에 도시된 방법이 상응하는 방식으로 주기적으로 또는 연속적으로 속행될 수 있음을 기호화한 것이다.
도 7에는, 도 5와 유사한 개략도가 도시되어 있다. 본 실시예에서, 버스 시스템(16)은 계산 유닛(10), 메모리(310), 소스 메모리(18), 전송 유닛(20), 그리고 인터페이스 회로(320)에 연결되어 있다. 인터페이스 회로(320)는 시스템(200)과 연결되어 있다. 일 실시형태에서, 전송 유닛(20)은 데이터 라인들 및/또는 제어 라인들에 의해 소스 메모리(18)와, 그리고/또는 인터페이스 회로(320)와, 그리고/또는 로컬 메모리(14 또는 14')와 직접 연결된다. 이는 도 7에 각각 파선의 연결선들을 통해 도시되어 있다.
전송 유닛(20)은, 향후 실행 시점(t1", t2", t3")에 실행될 프로그램 기능(22)에 속하며 바람직하게는 전송 유닛(20)으로부터 독립된 유닛[본 실시예에서는 시스템(200)]을 통해 결정되는 프로그램 명령(26), 특히 모든 프로그램 명령(26)을 소스 메모리(18)로부터 로컬 메모리(14 또는 14')로 복사하도록 형성된다.
일 실시형태에서, 프로그램 명령(26)은 프로그램 기능들(22)의 주기적인 실행의 스케줄링, 바람직하게는 정적 스케줄링을 평가하는 단계(103), 및/또는 컴퓨터 프로그램(24)의 적어도 일부분의 소프트웨어 분석 단계에 의해 결정되었다.
상응하는 데이터(구성 데이터), 즉, 예컨대 컴퓨터 프로그램(24)의 하나 이상의 프로그램 기능(22)에 대해, 어느 프로그램 명령(26)이 모두 해당 프로그램 기능(22)에 속하는지를 명시하는 데이터는, 계산 유닛에서 컴퓨터 프로그램의 실행 이전에, 또는 동적으로도, 즉, 계산 유닛에서의 컴퓨터 프로그램의 실행 중에, 전송 유닛으로 제공될 수 있다. 예컨대 상기 데이터는 컴퓨터 프로그램에 대한 부가물로서 제공될 수 있거나, 또는 컴퓨터 프로그램으로부터 분리되어서도 제공될 수 있다. 상기 데이터는 앞서 이미 언급한 것처럼, 특히 프로그램 기능들(22)의 주기적인 실행에 대한 정보들도 포함할 수 있으며, 그럼으로써 전송 유닛(20)은 상기 데이터로부터, 향후의 어느 시점까지 계산 유닛을 위한 하나 또는 복수의 관련된 프로그램 기능(22)의 프로그램 명령(26)이 예컨대 계산 유닛의 로컬 메모리에 제공되어야 하는지를 결정할 수 있다.
다른 실시형태들에서 전송 유닛이 제공되어 있지 않는 한, 데이터(구성 데이터)의 이용에 관련되는 전술한 기능성은 계산 유닛 자체를 통해서도 실현될 수 있다.

Claims (17)

  1. 계산 유닛(10)을 작동하기 위한 방법으로서, 계산 유닛(10)은 하나 이상의 프로세서 코어(12)와, 상기 계산 유닛(10)과 관련한 로컬 메모리(14)를 포함하고, 하나 이상의 프로세서 코어(12)에 의해 계산 유닛(10)을 위한 컴퓨터 프로그램(24)의 복수의 프로그램 기능(22)이 실행되는, 계산 유닛 작동 방법에 있어서,
    - 향후 실행 시점(t1", t2", t3")에 실행될 프로그램 기능(22)에 속하는 프로그램 명령(26), 특히 모든 프로그램 명령(26)을 결정하는 단계(102)와,
    - 상기 결정된 프로그램 명령(26)을 상기 실행 시점(t1", t2", t3") 이전에 로컬 메모리(14)에 제공하는 단계(104)를 특징으로 하는, 계산 유닛 작동 방법.
  2. 제1항에 있어서, 결정된 프로그램 명령(26)은 실행할 프로그램 기능(22)에 따르는 순서로 계산 유닛(10)의 로컬 메모리(14)에 제공되는, 계산 유닛 작동 방법.
  3. 제1항 또는 제2항에 있어서, 복수의 다양한 프로그램 기능(22)에 대해 각각 해당 프로그램 기능(22)에 속하는 모든 프로그램 명령(26)이 각각의 실행 시점(t1", t2", t3") 이전에 로컬 메모리(14)에 제공되는, 계산 유닛 작동 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서, 로컬 메모리(14)는 계산 유닛(10)의 전역 메모리이고, 그리고/또는 하나 이상의 프로세서 코어(12)의 로컬 메모리인, 계산 유닛 작동 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서, 결정된 프로그램 명령(26)을 제공(104)하기 위해 로컬 메모리(14) 내에 하나 이상의 링 버퍼(14')가 제공되고, 상기 링 버퍼(14')는 프로그램 실행을 위해 계산 유닛(10)에 의해 주기적으로 판독되며, 상기 링 버퍼(14')는, 주기 중에 이미 계산 유닛(10)에 의해 판독되었던 링 버퍼(14')의 주소들에서, 추가로 결정되어 시간적으로 후행하는 프로그램 명령(26)으로 주기적으로 기록되는, 계산 유닛 작동 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서, 결정된 프로그램 명령(26)을 제공하는 단계(104)는, 바람직하게는 계산 유닛(10)으로부터 독립된 전송 유닛(20)이 상기 결정된 프로그램 명령(26)을 소스 메모리(18)로부터 로컬 메모리(14)로 복사함으로써 수행되는, 계산 유닛 작동 방법.
  7. 제6항에 있어서, 전송 유닛(20)은 추가 계산 유닛(10), 및/또는 상기 계산 유닛(10)의 추가 프로세서 코어(12), 및/또는 직접 메모리 액세스 제어 장치를 포함하는, 계산 유닛 작동 방법.
  8. 제1항 내지 제7항 중 적어도 어느 한 항에 있어서, 결정 단계(102)는, 프로그램 기능들(22)의 주기적인 실행의 스케줄링, 바람직하게는 정적 스케줄링을 평가하는 단계(103), 및/또는 컴퓨터 프로그램(24)의 적어도 일부분의 소프트웨어 분석 단계를 포함하는, 계산 유닛 작동 방법.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서, 프로그램 명령(26)을 결정하는 단계(102)는 시간상 컴퓨터 프로그램(24)의 실행 시간 이전에, 특히 컴퓨터 프로그램(24) 및/또는 상기 컴퓨터 프로그램(24)을 포함하는 프로그램 시스템의 개발 시점에 수행되며, 컴퓨터 프로그램(24)의 실행 시간 동안 상기 결정된 프로그램 명령(26)을 제공하는 단계(104)가 수행되는, 계산 유닛 작동 방법.
  10. 하나 이상의 프로세서 코어(12)와; 계산 유닛(10)과 관련한 로컬 메모리(14);를 포함하는 계산 유닛(10)이며, 상기 계산 유닛(10)은, 하나 이상의 프로세서 코어(12)를 이용하여 계산 유닛(10)을 위한 컴퓨터 프로그램(24)의 복수의 프로그램 기능(22)을 실행하도록 형성되고, 상기 계산 유닛(10)은 추가로,
    - 향후 실행 시점(t1", t2", t3")에 실행될 프로그램 기능(22)에 속하는 프로그램 명령(26), 특히 모든 프로그램 명령(26)을 결정하는 단계(102); 및
    - 상기 결정된 프로그램 명령(26)을 실행 시점(t1", t2", t3") 이전에 로컬 메모리(14)에 제공하는 단계(104);를 실행하도록 형성되는, 계산 유닛(10).
  11. 제10항에 있어서, 로컬 메모리(14)는 계산 유닛(10)의 전역 메모리이고, 그리고/또는 하나 이상의 프로세서 코어(12)의 로컬 메모리인, 계산 유닛(10).
  12. 제10항 또는 제11항에 있어서, 계산 유닛(10)은 전송 유닛(20)을 포함하고, 상기 전송 유닛은, 전송 유닛(20) 자신이 상기 결정된 프로그램 명령(26)을 소스 메모리(18)로부터 로컬 메모리(14)에 복사함으로써 상기 결정된 프로그램 명령(26)을 제공하는 단계(104)를 실행하도록 형성되는, 계산 유닛(10).
  13. 제12항에 있어서, 전송 유닛(20)은, 결정된 프로그램 명령(26)을 로컬 메모리(14)에 제공하는 단계(104)를 계산 유닛(10) 및/또는 프로세서 코어(12)에 시그널링하도록 형성되는, 계산 유닛(10).
  14. 특히 자동차를 위한 개루프 및/또는 폐루프 제어 장치에 있어서,
    상기 개루프 및/또는 폐루프 제어 장치는 제10항 내지 제13항 중 어느 한 항에 따른 계산 유닛(10)을 포함하는 것을 특징으로 하는, 개루프 및/또는 폐루프 제어 장치.
  15. 컴퓨터 프로그램(24)의 프로그램 기능(22)에 속하는 프로그램 명령(26), 특히 모든 프로그램 명령(26)을 결정(102)하기 위한 시스템(200)이며, 상기 프로그램 기능(22)은 향후 실행 시점(t1", t2", t3")에 실행되고, 상기 시스템(200)은, 프로그램 명령(26)을 결정하는 단계(102)를 시간상 컴퓨터 프로그램(24)의 실행 시간 이전에, 특히 컴퓨터 프로그램(24) 및/또는 상기 컴퓨터 프로그램(24)을 포함하는 프로그램 시스템의 개발 시점에 수행하도록 형성되는, 시스템(200).
  16. 계산 유닛(10)을 위한 전송 유닛(20)으로서, 계산 유닛(10)은 하나 이상의 프로세서 코어(12)와, 상기 계산 유닛(10)과 관련한 로컬 메모리(14)를 포함하고, 계산 유닛(10)은, 하나 이상의 프로세서 코어(12)를 이용하여, 계산 유닛(10)을 위한 컴퓨터 프로그램(24)의 복수의 프로그램 기능(22)을 실행하도록 형성되는, 계산 유닛용 전송 유닛에 있어서,
    상기 전송 유닛(20)은, 향후 실행 시점(t1", t2", t3")에 계산 유닛을 통해 실행될 프로그램 기능(22)에 속하면서, 바람직하게는 상기 전송 유닛(20)으로부터 독립된 유닛을 통해 결정되는(102) 프로그램 명령(26), 특히 모든 프로그램 명령(26)을, 소스 메모리(18)로부터 로컬 메모리(14; 14')로 복사하도록 형성되는 것을 특징으로 하는, 계산 유닛용 전송 유닛(20).
  17. 제16항에 있어서, 프로그램 명령(26)은 프로그램 기능들(22)의 주기적인 실행의 스케줄링, 바람직하게는 정적 스케줄링을 평가하는 단계(103), 및/또는 상기 컴퓨터 프로그램(24)의 적어도 일부분의 소프트웨어 분석 단계에 의해 결정된 것인, 계산 유닛용 전송 유닛(20).
KR1020187036172A 2016-06-14 2017-05-31 계산 유닛 작동 방법 KR102339278B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
DE102016210535.3 2016-06-14
DE102016210535 2016-06-14
DE102016211386.0A DE102016211386A1 (de) 2016-06-14 2016-06-24 Verfahren zum Betreiben einer Recheneinheit
DE102016211386.0 2016-06-24
PCT/EP2017/063106 WO2017215913A1 (de) 2016-06-14 2017-05-31 Verfahren zum betreiben einer recheneinheit

Publications (2)

Publication Number Publication Date
KR20190018434A true KR20190018434A (ko) 2019-02-22
KR102339278B1 KR102339278B1 (ko) 2021-12-14

Family

ID=60419817

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187036172A KR102339278B1 (ko) 2016-06-14 2017-05-31 계산 유닛 작동 방법

Country Status (6)

Country Link
US (1) US10671396B2 (ko)
JP (1) JP6691239B2 (ko)
KR (1) KR102339278B1 (ko)
CN (1) CN109313558B (ko)
DE (1) DE102016211386A1 (ko)
WO (1) WO2017215913A1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6658578B1 (en) * 1998-10-06 2003-12-02 Texas Instruments Incorporated Microprocessors
JP2009211540A (ja) * 2008-03-05 2009-09-17 Internatl Business Mach Corp <Ibm> コンピュータ使用可能コードを実行する装置及び方法
WO2015082109A1 (de) * 2013-12-03 2015-06-11 Robert Bosch Gmbh Steuergerät für ein kraftfahrzeug

Family Cites Families (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5072418A (en) * 1989-05-04 1991-12-10 Texas Instruments Incorporated Series maxium/minimum function computing devices, systems and methods
US6038641A (en) * 1988-12-30 2000-03-14 Packard Bell Nec Two stage cache memory system and method
JP3486498B2 (ja) * 1996-01-10 2004-01-13 キヤノン株式会社 バッファ管理方法及びそれを用いた印刷装置
US6055619A (en) * 1997-02-07 2000-04-25 Cirrus Logic, Inc. Circuits, system, and methods for processing multiple data streams
JP2002041445A (ja) * 2000-05-19 2002-02-08 Matsushita Electric Ind Co Ltd 高性能dmaコントローラ
DE10027006B4 (de) 2000-05-31 2014-09-04 Robert Bosch Gmbh System zur Steuerung / Regelung der Betriebsabläufe bei einem Kraftfahrzeug und ein Verfahren zum Starten eines solchen Systems
US20030084433A1 (en) * 2001-10-31 2003-05-01 Chi-Keung Luk Profile-guided stride prefetching
FI116167B (fi) * 2001-12-18 2005-09-30 Valtion Teknillinen Arkistoiva tiedostopalvelin
US7171509B2 (en) * 2002-01-09 2007-01-30 International Business Machines Corporation Method and apparatus for host messaging unit for Peripheral Component Interconnect busmaster devices
WO2004001584A2 (en) * 2002-06-24 2003-12-31 Ante Vista Gmbh A method for executing structured symbolic machine code on a microprocessor
US7200840B2 (en) * 2002-10-24 2007-04-03 International Business Machines Corporation Method and apparatus for enabling access to global data by a plurality of codes in an integrated executable for a heterogeneous architecture
JP4749657B2 (ja) * 2003-03-20 2011-08-17 パナソニック株式会社 Dma制御装置
US7526632B1 (en) * 2003-10-22 2009-04-28 Stretch, Inc. System, apparatus and method for implementing multifunctional memory in reconfigurable data path processing
US7127549B2 (en) * 2004-02-04 2006-10-24 Sandisk Corporation Disk acceleration using first and second storage devices
US7533154B1 (en) * 2004-02-04 2009-05-12 Advanced Micro Devices, Inc. Descriptor management systems and methods for transferring data of multiple priorities between a host and a network
EP1870814B1 (en) * 2006-06-19 2014-08-13 Texas Instruments France Method and apparatus for secure demand paging for processor devices
US8112618B2 (en) * 2004-04-08 2012-02-07 Texas Instruments Incorporated Less-secure processors, integrated circuits, wireless communications apparatus, methods and processes of making
EP1899828B1 (en) * 2005-06-30 2009-11-25 Freescale Semiconductor, Inc. Device and method for arbitrating between direct memory access task requests
US20090125647A1 (en) * 2005-06-30 2009-05-14 Citibank, N.A. Device And Method For Executing A DMA Task
WO2007003986A1 (en) * 2005-06-30 2007-01-11 Freescale Semiconductor, Inc. Device and method for controlling an execution of a dma task
US20160098279A1 (en) * 2005-08-29 2016-04-07 Searete Llc Method and apparatus for segmented sequential storage
US8296550B2 (en) * 2005-08-29 2012-10-23 The Invention Science Fund I, Llc Hierarchical register file with operand capture ports
US20070083735A1 (en) * 2005-08-29 2007-04-12 Glew Andrew F Hierarchical processor
US8275976B2 (en) * 2005-08-29 2012-09-25 The Invention Science Fund I, Llc Hierarchical instruction scheduler facilitating instruction replay
US9176741B2 (en) * 2005-08-29 2015-11-03 Invention Science Fund I, Llc Method and apparatus for segmented sequential storage
US7457928B2 (en) * 2005-10-28 2008-11-25 International Business Machines Corporation Mirroring system memory in non-volatile random access memory (NVRAM) for fast power on/off cycling
US20070118696A1 (en) * 2005-11-22 2007-05-24 Intel Corporation Register tracking for speculative prefetching
US20070121499A1 (en) * 2005-11-28 2007-05-31 Subhasis Pal Method of and system for physically distributed, logically shared, and data slice-synchronized shared memory switching
US8205200B2 (en) * 2005-11-29 2012-06-19 Intel Corporation Compiler-based scheduling optimization hints for user-level threads
CN101558390B (zh) * 2006-12-15 2014-06-18 密克罗奇普技术公司 用于微处理器的可配置高速缓冲存储器
US7802034B2 (en) * 2006-12-31 2010-09-21 Sandisk Corporation Method for performing full transfer automation in a USB controller
JP5224498B2 (ja) * 2007-02-28 2013-07-03 学校法人早稲田大学 メモリ管理方法、情報処理装置、プログラムの作成方法及びプログラム
JP4415071B2 (ja) * 2007-06-22 2010-02-17 富士通マイクロエレクトロニクス株式会社 メモリ共有システム装置
US8055886B2 (en) * 2007-07-12 2011-11-08 Texas Instruments Incorporated Processor micro-architecture for compute, save or restore multiple registers and responsive to first instruction for repeated issue of second instruction
US8751755B2 (en) * 2007-12-27 2014-06-10 Sandisk Enterprise Ip Llc Mass storage controller volatile memory containing metadata related to flash memory storage
US8028123B2 (en) * 2008-04-15 2011-09-27 SMART Modular Technologies (AZ) , Inc. Circular wear leveling
US8706858B2 (en) * 2008-04-17 2014-04-22 Alcatel Lucent Method and apparatus for controlling flow of management tasks to management system databases
US7984265B2 (en) * 2008-05-16 2011-07-19 Oracle America, Inc. Event address register history buffers for supporting profile-guided and dynamic optimizations
US8196213B2 (en) * 2008-07-11 2012-06-05 Microsoft Corporation Verification of un-trusted code for consumption on an insecure device
US7870309B2 (en) * 2008-12-23 2011-01-11 International Business Machines Corporation Multithreaded programmable direct memory access engine
US9086973B2 (en) * 2009-06-09 2015-07-21 Hyperion Core, Inc. System and method for a cache in a multi-core processor
WO2011030070A1 (fr) * 2009-09-11 2011-03-17 Commissariat à l'énergie atomique et aux énergies alternatives Controleur d'acces direct en memoire, procede et programme d'ordinateur correspondants
US9081501B2 (en) * 2010-01-08 2015-07-14 International Business Machines Corporation Multi-petascale highly efficient parallel supercomputer
US8195883B2 (en) * 2010-01-27 2012-06-05 Oracle America, Inc. Resource sharing to reduce implementation costs in a multicore processor
JP5635621B2 (ja) * 2010-09-10 2014-12-03 株式会社日立製作所 ストレージシステム及びストレージシステムのデータ転送方法
US9606863B2 (en) * 2010-10-25 2017-03-28 SMART High Reliability Solutions, LLC Fabric-based solid state drive architecture
US8738860B1 (en) * 2010-10-25 2014-05-27 Tilera Corporation Computing in parallel processing environments
US8726251B2 (en) * 2011-03-29 2014-05-13 Oracle International Corporation Pipelined loop parallelization with pre-computations
US9432298B1 (en) * 2011-12-09 2016-08-30 P4tents1, LLC System, method, and computer program product for improving memory systems
CN104011644B (zh) * 2011-12-22 2017-12-08 英特尔公司 用于产生按照数值顺序的相差恒定跨度的整数的序列的处理器、方法、系统和指令
US10223112B2 (en) * 2011-12-22 2019-03-05 Intel Corporation Processors, methods, systems, and instructions to generate sequences of integers in which integers in consecutive positions differ by a constant integer stride and where a smallest integer is offset from zero by an integer offset
US8918680B2 (en) * 2012-01-23 2014-12-23 Apple Inc. Trace queue for peripheral component
US9250902B2 (en) * 2012-03-16 2016-02-02 International Business Machines Corporation Determining the status of run-time-instrumentation controls
US8935475B2 (en) * 2012-03-30 2015-01-13 Ati Technologies Ulc Cache management for memory operations
US10691775B2 (en) * 2013-01-17 2020-06-23 Edico Genome, Corp. Bioinformatics systems, apparatuses, and methods executed on an integrated circuit processing platform
US9390129B2 (en) * 2013-01-30 2016-07-12 Oracle International Corporation Scalable and adaptive evaluation of reporting window functions
US9015689B2 (en) * 2013-03-14 2015-04-21 Board of Regents on Behalf of Arizona State University Stack data management for software managed multi-core processors
US10049037B2 (en) * 2013-04-05 2018-08-14 Sandisk Enterprise Ip Llc Data management in a storage system
DE102013211354B4 (de) * 2013-06-18 2024-01-25 Robert Bosch Gmbh Verfahren und Vorrichtung zum Bestimmen einer Kollisionscharakteristik einer Kollision eines Fahrzeugs
WO2014202825A1 (en) * 2013-06-20 2014-12-24 Nokia Corporation Microprocessor apparatus
US10342032B2 (en) * 2013-07-04 2019-07-02 Nxp Usa, Inc. Method and device for streaming control data in a mobile communication system
CN103530152A (zh) * 2013-10-10 2014-01-22 小米科技有限责任公司 一种加载客户端脚本的方法、装置及终端设备
EP2881857B8 (de) * 2013-12-09 2018-09-12 dSPACE digital signal processing and control engineering GmbH Verfahren zur Änderung der Software im Speicher eines elektronischen Steuergerätes
CN106922186A (zh) * 2014-12-17 2017-07-04 英特尔公司 用于执行自旋‑循环跳转的装置和方法
US10061583B2 (en) * 2014-12-24 2018-08-28 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US10387156B2 (en) * 2014-12-24 2019-08-20 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US11354128B2 (en) * 2015-03-04 2022-06-07 Intel Corporation Optimized mode transitions through predicting target state
US10635465B2 (en) * 2015-03-28 2020-04-28 Intel Corporation Apparatuses and methods to prevent execution of a modified instruction
EP3104278A1 (de) * 2015-06-12 2016-12-14 dSPACE digital signal processing and control engineering GmbH Verfahren zur realistischen abschätzung von funktionslaufzeiten in pil simulation
US10169073B2 (en) * 2015-12-20 2019-01-01 Intel Corporation Hardware accelerators and methods for stateful compression and decompression operations
US20170177349A1 (en) * 2015-12-21 2017-06-22 Intel Corporation Instructions and Logic for Load-Indices-and-Prefetch-Gathers Operations
US10007520B1 (en) * 2016-02-25 2018-06-26 Jpmorgan Chase Bank, N.A. Systems and methods for using alternate computer instruction sets
CN106371807B (zh) * 2016-08-30 2019-03-19 华为技术有限公司 一种扩展处理器指令集的方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6658578B1 (en) * 1998-10-06 2003-12-02 Texas Instruments Incorporated Microprocessors
JP2009211540A (ja) * 2008-03-05 2009-09-17 Internatl Business Mach Corp <Ibm> コンピュータ使用可能コードを実行する装置及び方法
WO2015082109A1 (de) * 2013-12-03 2015-06-11 Robert Bosch Gmbh Steuergerät für ein kraftfahrzeug

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Wikipedia: Circular buffer. 2016.06.11. *

Also Published As

Publication number Publication date
US10671396B2 (en) 2020-06-02
JP2019520651A (ja) 2019-07-18
CN109313558B (zh) 2024-03-01
JP6691239B2 (ja) 2020-04-28
WO2017215913A1 (de) 2017-12-21
DE102016211386A1 (de) 2017-12-14
US20190258488A1 (en) 2019-08-22
CN109313558A (zh) 2019-02-05
KR102339278B1 (ko) 2021-12-14

Similar Documents

Publication Publication Date Title
US8046775B2 (en) Event-based bandwidth allocation mode switching method and apparatus
US6944850B2 (en) Hop method for stepping parallel hardware threads
JP6321807B2 (ja) 車両のための制御装置
US11704152B2 (en) Processor zero overhead task scheduling
CN103329102A (zh) 多处理器系统
CN101504567B (zh) 一种cpu、cpu指令系统及降低cpu功耗的方法
US20210194720A1 (en) Method and device for operating a control unit
CN110908716A (zh) 一种向量聚合装载指令的实现方法
KR100210205B1 (ko) 스톨캐쉬를 제공하기 위한 장치 및 방법
JP2005276097A (ja) 割り込み依頼プログラムおよびマイクロコンピュータ
US20070192767A1 (en) Reduced data transfer during processor context switching
KR20190018434A (ko) 계산 유닛 작동 방법
US9946665B2 (en) Fetch less instruction processing (FLIP) computer architecture for central processing units (CPU)
CN101581961A (zh) 一种cpu和降低cpu功耗的方法
US7603673B2 (en) Method and system for reducing context switch times
Pereira et al. Co-designed FreeRTOS deployed on FPGA
US20170102954A1 (en) Parallel processing device and parallel processing method
US9342312B2 (en) Processor with inter-execution unit instruction issue
JP2011070290A (ja) データプロセッサ
JP2008015668A (ja) タスク管理装置
CN116991764B (zh) 一种高性能的Flash控制器和嵌入式系统
CN116414463B (zh) 指令调度方法、指令调度装置、处理器及存储介质
JP2009505267A (ja) 補助メモリを用いてメモリにアクセスする方法及びシステム
CN113886123A (zh) 一种看门狗喂狗方法、装置、电子设备及存储介质
CN117742793A (zh) 数据缓存指令的指令合并电路、方法及芯片

Legal Events

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