KR20140098246A - 다중 프로세서 시스템에서의 프로세서 간 프로토콜 - Google Patents

다중 프로세서 시스템에서의 프로세서 간 프로토콜 Download PDF

Info

Publication number
KR20140098246A
KR20140098246A KR1020147018511A KR20147018511A KR20140098246A KR 20140098246 A KR20140098246 A KR 20140098246A KR 1020147018511 A KR1020147018511 A KR 1020147018511A KR 20147018511 A KR20147018511 A KR 20147018511A KR 20140098246 A KR20140098246 A KR 20140098246A
Authority
KR
South Korea
Prior art keywords
image
processor
data
primary processor
secondary processor
Prior art date
Application number
KR1020147018511A
Other languages
English (en)
Other versions
KR101627097B1 (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 KR20140098246A publication Critical patent/KR20140098246A/ko
Application granted granted Critical
Publication of KR101627097B1 publication Critical patent/KR101627097B1/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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/177Initialisation or configuration control
    • 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/4401Bootstrapping
    • G06F9/4405Initialisation of multiprocessor systems
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Multi Processors (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Systems (AREA)
  • Facsimiles In General (AREA)
  • Communication Control (AREA)
  • Image Processing (AREA)

Abstract

다중 프로세서 시스템에서, 1차 프로세서는 2차 프로세서에 대한 실행 가능 이미지를 저장할 수 있다. 통신 프로토콜은 1차 프로세서로부터 2차 프로세서로의 실행 가능 이미지의 이미지 헤더 및 데이터 세그먼트(들)의 전달을 보조한다. 1차 프로세서와 2차 프로세서 사이의 메시지들은 전송된 데이터의 성공적인 수신, 전송 프로세스의 종료 및 그에 대한 확인 응답을 표시한다.

Description

다중 프로세서 시스템에서의 프로세서 간 프로토콜{INTER-PROCESSOR PROTOCOL IN A MULTI-PROCESSOR SYSTEM}
[0001] 본 출원은 GUPTA 등의 명의로 2011년 3월 21일자 출원된 미국 특허출원 제 13/052,516 호의 일부계속출원이며, 이 미국 특허출원은 MALAMANT 등의 명의로 2010년 3월 22일자 출원된 미국 가특허출원 제 61/316,369 호, GUPTA 등의 명의로 2010년 4월 14일자 출원된 미국 가특허출원 제 61/324,035 호, GUPTA 등의 명의로 2010년 4월 14일자 출원된 미국 가특허출원 제 61/324,122 호, 및 GUPTA 등의 명의로 2010년 4월 19일자 출원된 미국 가특허출원 제 61/325,519 호를 우선권으로 주장하고, 이 출원들의 개시들은 그 전체가 인용에 의해 본 명세서에 명백히 포함된다.
[0002] 다음의 설명은 일반적으로 다중 프로세서 시스템들에 관한 것으로, 더 구체적으로는 전용 휘발성 메모리에 각각 연결되는 다중 프로세서 시스템 내 (본 명세서에서는 "2차" 프로세서들로 지칭되는) 하나 또는 그보다 많은 다른 프로세서들의 실행 가능 소프트웨어 이미지(들)를 저장하는 비휘발성 메모리에 1차 프로세서가 연결되는 다중 프로세서 시스템들에 관한 것이며, 여기서 실행 가능 소프트웨어 이미지들은 (예를 들면, 직접 분산 로드(direct scatter load) 프로세스를 사용하여) 세그먼트화된 포맷으로 1차 프로세서로부터 2차 프로세서(들)로 효율적으로 전달된다.
[0003] 프로세서들은 소프트웨어 코드를 실행하여 동작들을 수행한다. 프로세서들은 부팅을 위해 실행될, 일반적으로 부트 코드로 지칭되는 특정 소프트웨어 코드를 사용할 수 있다. 다중 프로세서 시스템에서, 각각의 프로세서는 부팅을 위해 각각의 부트 코드를 사용할 수 있다. 일례로서, 애플리케이션 프로세서 및 모뎀 프로세서를 포함하는 스마트폰 디바이스에서, 프로세서들 각각은 부팅을 위해 각각의 부트 코드를 사용할 수 있다.
[0004] 다수의 프로세서들(예를 들어, 개별 모뎀 프로세서 칩으로 집적된 독립형 애플리케이션 프로세서 칩)을 포함하는 (스마트폰들과 같은) 상당한 수의 디바이스들 상에 문제점이 존재한다. 각각의 프로세서는 실행 가능 이미지들 및 파일 시스템들의 비휘발성 메모리(예를 들어, 영구적 저장소)를 갖기 때문에, 플래시/비휘발성 메모리 컴포넌트가 프로세서들 각각에 사용될 수 있다. 예를 들어, 프로세서의 부트 코드가 프로세서의 각각의 비휘발성 메모리(예를 들어, 플래시 메모리, 판독 전용 메모리(ROM: read-only memory) 등)에 저장될 수 있으며, 파워업 시에 부트 코드 소프트웨어가 그 각각의 비휘발성 메모리로부터 프로세서에 의한 실행을 위해 로딩된다. 따라서 이러한 타입의 아키텍처에서는, 프로세서의 부트 코드와 같은 실행 가능 소프트웨어가 시스템 내 다른 프로세서로부터 프로세서로 로딩될 필요가 없다.
[0005] 그러나 각각의 프로세서에 전용 비휘발성 메모리를 추가하는 것은 더 넓은 회로 보드 공간을 점유하며, 그에 의해 회로 보드 크기를 증가시킨다. 일부 설계들은 보드 크기를 줄이기 위해 (랜덤 액세스 메모리(RAM: Random Access Memory) 및 플래시 디바이스들이 크기를 줄이기 위해 하나의 패키지로서 스택되는) RAM 및 플래시 메모리에 대한 결합 칩을 이용할 수 있다. 다중 칩 패키지 솔루션들은 요구되는 회로 보드 점유 공간(foot print)을 줄이지만, 이는 비용들을 증가시킬 수 있다.
[0006] 일부 다중 프로세서 시스템들에서, 소프트웨어는 하나의 프로세서로부터 다른 프로세서로 로딩될 수 있다. 예를 들어, 다중 프로세서 시스템의 제 1 프로세서는 시스템 내의 하나 또는 그보다 많은 다른 프로세서들에 대한 부트 코드를 자신의 비휘발성 메모리에 저장하는 것을 담당한다고 가정하며, 여기서 파워업 시에 제 1 프로세서는 다른 프로세서(들)의 비휘발성 메모리에 상주하는 그러한 부트 코드와는 달리, 다른 프로세서(들)에 각각의 부트 코드를 로딩하는 작업이 부과된다. 이러한 타입의 시스템에서, 소프트웨어(예를 들어, 부트 이미지)가 제 1 프로세서로부터 다른 프로세서(들)로(예를 들어, 다른 프로세서(들)의 휘발성 메모리로) 다운로딩되며, 그 후에 수신 프로세서(들)가 다운로딩된 이미지로 부팅한다.
[0007] 종종, 로딩될 소프트웨어 이미지는 이진의 다중 세그먼트화된 이미지이다. 예를 들어, 소프트웨어 이미지는 다수의 코드 세그먼트들이 후속되는 헤더를 포함할 수 있다. 소프트웨어 이미지들이 외부 디바이스로부터(예를 들어, 다른 프로세서로부터) 타깃 디바이스(예를 들어, 타깃 프로세서) 상에 로딩될 때, 이진의 다중 세그먼트화된 이미지가 시스템 메모리에 전달되며 그 후에 부트 로더에 의해 타깃 위치들로 전송되는 중간 단계가 있을 수 있다.
[0008] 소프트웨어 이미지가 제 1 "1차" 프로세서로부터 타깃 "2차" 프로세서 상에 로딩되는 시스템에서, 그와 같은 로딩을 수행하는 하나의 방식은 각각의 패킷이 수신되는 임시 버퍼를 할당하는 것이고, 각각의 패킷은 연관된 패킷 헤더 정보를 페이로드와 함께 가질 것이다. 이 경우의 페이로드는 실제 이미지 데이터일 것이다. 임시 버퍼로부터, 페이로드에 대해 처리의 일부가 수행될 수 있으며, 그 후에 페이로드가 최종 목적지로 복사될 수 있다. 임시 버퍼는 예를 들어, 내부 랜덤 액세스 메모리(RAM) 또는 2배속 데이터(DDR: double data rate) 메모리에서와 같은 시스템 메모리에 위치할 수 있다.
[0009] 따라서, 중간 버퍼가 사용되는 경우에, 1차 프로세서로부터 2차 프로세서로 다운로딩되는 데이터는 중간 버퍼로 복사된다. 이러한 방식으로, 버퍼는 1차 프로세서로부터 이미지 데이터의 일부를 수신하는데 사용되며 버퍼로부터 이미지 데이터는 2차 프로세서의 메모리(예를 들어, 휘발성 메모리)에 분산될 수 있다.
[0010] 1차 프로세서, 그리고 2차 프로세서에 대한 부트 이미지를 저장하는 1차 프로세서의 비휘발성 메모리는 2차 프로세서가 구현되는 칩과는 다른 칩 상에 구현될 수 있다. 따라서, 1차 프로세서의 비휘발성 메모리로부터 2차 프로세서로(예를 들어, 2차 프로세서의 휘발성 메모리로) 데이터를 전송하기 위해, 패킷 기반 통신이 사용될 수 있으며, 여기서 패킷 헤더는 2차 프로세서에 전달되는 각각의 패킷에 포함된다. 패킷들은 중간 버퍼에 저장되며, 수신된 패킷들의 일부 처리는 데이터가 (예를 들어, 2차 프로세서의 휘발성 메모리 내의) 그 최종 목적지에 저장될 수 있도록 수행된다.
[0011] 다중 프로세서 시스템에서 2개의 프로세서들 간의 통신 방법이 제공된다. 이 방법은 2차 프로세서에 의해, 1차 프로세서와의 통신들을 개시하는 단계를 포함한다. 이 방법은 또한 2차 프로세서에 의해, 실행 가능 소프트웨어 이미지에 대한 이미지 헤더를 전송하도록 1차 프로세서에 명령하는 단계를 포함한다. 실행 가능 소프트웨어 이미지는 이미지 헤더 및 데이터 세그먼트(들)를 포함한다. 방법은 2차 프로세서에 의해, 이미지 헤더 및 데이터 세그먼트(들)를 수신하는 단계를 더 포함한다. 이 방법은 또 추가로, 2차 프로세서에 의해, 1차 프로세서에 이미지 헤더 및 데이터 세그먼트(들)의 성공적인 수신을 표시하는 단계를 포함한다. 이 방법은 2차 프로세서에 의해, 실행 가능 소프트웨어 이미지 전송의 종료 표시를 1차 프로세서로부터 수신하는 단계를 더 포함한다. 이 방법은 또한 2차 프로세서에 의해, 전송의 종료 표시의 수신을 1차 프로세서에 확인 응답하는 단계를 포함한다.
[0012] 다중 프로세서 디바이스가 제공된다. 디바이스는 2차 프로세서에 의해, 1차 프로세서와의 통신들을 개시하기 위한 수단을 포함한다. 디바이스는 또한 2차 프로세서에 의해, 실행 가능 소프트웨어 이미지에 대한 이미지 헤더를 전송하도록 1차 프로세서에 명령하기 위한 수단을 포함한다. 실행 가능 소프트웨어 이미지는 이미지 헤더 및 데이터 세그먼트(들)를 포함한다. 디바이스는 2차 프로세서에 의해, 이미지 헤더 및 데이터 세그먼트(들)를 수신하기 위한 수단을 더 포함한다. 디바이스는 또 추가로, 2차 프로세서에 의해, 1차 프로세서에 이미지 헤더 및 데이터 세그먼트(들)의 성공적인 수신을 표시하기 위한 수단을 포함한다. 디바이스는 2차 프로세서에 의해, 실행 가능 소프트웨어 이미지 전송의 종료 표시를 1차 프로세서로부터 수신하기 위한 수단을 더 포함한다. 디바이스는 또한 2차 프로세서에 의해, 전송의 종료 표시의 수신을 1차 프로세서에 확인 응답하기 위한 수단을 포함한다.
[0013] 컴퓨터 프로그램 물건이 제공된다. 컴퓨터 프로그램 물건은 비-일시적 프로그램 코드가 기록된 비-일시적 컴퓨터 판독 가능 매체를 포함한다. 비-일시적 프로그램 코드는 2차 프로세서에 의해, 1차 프로세서와의 통신들을 개시하기 위한 프로그램 코드를 포함한다. 비-일시적 프로그램 코드는 2차 프로세서에 의해, 실행 가능 소프트웨어 이미지에 대한 이미지 헤더를 전송하도록 1차 프로세서에 명령하기 위한 프로그램 코드를 더 포함한다. 실행 가능 소프트웨어 이미지는 이미지 헤더 및 데이터 세그먼트(들)를 포함한다. 비-일시적 프로그램 코드는 2차 프로세서에 의해, 이미지 헤더 및 데이터 세그먼트(들)를 수신하기 위한 프로그램 코드를 더 포함한다. 비-일시적 프로그램 코드는 또 추가로, 2차 프로세서에 의해, 1차 프로세서에 이미지 헤더 및 적어도 하나의 데이터 세그먼트의 성공적인 수신을 표시하기 위한 프로그램 코드를 포함한다. 비-일시적 프로그램 코드는 2차 프로세서에 의해, 실행 가능 소프트웨어 이미지 전송의 종료 표시를 1차 프로세서로부터 수신하기 위한 프로그램 코드를 더 포함한다. 비-일시적 프로그램 코드는 또한 2차 프로세서에 의해, 전송의 종료 표시의 수신을 1차 프로세서에 확인 응답하기 위한 프로그램 코드를 포함한다.
[0014] 다중 프로세서 시스템에서 2개의 프로세서들 간의 통신 방법이 제공된다. 이 방법은 1차 프로세서에 의해, 실행 가능 소프트웨어 이미지에 대한 이미지 헤더를 전송하라는 명령을 수신하는 단계를 포함한다. 실행 가능 소프트웨어 이미지는 이미지 헤더 및 데이터 세그먼트(들)를 포함한다. 이 방법은 또한 1차 프로세서에 의해, 이미지 헤더 및 데이터 세그먼트(들)를 2차 프로세서에 전송하는 단계를 포함한다. 이 방법은 1차 프로세서에 의해, 이미지 헤더 및 데이터 세그먼트(들)의 성공적인 수신의 표시를 2차 프로세서로부터 수신하는 단계를 더 포함한다. 이 방법은 또 추가로, 1차 프로세서에 의해, 실행 가능 이미지 전송의 종료 표시를 전송하는 단계를 포함한다. 이 방법은 또한 1차 프로세서에 의해, 전송의 종료 표시의 수신의 확인 응답을 2차 프로세서로부터 수신하는 단계를 포함한다.
[0015] 다중 프로세서 디바이스가 제공된다. 디바이스는 1차 프로세서에 의해, 실행 가능 소프트웨어 이미지에 대한 이미지 헤더를 전송하라는 명령을 수신하기 위한 수단을 포함한다. 실행 가능 소프트웨어 이미지는 이미지 헤더 및 데이터 세그먼트(들)를 포함한다. 디바이스는 또한 1차 프로세서에 의해, 이미지 헤더 및 데이터 세그먼트(들)를 2차 프로세서에 전송하기 위한 수단을 포함한다. 디바이스는 1차 프로세서에 의해, 이미지 헤더 및 데이터 세그먼트(들)의 성공적인 수신의 표시를 2차 프로세서로부터 수신하기 위한 수단을 더 포함한다. 디바이스는 또 추가로, 1차 프로세서에 의해, 실행 가능 이미지 전송의 종료 표시를 전송하기 위한 수단을 포함한다. 디바이스는 또한 1차 프로세서에 의해, 전송의 종료 표시의 수신의 확인 응답을 2차 프로세서로부터 수신하기 위한 수단을 포함한다.
[0016] 컴퓨터 프로그램 물건이 제공된다. 컴퓨터 프로그램 물건은 비-일시적 프로그램 코드가 기록된 비-일시적 컴퓨터 판독 가능 매체를 포함한다. 비-일시적 프로그램 코드는 1차 프로세서에 의해, 실행 가능 소프트웨어 이미지에 대한 이미지 헤더를 전송하라는 명령을 수신하기 위한 프로그램 코드를 포함하며, 상기 실행 가능 소프트웨어 이미지는 상기 이미지 헤더 및 데이터 세그먼트(들)를 포함한다. 비-일시적 프로그램 코드는 또한 1차 프로세서에 의해, 이미지 헤더 및 데이터 세그먼트(들)를 2차 프로세서에 전송하기 위한 프로그램 코드를 포함한다. 비-일시적 프로그램 코드는 1차 프로세서에 의해, 이미지 헤더 및 적어도 하나의 데이터 세그먼트의 성공적인 수신의 표시를 2차 프로세서로부터 수신하기 위한 프로그램 코드를 더 포함한다. 비-일시적 프로그램 코드는 또 추가로, 1차 프로세서에 의해, 실행 가능 이미지 전송의 종료 표시를 전송하기 위한 프로그램 코드를 포함한다. 비-일시적 프로그램 코드는 또 추가로, 1차 프로세서에 의해, 전송의 종료 표시의 수신의 확인 응답을 2차 프로세서로부터 수신하기 위한 프로그램 코드를 포함한다.
[0017] 본 교시들의 더 완벽한 이해를 위해, 이제 첨부 도면들과 함께 실시되는 다음의 설명에 대해 언급된다.
[0018] 도 1은 본 개시의 양상들이 구현될 수 있는 예시적인 디바이스의 예시이다.
[0019] 도 2는 본 개시의 양상들이 구현될 수 있는 예시적인 디바이스의 예시이다.
[0020] 도 3은 본 개시의 일 양상에 따라 1차 프로세서로부터 2차 프로세서에 실행 가능 이미지를 로딩하기 위한 예시적인 로딩 프로세스에 대한 동작 흐름의 예시이다.
[0021] 도 4는 본 개시의 일 양상에 따른 2개의 프로세서들 사이의 패킷 흐름의 예시이다.
[0022] 도 5는 본 개시의 한 양상이 유리하게 이용될 수 있는 예시적인 무선 통신 시스템을 도시하는 블록도이다.
[0023] 도 6은 본 개시의 일 양상에 따른 실행 가능 소프트웨어 이미지의 전송에 관한 통신들을 예시하는 블록도이다.
[0024] 도 7은 본 개시의 일 양상에 따른 실행 가능 소프트웨어 이미지의 전송에 관한 통신들을 예시하는 블록도이다.
[0025] 본 명세서에서 "예시적인"이라는 단어는 "일례, 실례 또는 예시로서의 역할"을 의미하는데 사용된다. 본 명세서에 "예시적인"으로서 설명되는 어떠한 양상도 반드시 다른 양상들에 비해 선호되거나 유리한 것으로 해석되는 것은 아니다.
[0026] 본 명세서에 개시되는 특정 양상들은 하나의 1차 프로세서가 시스템 내의 (본 명세서에서는 "2차" 프로세서들로 지칭되는) 하나 또는 그보다 많은 다른 프로세서들의 실행 가능 이미지들을 저장하는 비휘발성 메모리에 접속된다. 그와 같은 다중 프로세서 시스템에서 2차 프로세서들 각각은 실행 가능 이미지들, 런타임 데이터 및 선택적으로 파일 시스템 미러를 저장하는데 사용되는 전용 휘발성 메모리에 접속될 수 있다.
[0027] 실행 가능 이미지들은 종종 각각의 세그먼트가 서로 다른 메모리 구역에 로딩될 수 있는 세그먼트화된 포맷으로 저장된다. 실행 가능한 세그먼트들의 타깃 메모리 위치들은 서로에 관하여 인접하거나 인접하지 않을 수 있다. 다중 세그먼트화된 이미지 포맷의 일례는 실행 가능 이미지가 다수의 세그먼트들로 분해되게 허용하는 실행 가능 및 링크 포맷(ELF: Executable and Linking Format)이며 이들 세그먼트들 중 각각의 세그먼트는 서로 다른 시스템 메모리 위치들로 로딩될 수 있다.
[0028] 하나의 예시적인 양상에서 1차 프로세서의 비휘발성 메모리로부터 2차 프로세서의 휘발성 메모리로 세그먼트화된 이미지를 로딩하기 위한 직접 분산 로드 기술이 개시된다. 이하에 더 논의되는 바와 같이, 직접 확산 로드 기술은 임시 버퍼의 사용을 피한다. 예를 들어, 일 양상에서, 각각의 헤더를 각각 포함하는 패킷들을 통해 이미지가 전달되는 패킷 기반 통신을 이용하기보다는, 원시(raw) 이미지 데이터가 1차 프로세서로부터 2차 프로세서로 로딩된다. 다른 양상에서, 데이터에 대한 타깃 위치 정보를 결정하는데 사용되는 정보를 포함하는 헤더들이 사용된다.
파일 시스템에 대해 감소된 로컬화된 비휘발성 메모리와 함께, 중앙 집중된 비휘발성 메모리를 갖는 예시적인 다중 프로세서 아키텍처
[0029] 도 1은 1차 프로세서(애플리케이션 프로세서(104))가 1차(큰) 비휘발성 메모리(106)(예를 들어, NAND 플래시 메모리)를 호스팅하는 한편, 제 2 프로세서(예를 들어, 모뎀 프로세서(110))가 2차(감소된 또는 최소) 비휘발성 메모리(114)(예를 들어, NOR 플래시 메모리)를 갖는 제 1 다중 프로세서 아키텍처(102)의 블록도를 예시한다.
[0030] 통신 디바이스 아키텍처(102)에서, 애플리케이션 프로세서(104)는 1차 비휘발성 메모리(106) 및 애플리케이션 프로세서 휘발성 메모리(108)(예를 들어, 랜덤 액세스 메모리)에 연결된다. 모뎀 프로세서(110)는 2차 비휘발성 메모리(114) 및 모뎀 프로세서 휘발성 메모리(112)에 연결된다. 프로세서 간 통신 버스(134)가 애플리케이션 프로세서(104)와 모뎀 프로세서(110) 사이의 통신들을 허용한다.
[0031] 모뎀 프로세서(110)에 대한 모뎀 실행 가능 이미지(120)가 AP 실행 가능 이미지(118) 및 AP 파일 시스템(116)과 함께 애플리케이션 프로세서(AP: application processor) 비휘발성 메모리(106)에 저장될 수 있다. 애플리케이션 프로세서(104)는 그 AP 실행 가능 이미지(118)를 애플리케이션 프로세서 휘발성 메모리(108)에 로딩할 수 있으며 그 이미지를 AP 실행 가능 이미지(122)로서 저장할 수 있다. 애플리케이션 프로세서 휘발성 메모리(108)는 또한 AP 런타임 데이터(124)를 저장하도록 기능할 수 있다.
[0032] 모뎀 프로세서(110)는 그의 파일 시스템(128) 저장을 위한 전용 2차(감소된 또는 최소) 비휘발성 메모리(114)(예를 들어, NOR 플래시)를 갖는다. 이러한 2차(감소된 또는 최소) 비휘발성 메모리(114)는 런타임 모뎀 실행 가능 이미지들(120) 및 파일 시스템(128) 모두를 저장할 수 있는 플래시 디바이스보다 더 소형이고 더 낮은 비용이 든다.
[0033] 시스템 파워업 시에, 모뎀 프로세서(110)는 하드웨어 부트 ROM(126)(소형 판독 전용 온-칩 메모리)으로부터 그의 1차 부트 로더(PBL: primary boot loader)를 실행한다. 모뎀 PBL은 애플리케이션 프로세서(104)로부터 모뎀 실행 가능 파일(executable)들(120)을 다운로딩하도록 적응될 수 있다. 즉, (처음에 1차 비휘발성 메모리(106)에 저장되는) 모뎀 실행 가능 이미지(120)가 애플리케이션 프로세서(104)로부터 모뎀 프로세서(110)에 의해 요청된다. 애플리케이션 프로세서(104)는 모뎀 실행 가능 이미지(120)를 리트리브(retrieve)하며 이를 프로세서 간 통신 버스(134)(예를 들어, 프로세서 간 통신 버스)를 통해 모뎀 프로세서(110)에 제공한다. 모뎀 프로세서(110)는 데이터를 모뎀 프로세서 RAM(112) 내의 임시 버퍼에 복사하지 않고서 모뎀 실행 가능 이미지(132)를 최종 목적지에 대한 모뎀 프로세서 RAM(랜덤 액세스 메모리)(112)에 직접 저장한다. 프로세서 간 통신 버스(134)는 예를 들어, HSIC 버스(USB-based High Speed Inter-Chip; USB-기반 고속 칩 간), HSI 버스(MIPI High Speed Synchronous Interface; MIPI 고속 동기식 인터페이스), SDIO 버스(Secure Digital I/O interface; 보안 디지털 I/O 인터페이스), UART 버스(Universal Asynchronous Receiver/Transmitter; 범용 비동기식 수신기/송신기), SPI 버스(Serial Peripheral Interface; 직렬 주변 장치 인터페이스), I2C 버스(Inter-Integrated Circuit; 집적 회로 간), 또는 모뎀 프로세서(110)와 애플리케이션 프로세서(104) 둘 다에 이용 가능한 칩 간 통신에 적합한 임의의 다른 하드웨어 인터페이스일 수 있다.
[0034] 일단 모뎀 실행 가능 이미지(120)가 모뎀 프로세서 RAM(112)에 다운로딩되어 인증되면, 이는 모뎀 실행 가능 이미지(132)로서 유지된다. 추가로, 모뎀 프로세서 휘발성 메모리(112)는 또한 모뎀 런타임 데이터(130)를 저장할 수 있다. 모뎀 부트 ROM 코드(126)는 그 후에 그 모뎀 실행 가능 이미지(132)로 점프하여 모뎀 프로세서 RAM(112)으로부터 메인 모뎀 프로그램을 실행하기 시작할 수 있다. 무선 주파수(RF: radio frequency) 교정 및 시스템 파라미터들과 같은 임의의 영구적(비휘발성) 데이터는 모뎀 프로세서(110)에 부착된 2차(감소된 또는 최소) 비휘발성 메모리(114)를 사용하여 모뎀 파일 시스템(128) 상에 저장될 수 있다.
파일 시스템에 대해 로컬화된 비휘발성 메모리 없이 중앙 집중된 비휘발성 메모리를 갖는 예시적인 다중 프로세서 아키텍처
[0035] 도 2는 1차 프로세서(애플리케이션 프로세서(204))가 1차(큰) 비휘발성 메모리(206)(예를 들어, NAND 플래시 메모리)를 호스팅하는 제 2 다중 프로세서 아키텍처(202)의 블록도를 예시한다. 1차 비휘발성 메모리(206)는 2차 프로세서(모뎀 프로세서(210))에 대한 모뎀 실행 가능 이미지(214) 및/또는 모뎀 파일 시스템(220)을 저장할 수 있다. 2차 프로세서(모뎀 프로세서(210))는 1차 프로세서(204)로부터의 모뎀 실행 가능 이미지(214) 및/또는 모뎀 파일 시스템(220)을 요청하도록 구성될 수 있다. 그 후에, 1차 프로세서(204)는 요청된 모뎀 실행 가능 이미지(214) 및/또는 모뎀 파일 시스템(220)을 비휘발성 메모리(206)로부터 리트리브하여 이를 프로세서 간 통신 버스(234)를 통해 2차 프로세서(210)에 제공한다.
[0036] 이러한 아키텍처(202)에서, 애플리케이션 프로세서(204)는 비휘발성 메모리(206) 및 애플리케이션 프로세서 휘발성 메모리(208)(예를 들어, 랜덤 액세스 메모리)에 연결된다. 모뎀 프로세서(210)는 모뎀 프로세서 휘발성 메모리(212)에 연결되지만 그 자신의 비휘발성 메모리를 갖지 않는다. 모뎀 프로세서 휘발성 메모리(212)는 파일 시스템 미러(228), 모뎀 실행 가능 이미지(236) 및 모뎀 런타임 데이터(230)를 저장한다. 프로세서 간 통신 버스(234)는 애플리케이션 프로세서(204)와 모뎀 프로세서(210) 사이의 통신들을 허용한다.
[0037] 모뎀 프로세서(210)에 대한 모든 실행 가능 이미지들(214) 및 파일 시스템(220)은 AP 실행 가능 이미지(218) 및 AP 파일 시스템(216)과 함께 비휘발성 메모리(206)에 저장될 수 있다. 애플리케이션 프로세서(204)는 그의 AP 실행 가능 이미지(218)를 애플리케이션 프로세서 휘발성 메모리(208)에 로딩하여 이를 AP 실행 가능 이미지(222)로서 저장할 수 있다. 애플리케이션 프로세서 휘발성 메모리(208)는 또한 AP 런타임 데이터(224)를 저장하도록 기능할 수 있다. 모뎀 파일 시스템은 가입자 아이덴티티 클로닝(cloning)의 방지 및 프라이버시 보호를 위해 모뎀 프로세서의 비밀 키로 암호화될 수 있다.
[0038] 시스템 파워업 시에, 모뎀 부트 ROM 코드(226)가 애플리케이션 프로세서(204)로부터 모뎀 프로세서 휘발성 메모리(212)에 모뎀 실행 가능 이미지(214)와 모뎀 파일 시스템(220) 모두를 다운로딩한다. 정상 동작 동안, 모뎀 파일 시스템(228)에 대한 임의의 판독 액세스들은 모뎀 프로세서 휘발성 메모리(212)로부터 서비스된다. 임의의 기록 액세스들 역시 모뎀 프로세서 휘발성 메모리(212)에서 수행된다. 추가로, 모뎀 프로세서 휘발성 메모리(212) 내의 파일 시스템(228)의 콘텐츠를 비휘발성 메모리(206) 상에 저장된 모뎀 파일 시스템(220)과 동기화하기 위해 모뎀 프로세서(210) 및 애플리케이션 프로세서(204) 상에서 실행하는 배경 프로세스가 존재할 수 있다.
[0039] 1차 프로세서 및 2차 프로세서는 2차 프로세서에 대한 휘발성 메모리 내의 파일 시스템을 1차 비휘발성 메모리 내의 대응하는 파일 시스템과 주기적으로 동기화할 수 있다. 모뎀 파일 시스템(228)에 대한 첫 번째 기록은 모뎀 프로세서(210)에서 타이머(예를 들어, 10분 타이머)를 시작할 수 있다. 이 타이머가 실행하는 동안, 파일 시스템(228)에 대한 모든 기록들은 모뎀 프로세서 휘발성 메모리(212)에 합쳐진다. 타이머의 만료시에, 모뎀 프로세서(210)는 휘발성 메모리(212)로부터의 파일 시스템 이미지(228)를 복사하고, 이를 암호화하며, 애플리케이션 프로세서(204)에 새로운 데이터가 이용 가능하다고 경보한다. 애플리케이션 프로세서(204)는 암호화된 사본을 판독하고 이를 모뎀 파일 시스템(220)으로 비휘발성 메모리(206)에 기록한다. 애플리케이션 프로세서(204)는 그 후에, 기록 동작이 완료됨을 모뎀 프로세서(210)에 시그널링한다. 동기화 동작이 실패한다면, 모뎀 파일 시스템의 현재 버전이 사용될 수 있는데, 이는 모뎀 프로세서(210)가 애플리케이션 프로세서(204)로부터 이미지를 재로딩(reloading)하기보다는 그 자신의 휘발성 메모리에 현재 상주하는 이미지로 계속해서 실행할 수 있음을 의미한다. 동기화는 주기적으로(예를 들어, 90초마다) 또는 모뎀에 의한 그의 파일 시스템으로의 기록 동작 이후 특정 시간 후에 발생할 수 있다. 갑작스러운 전원 제거와 같은 상황들로부터의 변형을 방지하기 위해, 모뎀 파일 시스템(220)의 2개의 사본들이 저장될 수 있다.
[0040] 모뎀 프로세서(210)는 또한 애플리케이션 프로세서의 비휘발성 메모리(206)에 대한 파일 시스템 미러(228)의 "플러시(flush)" 동작을 개시할 수 있다. 이것은 전화 파워-오프뿐 아니라, 착신 SMS 메시지들의 수락 및 저장을 표시하기 위해 네트워크에 확인 응답 메시지를 전송하는 것을 비롯하여, 다수의 이유들로 인해 발생할 수 있다.
[0041] 모뎀 프로세서(210) 상의 파일 시스템 판독 동작들은 모뎀 프로세서 휘발성 메모리(212)로부터 서비스되며, 이는 모뎀 파일 시스템의 현재 상태를 반영한다. 판독 동작들이 기록 동작들보다 더 빈번하고, 기록 동작들은 활동의 "버스트들"로 발생하는 경향이 있기 때문에, 전체 시스템 로드 및 전력 소모가 감소될 수 있다.
[0042] 애플리케이션 프로세서(204), 모뎀 프로세서(210) 및 부트 로더는 비휘발성 메모리(206)에서 상시 이용 가능한 적어도 하나의 완전한 파일 시스템 이미지가 항상 존재함을 보장하기 위해 적소에 특정 조치(measure)들을 갖는다. 이것은 전력 손실 또는 기습 리셋 시나리오들에 대한 면역력을 제공한다.
[0043] 본 명세서에 개시된 개념들의 적용은 상기에 도시된 예시적인 시스템으로 제한되는 것이 아니라 다양한 다른 다중 프로세서 시스템들에 비슷하게 이용될 수 있다.
무복사 ( Zero Copy ) 전송 흐름
[0044] 본 개시의 양상들은 1차 프로세서의 비휘발성 메모리로부터 2차 프로세서의 휘발성 메모리에 실행 가능 소프트웨어 이미지들을 효율적으로 로딩하기 위한 기술들을 제공한다. 상기에 언급된 바와 같이, 종래의 로딩 프로세스들은 이진의 다중 세그먼트화된 이미지가 버퍼링(예를 들어, 시스템 메모리로 전송)된 다음, 이후에 (예를 들어, 부트 로더에 의해) 타깃 위치들에 분산되는 중간 단계를 요구하였다. 본 개시의 양상들은 종래의 로딩 프로세스들에서 요구된 버퍼링의 중간 단계를 완화하는 기술들을 제공한다. 따라서, 본 개시의 양상들은 추가적인 메모리 복사 동작들을 피하며, 그에 의해 성능을 개선한다(예를 들어, 다중 프로세서 시스템에서 2차 프로세서들을 부팅하는데 요구되는 시간을 감소시킨다).
[0045] 이하에 더 논의되는 바와 같이, 본 개시의 한 예시적인 양상은 1차 프로세서의 비휘발성 메모리로부터 2차 프로세서의 휘발성 메모리로 실행 가능 소프트웨어 이미지들을 로딩하기 위한 직접 분산 로드 기술을 이용한다. 본 개시의 특정 양상들은 또한 이하에 더 논의된 바와 같은, 효율성을 더 개선할 수 있는 인증과 같은 전송 후 데이터 처리로 동시 이미지 전송들을 가능하게 한다.
[0046] 일 양상에서, 호스트 1차 프로세서는 실제 이미지 데이터로부터 어떠한 정보도 처리하거나 추출하지 않는다 ― 호스트 1차 프로세서는 패킷에 부착되는 어떠한 패킷 헤더도 없이, 단순히 이미지 데이터를 "원시" 데이터로서 타깃에 전송한다. 타깃 2차 프로세서는 데이터 전송 요청을 개시하기 때문에, 이는 얼마나 많은 데이터를 수신할지를 정확하게 안다. 이것은 호스트가 패킷 헤더 없이 데이터를 전송하게 할 수 있으며, 타깃이 직접 데이터를 수신하고 저장하게 할 수 있다. 그 양상에서, 타깃은 원하는 대로 호스트로부터의 데이터를 요청한다. 타깃이 요청하는 제 1 데이터 항목은 정해진 이미지 전송에 대한 이미지 헤더이다. 일단 타깃이 이미지 헤더를 처리하면, 타깃은 이미지의 각각의 데이터 세그먼트의 위치 및 크기를 알게 된다. 이미지 헤더는 또한 타깃 메모리에서의 이미지의 목적지 어드레스를 특정한다. 이러한 정보로, 타깃은 각각의 세그먼트에 대해 호스트로부터의 데이터를 요청할 수 있으며, 타깃 메모리에서의 적절한 위치에 데이터를 직접 전송한다. 애플리케이션 프로세서 상의 프로세서 간 통신 버스에 대한 하드웨어 제어기는 모뎀 프로세서에 의해 처리되고 스트립(strip)될 그 자신의 저 레벨 프로토콜 헤더들을 추가할 수 있다. 이들 저 레벨 헤더들은 양쪽 프로세서들 상에서 실행하는 소프트웨어에 투명할 수 있다.
[0047] 본 개시의 일 양상에서, 로딩 프로세스는 도 3에 도시된 예시적인 흐름에 예시된 바와 같이 2개의 스테이지들로 분할된다. 도 3은 (자신들의 비휘발성 메모리(106 또는 206)를 갖는 도 1 또는 도 2의 애플리케이션 프로세서들(104 또는 204)일 수 있는) 1차 프로세서(301) 및 (자신들의 휘발성 메모리(112 또는 212)를 갖는 도 1 또는 도 2의 모뎀 프로세서(110 또는 210)일 수 있는) 2차 프로세서(302)의 블록도를 도시한다. 도 3에서, 2차 프로세서(302)에 대한 예시적인 소프트웨어 이미지가 1차 프로세서(301)의 비휘발성 메모리에 저장된다. 본 예에 도시된 바와 같이, 예시적인 소프트웨어 이미지(303)는 이미지 헤더 부분 및 (본 예에서는 데이터 세그먼트들(1-5)로 도시된) 다수의 데이터 세그먼트들을 포함하는 다중 세그먼트 이미지이다. 1차 프로세서(301) 및 2차 프로세서(302)는 서로 다른 물리적 실리콘 칩들 상에(즉, 서로 다른 칩 패키지 상에) 위치할 수 있거나 동일한 패키지 상에 위치할 수 있다.
[0048] 도 3의 예시적인 로딩 프로세스의 제 1 스테이지에서, 이미지 헤더 정보가 2차 프로세서(302)에 전송된다. 1차 프로세서(301)는 이미지 헤더로 시작하여, 데이터 이미지 세그먼트들을 1차 프로세서(306)의 비휘발성 메모리로부터 리트리브한다. 1차 프로세서(301)는 1차 프로세서(306)의 비휘발성 메모리로부터 1차 프로세서(307)의 시스템 메모리에 개별 이미지 세그먼트들을 로딩하기 위해 이미지 헤더를 파싱(parse)한다. 이미지 헤더는 모뎀 이미지 실행 가능 데이터가 결국 2차 프로세서(305)의 시스템 메모리에 배치될 위치를 식별하는데 사용되는 정보를 포함한다. 헤더 정보는 실제 실행 가능 데이터를 수신할 때 분산 로더/직접 메모리 액세스 제어기(304)가 수신 어드레스를 프로그래밍하기 위해 2차 프로세서(302)에 의해 사용된다. 데이터 세그먼트들이 그 후에 시스템 메모리(307)로부터 1차 하드웨어 전송 메커니즘(308)에 전송된다. 세그먼트들은 그 후에 1차 프로세서(301)의 하드웨어 전송 메커니즘(308)으로부터 프로세서 간 통신 버스(310)(예를 들어, HS-USB 케이블)를 통해 2차 프로세서(302)의 하드웨어 전송 메커니즘(309)에 전송된다. 전송되는 제 1 세그먼트는 데이터 세그먼트들을 2차 프로세서(305)의 시스템 메모리 내의 타깃 위치들에 위치시키기 위해 2차 프로세서에 의해 사용되는 정보를 포함하는 이미지 헤더일 수 있다. 이미지 헤더는 데이터에 대한 타깃 위치 정보를 결정하는데 사용되는 정보를 포함할 수 있다.
[0049] 일 양상에서, 타깃 위치들은 미리 결정되는 것이 아니라, 그보다는 분산 로딩 프로세스의 일부로서 2차 프로세서에서 실행하는 소프트웨어에 의해 결정된다. 이미지 헤더로부터의 정보가 타깃 위치들을 결정하는데 사용될 수 있다. 본 양상에서 2차 프로세서의 부트 로더는 먼저 1차 프로세서로부터의 이미지 헤더를 요청한다(1차 프로세서 CPU는 이미지 헤더를 전혀 처리하지 않는다). 2차 프로세서는 이미지 헤더를 주시함으로써 비휘발성 메모리에서 데이터 세그먼트들이 어떻게 설계되는지를 알게된다(RAM 어드레스/크기 외에, 헤더는 또한 각각의 세그먼트에 대한 이미지 파일의 시작에 관한 비휘발성 메모리에서의 상대적인 위치들을 포함한다). 데이터 세그먼트들에 대한 후속 요청들은 2차 프로세서에 의해 구동된다.
[0050] 다른 양상에서 1차 프로세서는, 이미지 헤더를 파싱한 다음에 후속하는 데이터 세그먼트들을 이미지 헤더에 지시된 특정 어드레스에 배치하도록 2차 프로세서의 제어기를 프로그래밍함으로써 2차 프로세서의 휘발성 메모리에서 세그먼트들을 어디에 둘지를 표시할 수 있다. 이것은 2차 프로세서의 제어기의 이러한 외부 제어를 허용하기 위한 추가 하드웨어를 수반할 수 있다.
[0051] 이미지 헤더는 일반적으로 세그먼트들 각각이 2차 프로세서의 시스템 메모리(305)에 로딩되어야 하는 위치를 정의하는 세그먼트 시작 어드레스들 및 크기들의 목록을 포함한다. 2차 프로세서(302)는 분산 로더 제어기(304)를 포함하는 하드웨어 전송 메커니즘(309)(예를 들어, USB 제어기)을 포함한다. 로딩 프로세스의 제 2 스테이지에서 부트 로더는, 착신 데이터를 수신하고 이를 제 1 스테이지에서 수신된 헤더 정보에 따라 2차 프로세서의 대응하는 타깃 메모리 구역들(305)로 분산 로딩하도록 프로세서 간 접속 제어기의 엔진을 프로그래밍한다.
[0052] USB 또는 HSIC 버스의 경우에, 이미지의 각각의 세그먼트는 프로세서 간 통신 버스(310)를 통해 단일 USB 전송으로서 전송될 수 있다. 세그먼트의 크기 및 목적지 어드레스를 아는 것은 소프트웨어가 2차 프로세서(302)에 의한 최소 소프트웨어 개입으로 (시스템 메모리(305) 내의) 타깃 메모리 위치로의 직접적인 전체 세그먼트 전송을 위해 2차 프로세서(302)의 분산 로더 제어기(304)를 프로그래밍하도록 허용한다. 이것은 세그먼트들이 상당히 클 때(예를 들어, 1 메가바이트(MB) 초과) USB/HSIC 버스에 대한 증가된 성능을 야기할 수 있다.
[0053] 도 3에 도시된 바와 같이, 데이터 세그먼트들은 반드시 2차 프로세서의 시스템 메모리(305) 내의 연속적인 위치들에 배치되는 것은 아니다. 대신에, 세그먼트들은 메모리의 서로 다른 위치들로 확산될 수도 있다. 도 3의 예시적인 로딩 프로세스는 2차 프로세서의 소프트웨어(즉, 이미지(303))의 사본이 1차 프로세서로부터 2차 프로세서의 시스템 메모리(305) 상의 세그먼트의 최종 목적지에 직접 전송되게 할 수 있다. 또한, 전송될 단일 데이터 세그먼트만이 존재할 수도 있다.
[0054] 이미지 헤더가 1차 프로세서(301)로부터 2차 프로세서(302)의 분산 로더 제어기(304)로 로딩된다. 그 이미지 헤더는 데이터 세그먼트들이 시스템 메모리(305)에 위치할 곳에 관한 정보를 제공한다. 분산 로더 제어기(304)는 그에 따라 이미지 세그먼트들을 2차 프로세서의 시스템 메모리(305)에서 이들 각각의 타깃 위치들로 직접 전송한다. 즉, 일단 2차 프로세서의 CPU가 그 메모리(305)에서 이미지 헤더를 처리하고 분산 로더 제어기(304)를 프로그래밍하면, 분산 로더 제어기(304)는 이미지 데이터 세그먼트(들)가 2차 프로세서의 시스템 메모리(305) 내에 어디로 들어가는지를 정확하게 알고 있으며, 따라서 하드웨어 분산 로더 제어기(304)는 그 후에 그에 따라 데이터 세그먼트들을 이들의 타깃 목적지들에 직접 전송하도록 프로그래밍된다. 도 3의 예에서, 분산 로더 제어기(304)는 데이터 세그먼트(들)를 수신하며 이들을 시스템 메모리(305) 내의 서로 다른 위치들로 분산한다. 일 양상에서, 실행 가능 소프트웨어 이미지는 전체 실행 가능 소프트웨어 이미지가 2차 프로세서의 하드웨어 버퍼에 저장되지 않고서 2차 프로세서의 시스템 메모리에 로딩된다. 일 양상에서 전송될 이미지 데이터 세그먼트(들)는 메모리(306)에서 비-인접 위치들에 위치한다. 다른 양상에서는, 단지 단일 이미지 데이터 세그먼트만이 전송된다. 다른 양상에서는, 복수의 이미지 데이터 세그먼트들이 전송된다.
[0055] 따라서, 상기 양상에서는 2차 프로세서에서 어떠한 추가 메모리 복사 동작들도 일어나지 않는다. 따라서, 전체 이미지에 대한 임시 버퍼, 그리고 패킷 헤더 처리 등을 이용하는 종래의 기술들은 더 효율적인 직접 로딩 프로세스를 위해 피하게 된다. 따라서, 도 3의 예시적인 로드 프로세스는 1차 프로세서로부터 2차 프로세서로 소프트웨어 이미지를 로딩하기 위해 통상 요구되는 중간 버퍼 동작들을 요구하지 않는다. 전체 이미지를 홀딩하는 임시 버퍼로부터의 분산 로딩 대신에, 도 3의 예시적인 로드 프로세스는 이미지 세그먼트들을 하드웨어로부터 시스템 메모리로 이들 각각의 타깃 목적지들에 직접 분산 로딩하는 것을 허용한다. 일단 이미지 헤더가 처리되면, 실행 가능 이미지가 타깃 메모리로 직접 분산 로딩되어, 추가적인 CPU 관여를 피한다.
[0056] 종래에, (예를 들어, 1차 프로세서로부터 2차 프로세서에 이미지 데이터를 전달하는데 사용되는 바와 같이) 외부 인터페이스가 수반될 때, 양쪽 프로세서들이 실제 데이터는 무엇인지 그리고 데이터를 어떻게 판독하는지를 알도록 그 데이터를 전송하기 위해 어떤 메커니즘이 요구된다. 종종, 외부 인터페이스를 통해 전송될 데이터는 패킷 내에 포함되는 데이터를 설명하는 헤더를 포함하는 각각의 패킷으로 패킷화된다. 예를 들어, 데이터가 네트워크를 통해 전송되는 전송 제어 프로토콜/인터넷 프로토콜(TCP/IP: transmission control protocol/internet protocol)에서, 패킷 헤더들의 처리와 연관된 오버헤드가 발생한다.
[0057] (예를 들어, 도 3의 예에서와 같이) 본 발명의 특정 양상들에 따라, 원시 이미지 데이터가 전송된다. 예를 들어, 패킷 헤더와 함께 이미지 데이터의 각각의 세그먼트를 전송하기보다는, 도 3의 예시적인 로드 프로세스는 전체 이미지와 연관된 헤더로부터 데이터에 관한 원하는 정보를 결정한다. 따라서, 처음에 이미지 헤더가 전송될 수 있으며, 데이터를 시스템 메모리(305)에 어떻게 저장할지를 결정하기 위한 모든 처리는 (이미지 헤더에 기초하여) 세그먼트들의 전송 전에 일어날 수 있으며, 그 후에는 세그먼트들이 전송될 때 각각의 세그먼트에 대한 패킷 헤더의 처리를 요구하기보다는, 세그먼트들이 원시 데이터로서 전송된다. 따라서, 도 3의 예에서, 원시 이미지 데이터가 1차 프로세서로부터 2차 프로세서로 전달되며, 그 후에 하드웨어에 의해 처리되며, 이는 임의의 USB 패킷 헤더들 등을 스트립 오프할 수 있다. 본 예시적인 양상에서, 실제 데이터 세그먼트들에 대해 어떠한 CPU 처리도 이루어지지 않으며, 그에 의해 로드 프로세스의 효율을 개선한다.
[0058] 다수의 이미지들이 동일한 2차 프로세서의 휘발성 메모리로 로딩되어야 할 때, 도 3의 상기 시퀀스는 본 개시의 일 양상에 따라, 전송되는 이미지들의 수와 같은 횟수로 반복될 수 있다. 특정 양상들에서, 1차 프로세서(301) 내에서, 비휘발성 메모리로부터 시스템 메모리로의 전송은 1차 프로세서로부터 2차 프로세서로 데이터를 전송하는 것과 병렬로 일어날 수 있다.
[0059] 일 양상에서, 각각의 세그먼트의 전송의 완료시에, 2차 프로세서(302)는 다음 세그먼트를 전송하도록 분산 로더 제어기(304)를 프로그래밍하며 막 전송된 세그먼트의 인증을 시작한다. 이것은 2차 프로세서(302)가 인증을 수행하는 동안 분산 로더 제어기(304)가 데이터를 전송하게 할 수 있다. 인증은 여기서 일반적으로, 수신된 데이터의 무결성 및 진위성을 검사하는 것을 의미한다. 인증 메커니즘의 상세들은 본 개시의 범위 밖에 있으며, (해당 기술분야에 잘 알려진 것들을 포함하여) 임의의 적합한 인증 메커니즘은 정해진 구현에서 바람직할 수 있는 것으로서 이용될 수 있다. 상기 언급된 병렬성은 또한 정해진 구현에서 2차 프로세서(302)에 의해 수행되는 것이 바람직할 수 있는 다른 전송 후 처리에 적용될 수 있다.
[0060] 최종 이미지의 최종 세그먼트가 전송되고 인증되자마자, 2차 프로세서(302)는 부트 프로세스를 계속하여, 전송된 이미지들을 실행할 수 있다.
프로세서 간 통신 프로토콜
[0061] 프로세서 간 통신 프로토콜이 또한 개시된다. 본 개시의 일 양상에서, 2차 프로세서로부터 구동되는 예시적인 프로토콜이 제공된다. 예를 들어, 2차 프로세서는 1차 프로세서로부터 자신이 원하는 모든 데이터 전송들을 개시할 수 있다. 다시 말해, 2차 프로세서는 2차 프로세서가 어떤 데이터를 수신하길 원하는지에 관하여 1차 프로세서에 명령한다. 따라서, 특정 양상들에서, 1차 프로세서는 어딘가에(예를 들어, 1차 프로세서가 연결되는 비휘발성 메모리 상에) 상주하는 실행 가능 소프트웨어 이미지(파일)를 가질 수 있으며, 그 파일과 식별이 연관될 수 있다. 2차 프로세서(또는 "타깃")는 그 식별을 1차 프로세서에 전송하여, 파일 내에서 특정 오프셋에 상주하고 있는 대응하는 데이터를 전송하도록 1차 프로세서에 명령할 수 있다. 그에 응답하여, 1차 프로세서는 그 원시 데이터를 2차 프로세서에 전송할 수 있다. 따라서, 리턴된 데이터에 어떠한 패킷 헤더도 요구되지 않지만, 대신에 리턴된 데이터가 1차 프로세서로부터 직접 2차 프로세서에 전송되며, 이것은 데이터를 수신할 때 데이터를 2차 프로세서의 시스템 메모리에서의 적절한 위치로 푸시할 것이다.
[0062] 다음에는 프로세서 간 통신 프로토콜의 예시적인 실시예에 대한 추가적인 상세들을 설명한다. 이하의 예시적인 실시예들에 대한 특정 상세들이 설명되는 한편, 프로세서 간 통신 프로토콜에 대해 본 명세서에 설명되는 개념들이 이하에 설명되는 특정 상세들로 제한되지 않음이 이해되어야 한다.
[0063] 도입
[0064] 이 다음의 설명은 데이터를 메모리에/로부터 전송하는데 사용될 수 있는 예시적인 프로세서 간 통신 프로토콜에 관한 정보를 제공한다. 설명은 프로토콜의 패킷 구조들, 패킷 흐름들 및 예시적인 사용들에 관한 정보를 포함한다. 이하에 설명되는 예시적인 프로토콜의 특정 구현은 프로토콜을 사용하여 전송되는 데이터를 인증/검증하기 위한 메커니즘을 제공하지 않는다. 그와 같은 메커니즘들은 본 명세서에서 제공되는 예시적인 프로토콜 설명의 범위 밖에 있지만, 임의의 적합한 인증 및/또는 검증 메커니즘이 정해진 애플리케이션에 대해 요구될 수 있는 바에 따라, 데이터가 전송될 때 이 프로토콜과 함께 구현될 수 있다.
[0065] 예시적인 프로토콜의 개관
[0066] 이하에 설명되는 프로세서 간 통신 프로토콜의 예시적인 양상은 주로 호스트(예를 들어, "1차 프로세서")로부터 타깃(예를 들어, "2차 프로세서")에 소프트웨어 이미지들을 전송하기 위해 설계된다. 프로토콜은 데이터가 임의의 물리적 링크를 통해 전송되게 요청하기 위한 간단한 메커니즘을 제공한다.
[0067] 프로토콜의 이러한 예시적인 양상은 2개의 기본 패킷 타입들: 커맨드 패킷들 및 데이터 패킷들을 지원한다. 커맨드 패킷들은 데이터 패킷들의 전송들을 셋업하기 위해 호스트와 타깃 사이에 전송된다.
[0068] 타깃 구동 프로토콜. 프로토콜의 이러한 예시적인 양상은 호스트와 타깃 사이에 전송되는 커맨드 패킷들의 수를 감소시킴으로써 데이터 전송 오버헤드를 감소시킨다. 이것은 프로토콜 타깃 구동을 행함으로써, 그리고 타깃이 데이터 처리를 수행하게 함으로써 달성된다. 호스트는 데이터 전송 요청을 대기하며, 이것은 다음의 정보를 포함한다:
Figure pct00001
전송할 데이터 이미지
Figure pct00002
판독을 시작할 이미지까지의 오프셋
Figure pct00003
데이터 전송 길이
[0069] 호스트는 실제 이미지 데이터로부터 어떠한 정보도 처리하거나 추출하지 않는다 ― 호스트는 패킷에 부착되는 어떠한 패킷 헤더도 없이, 이미지 데이터를 "원시" 데이터로서 타깃에 전송한다. 타깃은 데이터 전송 요청을 개시하기 때문에, 얼마나 많은 데이터를 수신할지를 정확하게 알고 있다. 이것은 호스트가 패킷 헤더 없이 데이터를 전송하게 할 수 있으며, 타깃이 직접 데이터를 수신하고 저장하게 할 수 있다.
[0070] 타깃은 원하는 대로 호스트로부터의 데이터를 요청할 수 있다. 프로토콜의 본 예시적인 양상에서 타깃이 요청하는 제 1 데이터 항목은 정해진 소프트웨어 이미지 전송에 대한 이미지 헤더이다. 일단 타깃이 이미지 헤더를 처리하면, 타깃은 이미지에서의 각각의 데이터 세그먼트의 위치 및 크기를 알게 된다. 이미지 헤더는 또한 타깃 메모리에서 이미지의 목적지 어드레스를 특정한다. 이러한 정보로, 타깃은 각각의 세그먼트에 대해 호스트로부터의 데이터를 요청할 수 있으며, 데이터를 타깃 메모리 내의 적절한 위치에 직접 전송할 수 있다.
[0071] 패킷 처리. 프로토콜의 이러한 예시적인 양상은 데이터의 신뢰성 있는 전송을 제공하기 위해 물리적 전송 계층을 사용함으로써 패킷 처리를 감소시킨다. 어떠한 프레이밍, HDLC(High-level Data Link Control) 인코딩, 또는 CRC(Cyclic Redundancy Check)도 프로토콜 레벨에서 패킷들에 적용되지 않는다.
[0072] 각각의 커맨드 패킷 타입은 커맨드 ID 및 패킷 길이를 포함할 수 있는 정의된 구조를 갖는다. 이러한 정보를 사용하면, 각각의 커맨드 패킷 길이는 수신된 커맨드 패킷 길이를 아래 2개의 값들 중 어느 하나와 비교함으로써 검증될 수 있다:
Figure pct00004
정해진 커맨드 ID에 대한 예상 패킷 길이
Figure pct00005
패킷 자체에 포함되는 길이 필드
[0073] 프로토콜의 이러한 예시적인 양상은 CRC 필드를 각각의 패킷의 끝에 추가함으로써 커맨드 패킷 검증을 지원하도록 용이하게 확장될 수 있다. 데이터 패킷들은 또한 다양한 인증 방법들을 사용하여 데이터 무결성에 관해 검증될 수 있지만, 이것은 프로토콜의 본 예시적인 양상의 현재 설명의 범위 밖에 있다.
[0074] 확인 응답된 통신. 프로토콜의 본 예시적인 양상에 따르면, 호스트와 타깃 사이의 통신이 확인 응답된다. 타깃으로부터 호스트에 전송되는 커맨드 패킷들은 호스트로부터 타깃으로 다시 전송되는 데이터 패킷 또는 커맨드로 확인 응답된다. 유사하게, 호스트로부터 타깃에 전송되는 커맨드 패킷들은 타깃으로부터 호스트에 커맨드 또는 데이터 패킷으로 확인 응답된다.
[0075] 호스트와 타깃 사이의 링크가 신뢰성 있는 것으로 예상되더라도, 호스트로부터 타깃으로의 커맨드 패킷의 전송 동안 에러가 발생하고, 그 결과 타깃이 에러 있는 패킷을 수신한다면, 타깃은 호스트에 에러 응답을 전송할 것이다.
[0076] 전송 실패들의 경우에 패킷들의 재전송을 지원하기 위해 호스트와 타깃 모두에 대해 타이머 메커니즘들이 구현될 수 있다. 그러나 그와 같은 메커니즘들의 구현은 프로토콜의 본 예시적인 양상의 본 설명의 범위 밖에 있다 ― 이것은 단지, 예상되지 않은 또는 에러 있는 패킷들이 타깃 측에 수신될 때 무엇이 일어날지만을 특정한다.
[0077] 확장성. 프로토콜의 본 예시적인 양상은 커맨드 구조들 및 패킷 흐름들의 고정된 세트를 정의한다. 그러나 이는 (이하에 더 설명되는 바와 같이) 추가적인 커맨드 구조들 및 상태 천이들을 지원하도록 용이하게 확장될 수 있다.
[0078] 인터페이스
[0079] 개관. 프로토콜의 본 예시적인 양상은 아래 2개의 타입들의 패킷들을 정의한다:
Figure pct00006
커맨드 패킷들
Figure pct00007
데이터 패킷들
[0080] 프로토콜의 본 예시적인 양상에 따른 이들 패킷들의 구조는 이하에 도시된다:
커맨드 패킷
Figure pct00008
데이터 패킷
Figure pct00009
커맨드 패킷들은 커맨드 ID 및 패킷 길이를 포함한다. 커맨드에 따라, 패킷은 추가적인 커맨드 특정 필드들을 포함할 수 있다. 커맨드 패킷 구조는 이전 프로토콜 버전들의 패킷 구조와의 호환성을 보존하면서, 프로토콜의 장래 개정들이 패킷 타입 끝에 필드들을 용이하게 추가할 수 있게 한다.
[0081] 커맨드들. 프로토콜의 본 예시적인 양상의 커맨드 패킷들에 사용되는 커맨드들이 이하의 표 1에 열거된다.
ID 값
( HEX )
커맨드 전송 주체 설명
00 무효
01 Hello 타깃 접속 및 프로토콜을 초기화함
02 Hello
응답
호스트 타깃에 의해 전송된 접속 및 프로토콜을 확인 응답함
03 데이터 판독 타깃 정해진 이미지에 대해 호스트로부터의 특정된 수의 바이트들을 판독함
04 이미지 전송 완료 타깃 단일 이미지 전송이 완료됨을 호스트에 표시함.
또한 이미지 전송 동안 타깃 실패를 표시하는데 사용됨
05 완료 호스트 단일 이미지 전송이 완료되었다는 호스트로부터의 확인 응답
06 완료 응답 타깃
Figure pct00010
그 타깃이 프로토콜을 종료함
Figure pct00011
다른 이미지를 전송하기 위해 타깃이 프로토콜을 재시작한다고 예상하는지 여부
를 호스트에 표시함:
07 리셋 호스트 리셋을 수행하도록 타깃에 명령함
08 리셋 응답 타깃 타깃이 막 리셋하려함을 호스트에 표시함
09 호스트 에러 호스트 호스트가 이미지 전송 요청 또는 메모리 덤프 동안 에러에 직면했음을 타깃에 표시함
0A 호스트 에러
응답
타깃 타깃이 호스트 상태를 수신했다는 호스트로의 확인 응답.
또한 무슨 타깃이 다음에 무엇을 행할 것으로 예상하고 있는지를 호스트에 표시하는데 사용됨
0B 메모리 덤프 타깃 타깃이 자신의 시스템 메모리 콘텐츠를 전송할 준비가 되는 디버그 모드에 진입했음을 호스트에 표시함
0C 메모리 판독 호스트 특정 어드레스로부터 시작하여 타깃의 시스템 메모리로부터 특정 수의 바이트들을 판독함.
또한 호스트가 메모리 덤프를 언제 완료했는지를 표시하는데 사용됨
다른 모든 것들 무효
표 1 - 커맨드들
[0082] Hello 패킷. 타깃이 Hello 패킷을 전송할 때, 타깃은 이하의 표 2에 도시되는 포맷을 사용한다.
필드 길이
(바이트)
설명 릴리스 1.0 값
커맨드 4 커맨드 식별자 코드 타깃은 이 필드를
Figure pct00012
로 설정함
길이 4 (바이트들로) 패킷 길이 타깃은 이 필드를
Figure pct00013
로 설정함
버전 번호 4 이 프로토콜 구현의 버전 번호 타깃은 자신이 실행하고 있는 프로토콜의 현재 버전을 표시하도록 이 필드를 설정한다. 그 값은
Figure pct00014
이다.
지원된 버전 4 최하위 호환 가능 버전 타깃은 자신이 지원하는 프로토콜의 최하위 버전을 표시하도록 이 필드를 설정한다. 그 값은
Figure pct00015
이다.
커맨드 패킷 길이 4 프로토콜이 지원하는 (바이트들로) 최대 커맨드 패킷 길이 타깃은 프로토콜 구현에서 사용되는 버퍼에 기초하여 이것을 설정한다
표 2 - Hello 패킷
[0083] Hello 패킷은 타깃이 호스트에 전송하는 첫 번째 패킷이다. 호스트가 임의의 다른 패킷을 수신한다면, 호스트는 리셋 커맨드를 타깃에 전송할 것이다.
[0084] 호스트가 유효 Hello 패킷을 수신할 때, 호스트는 먼저 타깃 상에서 실행하는 프로토콜이 호스트 상에서 실행하는 호환 가능함을 검증한다. 프로토콜들이 맞지 않는다면, 호스트는 리셋 커맨드를 타깃에 전송할 것이다.
[0085] 타깃은 또한 자신이 지원하는 커맨드 패킷의 최대 길이를 전송한다 ― 호스트는 타깃이 수신 커맨드 버퍼에서 지원할 수 있는 것보다 더 많은 바이트들을 전송하는 것을 피하기 위해 이 정보를 사용한다.
[0086] Hello 응답 패킷. 호스트가 Hello 응답 패킷을 전송할 때, 호스트는 이하의 표 3에 도시되는 포맷을 사용한다.
필드 길이
(바이트)
설명 릴리스 1.0 값
커맨드 4 커맨드 식별자 코드 호스트는 이 필드를
Figure pct00016
로 설정함
길이 4 (바이트들로) 패킷 길이 호스트는 이 필드를
Figure pct00017
로 설정함
버전 번호 4 이 프로토콜 구현의 버전 번호 호스트는 호스트가 지원하는 프로토콜의 최상위 버전을 표시하도록 이 필드를 설정한다. 그 값은
Figure pct00018
이다.
지원된 버전 4 최하위 호환 가능 버전 호스트는 자신이 지원하는 프로토콜의 최하위 버전을 표시하도록 이 필드를 설정한다. 그 값은
Figure pct00019
이다.
상태 4 성공 또는 에러 코드 호스트는 수신된 Hello 패킷에 기초하여 이 필드를 설정한다; 타깃 프로토콜이 호스트와 일치하며 다른 에러들이 없다면, 성공 값이 전송된다.
표 3 - Hello 응답 패킷
[0087] 일단 호스트가 타깃 상에서 실행하는 프로토콜들을 검증하면, 호스트는 다음의 정보를 타깃에 전송한다:
Figure pct00020
호스트가 실행하고 있는 프로토콜 버전
Figure pct00021
호스트가 지원하는 최하위 프로토콜 버전
[0088] 호스트 측에서 어떠한 에러들도 발생하지 않는다면, 호스트는 패킷 상태 필드를 "성공"으로 설정한다. 일단 타깃이 이 패킷을 수신하면, 타깃은 데이터 전송 요청들로 진행할 수 있다.
[0089] 데이터 판독 패킷. 타깃이 데이터 판독 패킷을 전송할 때, 타깃은 이하의 표 4에 도시되는 포맷을 사용한다.
필드 길이(바이트들) 설명 릴리스 1.0 값
커맨드 4 커맨드 식별자 코드 타깃은 이 필드를
Figure pct00022
으로 설정한다
길이 4 (바이트들로) 패킷 길이 타깃은 이 필드를
Figure pct00023
로 설정한다
이미지 ID 4 전송될 이미지의 ID 타깃이 호스트가 전송하길 원하는 이미지에 대응하도록 타깃이 이 필드를 설정한다
데이터 오프셋 4 데이터 전송을 시작할 이미지 파일까지의 오프셋 타깃은 자신이 데이터를 리트리브하기 시작하길 원하는 이미지 파일까지의 (바이트들로) 오프셋으로 이 필드를 설정한다
데이터 길이 4 타깃이 이미지로부터 전송하길 원하는 바이트들의 수 타깃은 자신이 이미지 파일로부터 판독하길 원하는 바이트들의 수로 이 필드를 설정한다
표 4 - 데이터 판독 패킷
[0090] 이미지 전송을 개시하기 위해, 타깃은 이 패킷을 자신이 수신하길 원하는 이미지에 대응하는 이미지 ID로 채운다. 타깃은 또한 이미지 파일까지의 오프셋, 및 자신이 이미지로부터 판독하길 원하는 (바이트들로) 데이터의 길이를 전송한다.
[0091] 이 패킷은 이미지 데이터가 호스트로부터 타깃으로 전송되어야 할 때 일반 데이터 전송 패킷의 역할을 한다. 데이터 판독 패킷은 이미지가 호스트로부터 타깃에 전송되는 방식에 유연성을 허용한다. 타깃은 무슨 데이터가 전송되게 되는지를 제어하기 때문에, 이미지의 어떤 부분들이 그리고 어떤 순서로 전송되게 되는지를 결정할 수 있다.
[0092] 호스트는 이미지의 구조에 관하여 아무것도 모를 수도 있는데; 호스트는 단순히 파일을 열고 패킷에 특정된 파라미터들에 기초하여 타깃에 데이터를 전송하기 시작한다. 이것은 이미지들이 어떻게 전송되고 처리되는지에 대한 타깃 제어를 제공한다.
[0093] 호스트가 이 패킷을 수신할 때, 호스트는 데이터 패킷에 응답할 것이 예상된다. 데이터 패킷은 이미지 데이터만을 포함해야 하며, 데이터 판독 패킷에 특정된 길이여야 한다.
[0094] 호스트가 데이터 판독 패킷에서 다음 중 임의의 것을 수신한다면, 여러 에러 상태들이 발생할 수 있다:
Figure pct00024
무효 또는 지원되지 않는 이미지 ID
Figure pct00025
무효 데이터 오프셋
Figure pct00026
무효 데이터 길이
[0095] 상기 필드들 중 임의의 것이 무효라면, 또는 호스트 상에서 임의의 다른 에러가 발생한다면, 호스트는 타깃이 예상하고 있던 것과 일치하지 않는 길이를 갖는 데이터 패킷을 전송할 수 있다. 결과적인 에러는 타깃으로 하여금 상태 필드 내의 에러 코드를 갖는 이미지 전송 종료 패킷을 전송하게 할 수 있다(표 5에서의 예시적인 패킷 구조를 참조). 이러한 트랜잭션은 타깃과 호스트 모두가 에러 처리 상태에 진입하게 할 수 있다.
[0096] 프로토콜의 본 예시적인 양상은 발생하는 임의의 에러가 호스트로 하여금 리셋 패킷을 전송하게 하는 상태 머신에 의해 구현될 수 있다(이하의 "예시적인 프로토콜 구현"의 추가 설명을 참조). 프로토콜의 특정 구현들은 호스트 에러 및 호스트 에러 응답 패킷들이 특정 에러들을 처리하는데 사용될 수 있는 구현들을 제공할 수 있다.
[0097] 이미지 전송 종료 패킷. 타깃이 이미지 전송 종료 패킷을 전송할 때, 타깃은 이하의 표 5에 도시되는 포맷을 사용한다.
필드 길이
(바이트들)
설명 릴리스 1.0 값
커맨드 4 커맨드 식별자 코드 타깃은 이 필드를
Figure pct00027
로 설정한다
길이 4 (바이트들로) 패킷 길이 타깃은 이 필드를
Figure pct00028
으로 설정한다
이미지 ID 4 전송되고 있었던 이미지의 ID 타깃은 자신이 전송하고 있었거나 처리하고 있었던 이미지에 대응하도록 이 필드를 설정한다
상태 4 성공 또는 에러 코드 타깃은 이미지가 성공적으로 전송되었는지 여부에 기초하여 이 필드를 설정한다
표 5 - 이미지 전송 종료 패킷
[0098] 이미지 전송이 성공적으로 완료된다면, 타깃은 호스트에 "성공" 상태를 갖는 이미지 전송 종료 패킷을 전송한다. 이 시점에서, 타깃은 호스트가 완료 패킷을 전송하기를 기다린다. 이미지 데이터의 전송 또는 처리 동안 임의의 에러가 발생한다면, 상태는 대응하는 에러 코드로 설정되며, 타깃은 다른 커맨드 패킷을 대기한다.
[0099] 프로토콜의 이러한 예시적인 양상은 이미지 전송 종료 패킷에서 에러가 전송된 후에 호스트가 항상 리셋 패킷을 전송하려 한다고 타깃이 가정하는 상태 머신에 의해 구현될 수 있다(이하의 "예시적인 프로토콜 구현"의 추가 설명을 참조). 프로토콜은 이미지 전송 종료 에러 패킷에 응답하여 다른 커맨드 패킷들이 호스트로부터 타깃으로 전송되게 허용한다.
[00100] 완료 패킷. 호스트가 완료 패킷을 전송할 때, 호스트는 이하의 표 6에 도시되는 포맷을 사용한다.
필드 길이(바이트들) 설명 릴리스 1.0 값
커맨드 4 커맨드 식별자 코드 호스트는 이 필드를
Figure pct00029
로 설정한다
길이 4 (바이트들로) 패킷 길이 호스트는 이 필드를
Figure pct00030
로 설정한다
표 6 - 완료 패킷
[00101] 호스트가 "성공" 상태로 이미지 전송 종료 패킷을 수신한다면, 호스트는 자신이 프로토콜을 종료하고 실행을 계속할 수 있음을 타깃에 표시하기 위해 완료 패킷을 전송하도록 진행한다. 타깃이 호스트로부터 다른 이미지를 전송하기를 원한다면, 타깃은 다른 Hello 패킷으로 시작함으로써 프로토콜을 재개시한다.
[00102] 완료 응답 패킷. 타깃이 완료 응답 패킷을 전송할 때, 타깃은 이하의 표 7에 도시되는 포맷을 사용한다.
필드 길이
(바이트들)
설명 릴리스 1.0 값
커맨드 4 커맨드 식별자 코드 타깃은 이 필드를
Figure pct00031
으로 설정한다
길이 4 (바이트들로) 패킷 길이 타깃은 이 필드를
Figure pct00032
로 설정한다
이미지 전송 상태 4 타깃이 다른 이미지를 수신할 것으로 예상하고 있는지 여부를 표시함 타깃은 모든 이미지 전송들이 완료되었는지 아니면 이미지 전송이 계류중인지에 대응하도록 이 필드를 설정한다
표 7 - 완료 응답 패킷
[00103] 타깃이 완료 패킷을 수신한다면, 타깃은 이미지 전송 상태를 포함하는 완료 응답 패킷으로 응답한다:
Figure pct00033
모든 이미지들이 전송되었다면, 타깃은 호스트가 프로토콜을 종료하게 할 수 있도록 "완료" 상태를 전송한다.
Figure pct00034
모든 이미지들이 전송되지 않았다면, 타깃은 "계류중" 상태를 전송한다. 타깃은 호스트가 계속해서 프로토콜을 실행하며 다른 Hello 패킷이 도착하길 기다릴 것이라고 가정할 것이다.
[00104] 리셋 패킷. 호스트가 리셋 패킷을 전송할 때, 호스트는 이하의 표 8에 도시되는 포맷을 사용한다.
필드 길이
(바이트들)
설명 릴리스 1.0 값
커맨드 4 커맨드 식별자 코드 호스트는 이 필드를
Figure pct00035
로 설정한다
길이 4 (바이트들로) 패킷 길이 호스트는 이 필드를
Figure pct00036
로 설정한다
표 8 - 리셋 패킷
[00105] 호스트는 자신이 타깃을 리셋하기 원할 때 리셋 패킷을 전송한다. 타깃이 리셋 요청들이 유효 상태에 있다면, 타깃은 리셋 요청을 서비스한다. 타깃이 무효 리셋 요청을 수신한다면, 타깃은 이미지 전송 종료 패킷에서 에러를 전송할 것이다.
[00106] 리셋 응답 패킷. 타깃이 리셋 응답 패킷을 전송할 때, 타깃은 이하의 표 9에 도시되는 포맷을 사용한다.
필드 길이
(바이트들)
설명 릴리스 1.0 값
커맨드 4 커맨드 식별자 코드 타깃은 이 필드를
Figure pct00037
로 설정한다
길이 4 (바이트들로) 패킷 길이 타깃은 이 필드를
Figure pct00038
로 설정한다
표 9 - 리셋 응답 패킷
[00107] 타깃이 유효 리셋 요청을 수신한다면, 타깃은 리셋하기 직전에 리셋 응답 패킷을 전송한다. 이러한 응답의 목적은 타깃이 리셋 요청을 수신했음을 타깃이 호스트에 확인 응답하게 하는 것이다. 호스트가 타깃으로부터 리셋 응답 커맨드를 수신하지 않는다면(또는 다른 커맨드를 수신한다면), 호스트는 요청을 재전송하려고 시도할 수 있다.
[00108] 호스트 에러 패킷. 프로토콜의 양상들은 호스트 상에서 임의의 에러가 발생한다면 호스트가 에러 코드를 타깃에 전송하도록 허용하기 위해 이 패킷을 사용할 수 있다.
[00109] 호스트 에러 응답 패킷. 프로토콜의 양상들은 호스트 에러 패킷을 확인 응답하기 위해 타깃에 대해 이 패킷을 사용할 수 있다. 이 패킷은 타깃이 호스트 에러를 어떻게 처리하고 있는지에 관한 정보를 호스트에 제공할 수 있다.
[00110] 메모리 덤프 패킷. 프로토콜의 양상들은 타깃의 시스템 메모리의 메모리 덤프를 개시하기 위해 이 패킷을 사용할 수 있다. 이 패킷은 시스템 메모리 콘텐츠를 전송하기 위해 타깃이 메모리 판독 요청들을 수신할 준비가 됨을 호스트에 표시할 수 있다.
[00111] 메모리 판독 패킷. 프로토콜의 양상들은 호스트가 타깃으로부터의 메모리 판독 요청들을 발행하도록 허용하기 위해 이 패킷을 사용할 수 있다. 이 패킷은 메모리 전송의 물리적 어드레스 및 크기를 포함할 수 있다. 타깃은 단지 호스트가 요청한 메모리 콘텐츠를 포함하는 데이터 패킷으로 응답할 수 있다. 타깃 측에서 임의의 에러가 발생한다면, 타깃은 메모리 전송의 요청된 크기와 일치하지 않는 길이를 갖는 데이터 패킷을 전송할 수 있다. 이것은 호스트 측에 에러를 일으켜, 호스트가 적절히 응답하게 할 것이다.
[00112] 상태 코드들. 이하의 표 10은 프로토콜의 본 예시적인 양상에 의해 지원되는 상태 및 에러 코드들을 열거한다.
상태/에러 코드
(16진수)
최하위 프로토콜 버전 설명
0x00 1.0 성공
0x01 1.0 현재 상태로 수신된 무효 커맨드
0x02 1.0 호스트와 타깃 사이의 프로토콜 불일치
0x03 1.0 무효 타깃 프로토콜 버전
0x04 1.0 무효 호스트 프로토콜 버전
0x05 1.0 수신된 무효 패킷 크기
0x06 1.0 수신된 예상되지 않은 이미지 ID
0x07 1.0 수신된 무효 이미지 헤더 크기
0x08 1.0 수신된 무효 이미지 데이터 크기
0x09 1.0 수신된 무효 이미지 타입
0x0A 1.0 무효 전송 길이
0x0B 1.0 무효 수신 길이
0x0C 1.0 일반 전송 또는 수신 에러
0x0D 1.0 READ_DATA 패킷을 전송하는 동안의 에러
0x0E 1.0 특정된 수의 프로그램 헤더들을 수신할 수 없음
0x0F 1.0 프로그램 헤더들에 대해 수신된 무효 데이터 길이
0x10 1.0 ELF 이미지에서 발견된 다수의 공유 세그먼트들
0x11 1.0 초기화되지 않은 프로그램 헤더 위치
0x12 1.0 무효 목적지 어드레스
0x13 1.0 이미지 헤더에서 수신된 무효 데이터 크기
0x14 1.0 수신된 무효 ELF 헤더
0x15 1.0 HELLO_RESP로 수신된 알려지지 않은 호스트 에러
다른 모든 것들 무효
표 10 - 상태 및 에러 코드들
[00113] 동작
[00114] 개관. 이하의 설명은 다음의 토픽들을 커버한다:
Figure pct00039
호스트로부터 타깃으로 이미지를 전송하기 위해 프로토콜의 본 예시적인 양상이 사용될 수 있는 방법
Figure pct00040
프로토콜을 구현하며 이미지 전송 동안 발생하는 에러들을 어떻게 처리하는지를 예시하는 예시의 상태 머신
Figure pct00041
이미지 전송 요청들을 병렬화하기 위해 시스템이 프로토콜을 이용할 수 있는 방법
[00115] 성공적인 이미지 전송 시퀀스. 도 4는 성공적인 이미지 전송 시퀀스에 대한 패킷 흐름을 도시한다. 패킷 흐름 시퀀스는 이하에 설명된다. 시간(402)에서 프로토콜을 개시하기 위해 Hello 패킷이 타깃(450)으로부터 호스트(400)에 전송된다. Hello 패킷을 수신하고 타깃(450) 상에서 실행하는 프로토콜 버전을 검증하면, 시간(404)에서 호스트(400)는 "성공" 상태로 Hello 응답 패킷을 전송한다.
[00116] 일단 타깃(450)이 Hello 응답을 수신하면, 시간(406)에서 타깃(450)은 데이터 판독 패킷들을 전송함으로써 이미지 전송 요청들을 개시한다. 각각의 데이터 판독 패킷은 타깃(450)이 어떤 이미지를 수신하길 원하는지 그리고 이미지의 어느 부분을 전송할지를 특정한다. 정상 동작 동안, 시간(406)에서 타깃(450)은 먼저 이미지의 나머지(즉, 이미지 크기 및 시스템 메모리 내 어디에서 이미지 데이터가 전송되어야 하는지)를 특정하는 이미지 헤더 정보를 요청한다. (데이터 판독 요청으로서 전송되는) 이미지 헤더에 대한 이러한 요청을 전송할 때, 타깃(450)은 전송될 이미지의 포맷을 알고 있다. 호스트(400)는 이미지 포맷들에 관한 어떤 것도 알지 못하여, 호스트(400)가 타깃(450)에 의해 요청된 대로 이미지로부터 단순히 데이터를 판독하고 전송하도록 허용할 수도 있다. 요청에 후속하여, 시간(408)에서 이미지 헤더는 호스트(400)로부터 타깃(450)으로 전송된다.
[00117] 이미지가 어떠한 데이터 세그먼트화도 없는 독립형 이진 이미지라면(즉, 데이터가 타깃(450) 시스템 메모리에 전송될 뿐 아니라 저장될 때에도 완전히 인접한다면), 타깃(450)은 전체 이미지 데이터가 하나의 전송에서 전송될 것을 요청할 수 있다. 이미지 데이터가 세그먼트화되며 비-인접 시스템 메모리 위치들로의 데이터 세그먼트들의 분산을 요청한다면, 타깃(450)은 각각의 데이터 세그먼트가 각각의 목적지 어드레스에 직접 전송되게 할 수 있도록(예를 들어 시간들(412, 416 및 420)에서) 다수의 데이터 판독 요청들을(예를 들어, 시간들(406, 410, 414 및 418)) 발행할 수 있다. 이러한 분산 정보는 이미지 헤더에 상주하며, 데이터 판독 요청들을 발행하기 전에 타깃(450)에 의해 파싱된다.
[00118] 데이터 판독 요청을 수신하면, 호스트(400)는 대응하는 이미지 파일로부터 데이터를 전송하기 위해 이미지 ID, 데이터 오프셋 및 데이터 길이를 파싱한다. 호스트(400)는 임의의 패킷 헤더 없이 요청된 데이터를 전송한다. 타깃(450)은 시스템 메모리에서 데이터의 어떠한 소프트웨어 처리나 임시 버퍼링도 없이 이 데이터를 목적지 어드레스에 직접 전송한다. 이것은 이미지 헤더를 타깃(450)에 전송함으로써, 그리고 데이터에 대한 수신 버퍼를 시스템 메모리 내의 목적지 어드레스가 되도록 설정함으로써 가능해진다.
[00119] 일단 타깃(450)이 이미지에 대한 모든 세그먼트들을 성공적으로 수신하면, 시간(422)에서 타깃(450)은 대응하는 이미지의 이미지 ID 및 "성공" 상태로 이미지 전송 종료(END_IMAGE_TX) 패킷을 전송한다. 이것은 호스트(400)가 판독을 중단하고 이미지 파일을 닫게 할 수 있다. 성공적인 이미지 전송 종료를 수신하면, 시간(424)에서 호스트(400)는 타깃(450)이 프로토콜을 빠져나오게 허용하기 위해 완료 패킷을 전송한다. 일단 타깃(450)이 완료 패킷을 수신하면, 시간(426)에서 타깃(450)은 완료 응답 패킷을 호스트(400)에 전송한다. 이러한 패킷 내에서, 타깃(450)은 자신이 다른 이미지가 전송될 것을 예상하는지 여부를 표시한다. 다른 이미지가 타깃(450)에 전송될 것이라면, 호스트(400)는 계속해서 프로토콜을 실행할 수 있다.
[00120] 예시적인 프로토콜 구현. 프로토콜의 이러한 예시적인 양상은 타깃과 호스트 모두에 대해 상태 머신들을 사용하여 구현될 수 있다. 이들 상태 머신들의 예들은 도 5, 도 6 및 도 7에 도시된다.
[00121] 타깃 상태 머신. 도 5 및 도 6은 도 4에 도시되는 패킷 흐름의 타깃 측을 구현하는 상태 머신을 도시한다. 이것은 실제 이미지 데이터가 2개의 타입들의 소프트웨어 이미지 포맷들에 대해 어떻게 전송될 수 있는지를 예시한다:
Figure pct00042
독립형 이진법
Figure pct00043
실행 가능 및 링크 가능한 포맷(ELF)
[00122] 독립형 이진 포맷은 이미지 데이터에 대한 목적지 어드레스 및 크기를 설명하는 간단한 이미지 헤더를 사용한다. ELF 포맷은 데이터가 세그먼트화되어 시스템 메모리의 비-인접 섹션들로 분산되도록 허용한다.
[00123] 후속하는 목록은 도 5 및 도 6의 상태 머신에서의 각각의 상태 및 타깃이 이들 상태들에 있을 때 착신 패킷들에 어떻게 반응하는지를 설명한다:
[00124]
Figure pct00044
: 타깃이 Hello 패킷을 전송한 후에, 타깃은 Hello 응답 패킷이 호스트로부터 수신될 때까지 대기한다. 무효 패킷 또는 에러 있는 패킷이 수신된다면, 타깃은 대응하는 에러 코드로 호스트에 이미지 전송 종료 패킷을 전송한다. 리셋 패킷이 수신된다면, 타깃은 리셋 응답을 전송하며 그 후에 리셋한다.
[00125]
Figure pct00045
: 타깃은 독립형 이진 이미지 헤더를 수신하였다. 이미지 헤더에 어떤 것이 잘못된 경우에, 타깃은 대응하는 에러 코드로 이미지 전송 종료 패킷을 전송한다. 유효 이미지 헤더가 수신된다면, 타깃은 이미지 데이터를 전송하도록 단일 데이터 판독 요청을 전송한다. 일단 이미지 데이터가 수신되면, 데이터가 유효하다면, 타깃은 "성공" 상태로 이미지 전송 종료를 전송한다. 이미지 전송 동안 임의의 에러가 발생한다면, 타깃은 대응하는 에러 코드로 이미지 전송 종료를 전송한다.
[00126]
Figure pct00046
: 타깃은 ELF 이미지에 대한 ELF 헤더를 수신하였다. ELF 헤더에 어떤 것이 잘못되었다면, 타깃은 대응하는 에러 코드로 이미지 전송 종료 패킷을 전송한다. 유효 ELF 헤더가 수신된다면, 타깃은 ELF 이미지로부터의 프로그램 헤더들에 대한 단일 데이터 판독 요청을 전송한다. ELF 이미지에서의 프로그램 헤더들의 크기 및 위치는 ELF 헤더에 임베드된다.
[00127]
Figure pct00047
: 타깃은 ELF 이미지에 대한 ELF 프로그램 헤더들을 수신하였다. 프로그램 헤더들에 어떤 것이 잘못되었다면, 타깃은 대응하는 에러 코드로 이미지 전송 종료 패킷을 전송한다. 유효 프로그램 헤더들이 수신된다면, 타깃은 해시 테이블 세그먼트의 위치를 결정하기 위해 그들을 처리한다. 해시 테이블은 해시 함수를 각각의 데이터 세그먼트에 적용하고 해시 테이블에 해시 값을 저장함으로써 각각의 데이터 세그먼트의 무결성을 검증하는데 사용될 수 있다. 각각의 ELF 데이터 세그먼트를 로딩할 때, 해시 함수는 각각의 세그먼트에 적용될 수 있으며 해시 값은 해시 테이블에 저장된 것과 비교될 수 있다. 특정 해시 알고리즘들 및 인증 루틴들은 본 프로토콜 범위 밖에 있기 때문에, 이들은 여기서 설명되지 않는다.
[00128]
Figure pct00048
: 일단 각각의 데이터 세그먼트의 위치 및 크기가 프로그램 헤더들로부터 결정되면, 타깃은 각각의 데이터 세그먼트가 전송될 때까지 데이터 판독 요청들을 반복적으로 전송한다. 일단 모든 ELF 세그먼트들이 수신되면, 타깃은 "성공" 상태로 이미지 전송 종료를 전송한다.
[00129]
Figure pct00049
: 일단 단일 이미지 전송이 완료하면, 타깃은 완료 패킷이 전송되길 기다린다. 무효 또는 임의의 다른 패킷이 수신된다면, 타깃은 대응하는 에러 코드로 이미지 전송 종료 패킷을 전송한다. 유효 완료 패킷이 수신된다면, 타깃은 다른 이미지가 전송될지 여부를 기초로 "완료" 또는 "계류중"으로 설정된 이미지 전송 상태 필드와 함께, 완료 응답을 호스트에 전송한다.
[00130]
Figure pct00050
: 언제든지 타깃 상에서 에러가 발생하면, 타깃은 호스트가 리셋 커맨드를 전송할 것을 예상한다. 타깃이 리셋 커맨드를 수신한다면, 타깃은 리셋 응답을 호스트에 전송하며 그 후에 리셋한다. 무효 또는 임의의 다른 커맨드가 수신된다면, 타깃은 대응하는 에러 코드로 이미지 전송 종료 패킷을 전송한다.
[00131] 호스트 측 상태 머신. 호스트 측 상태 머신은 도 4에 도시된 패킷 흐름의 호스트 측을 구현하는데 이용될 수 있다. 후속하는 목록은 그 상태 머신의 동작 및 이들 상태들에 있을 때 호스트가 착신 패킷들에 어떻게 반응하는지를 설명한다:
[00132]
Figure pct00051
: 호스트는 타깃이 프로토콜을 개시하길 기다린다. 일단 Hello가 수신되고 프로토콜 버전이 검증되면, 호스트는 "성공" 상태로 Hello 응답을 전송한다. 호스트가 무효 패킷(또는 임의의 다른 패킷)을 수신한다면, 호스트는 리셋 패킷을 타깃에 전송한다. 호스트는 또한, 타깃 프로토콜 버전이 호스트와 호환 가능하지 않다면 리셋 패킷을 전송할 것이다.
[00133]
Figure pct00052
: 호스트가 데이터 판독 패킷을 수신한다면, 호스트는 데이터 패킷에서 대응하는 이미지로부터 데이터를 판독하고 전송한다. 호스트가 "성공" 상태로 이미지 전송 종료 패킷을 수신한다면, 호스트는 완료 패킷을 전송한다. 호스트가 무효 커맨드(또는 임의의 다른 커맨드)를 수신한다면, 호스트는 리셋 패킷을 전송한다. 호스트는 또한, 호스트가 에러 코드로 이미지 전송 종료 패킷을 수신한다면 리셋 패킷을 전송할 것이다.
[00134]
Figure pct00053
: 호스트는 완료 응답을 대기한다. 모든 이미지들이 전송되지 않았다면, 호스트는 다른 Hello 패킷을 대기한다. 모든 이미지들이 전송되었다면, 호스트는 프로토콜을 종료한다. 호스트가 무효 커맨드(또는 임의의 다른 커맨드)를 수신한다면, 호스트는 리셋 패킷을 전송한다.
[00135]
Figure pct00054
: 호스트가 리셋 패킷을 전송한 후에, 호스트는 타깃이 리셋 응답을 전송하길 기다린다. 호스트가 리셋 응답을 수신한다면, 호스트는 프로토콜을 종료한다. 호스트가 무효 커맨드(또는 임의의 다른 커맨드)를 수신한다면, 호스트는 다른 리셋 패킷을 전송한다.
[00136] 에러 처리. "예시적인 프로토콜 구현"에 후속하는 상기 설명은 프로토콜의 이러한 예시적인 양상을 이용하여 에러들이 어떻게 보고되고 처리될 수 있는지를 설명한다. 패킷들의 시간만료들 및 재전송은 종종 가능한 전송 또는 수신 에러들을 처리하도록 구현된다. 그와 같은 전략들을 구현하기 위한 기술들이 사용될 수 있지만, 그들 특정 기술들의 추가 설명은 프로토콜의 이러한 예시적인 양상의 이러한 설명의 범위 밖에 있다.
[00137] 병렬 이미지 전송들. 다음에는 다수의 이미지들이 다중 스레드 환경들의 사용을 통해 어떻게 병렬로 전송될 수 있는지를 설명한다.
[00138] 단일 호스트, 다수의 타깃들. 호스트가 하드웨어 전송 계층에서 타깃들을 구별할 수 있고, 프로토콜의 패킷들을 대응하는 타깃으로 라우팅할 수 있다면, 호스트는 개별 스레드 상에서 각각의 타깃에 대한 상태 머신을 실행할 수 있다:
Figure pct00055
각각의 타깃은 자신이 전송하길 원하는 이미지들을 전송하기 위해 그 자신의 상태 머신을 실행한다.
Figure pct00056
호스트는 프로토콜의 패킷들을 전송/수신하기 위해 그리고 그들을 대응하는 상태 머신에 라우팅하기 위해 스레드 관리기를 실행한다.
[00139] 데이터 판독 요청들은 이미지 ID, 데이터 오프셋, 및 데이터 길이를 특정하기 때문에, 호스트는 대응하는 이미지 파일로부터 판독하며 데이터를 요청하는 타깃에 전송한다.
[00140] 다수의 호스트들, 단일 타깃. 타깃이 다수의 호스트들로부터 이미지들을 전송하기를 원한다면, 각각의 호스트로부터의 접속들은 하드웨어 전송 계층에서 캡슐화될 수 있다. 프로토콜을 시작할 때, 타깃은 자신이 정해진 이미지를 전송하기 위해 어떤 하드웨어를 사용하길 원하는지를 특정할 수 있다. 타깃은 각각의 이미지에 대해 프로토콜을 시작 및 종료하도록 선택할 수 있어, 타깃이 각각의 이미지에 대해 사용할 하드웨어 전송 계층을 선택하도록 허용할 수 있다(디스패치 표들을 사용함으로써 대응하는 소프트웨어 드라이버에서의 호스트 접속들을 효율적으로 추상화할 수 있다). 각각의 호스트는 그 후에 개별 상태 머신들을 실행할 수 있다.
[00141] 단일 호스트, 단일 타깃, 병렬 이미지들. 타깃이 호스트로부터 병렬로 이미지들을 전송하기를 원한다면, (상술한 스레드 환경과 유사하게) 스레드 환경이 타깃 상에 사용될 수 있다. 차이점은 스레드 환경이 호스트에 관여되지 않는다는 점이다. 타깃은 각각의 이미지에 대한 상태 머신으로의 패킷들의 라우팅을 관리한다.
[00142] 도 5는 본 개시의 한 양상이 유리하게 이용될 수 있는 예시적인 무선 통신 시스템(500)을 보여주는 블록도이다. 예시의 목적으로, 도 5는 3개의 원격 유닛들(520, 530, 550)과 2개의 기지국들(540)을 보여준다. 무선 통신 시스템들은 더욱 많은 원격 유닛들과 기지국들을 가질 수도 있다고 인식될 것이다. 원격 유닛들(520, 530, 550)은 개시된 다중 프로세서 디바이스를 포함하는 IC 디바이스들(525A, 525C, 525B)을 포함한다. 다른 디바이스들은 또한, 기지국들, 스위칭 디바이스들 및 네트워크 장비와 같은 개시된 다중 프로세서 디바이스를 포함할 수도 있다고 인식될 것이다. 도 5는 기지국(540)으로부터 원격 유닛들(520, 530, 550)로의 순방향 링크 신호들(580) 및 원격 유닛들(520, 530, 550)로부터 기지국들(540)로의 역방향 링크 신호들(590)을 보여준다.
[00143] 도 5에서, 원격 유닛(520)은 모바일 전화로서 도시되고, 원격 유닛(530)은 휴대용 컴퓨터로서 도시되며, 원격 유닛(550)은 무선 로컬 루프 시스템 내의 고정 위치 원격 유닛으로서 도시된다. 예를 들어, 원격 유닛들은 모바일 전화들, 핸드헬드 개인 통신 시스템(PCS: personal communication systems) 유닛들, 휴대용 데이터 유닛들, 예컨대 개인용 데이터 보조기기들, GPS 가능 디바이스들, 네비게이션 디바이스들, 셋톱 박스들, 뮤직 플레이어들, 비디오 플레이어들, 엔터테인먼트 유닛들, 고정 위치 데이터 유닛들, 예컨대 검침(meter reading) 장비, 또는 데이터나 컴퓨터 명령들을 저장 또는 리트리브하는 임의의 다른 디바이스, 또는 이들의 임의의 조합일 수 있다. 도 5는 본 개시의 교시들에 따른 원격 유닛들을 예시하지만, 본 개시는 이러한 예시적인 설명된 유닛들로 한정되는 것은 아니다. 본 개시의 양상들은 다중 프로세서 시스템을 포함하는 임의의 디바이스에 적절히 이용될 수 있다.
[00144] 도 6에 도시된 바와 같이, 다중 프로세서 시스템에서의 2차 프로세서는 실행 가능 소프트웨어 이미지의 전송을 위한 방법을 실행할 수 있다. 2차 프로세서는 블록(602)에 도시된 바와 같이 1차 프로세서와의 통신들을 개시할 수 있다. 2차 프로세서는 블록(604)에 도시된 바와 같이 실행 가능 소프트웨어 이미지에 대한 이미지 헤더를 전송하도록 1차 프로세서에 명령할 수 있다. 실행 가능 소프트웨어 이미지는 이미지 헤더 및 적어도 하나의 데이터 세그먼트를 포함한다. 2차 프로세서는 블록(606)에 도시된 바와 같이 이미지 헤더 및 적어도 하나의 데이터 세그먼트를 수신할 수 있다. 2차 프로세서는 블록(608)에 도시된 바와 같이 이미지 헤더 및 적어도 하나의 데이터 세그먼트의 성공적인 수신을 표시할 수 있다. 2차 프로세서는 블록(610)에 도시된 바와 같이 실행 가능 소프트웨어 이미지 전송의 종료 표시를 수신할 수 있다. 2차 프로세서는 블록(612)에 도시된 바와 같이 전송의 종료 표시의 수신을 확인 응답할 수 있다.
[00145] 다중 프로세서 디바이스는 개시하기 위한 수단, 명령하기 위한 수단, 수신하기 위한 수단, 표시하기 위한 수단, 및 확인 응답하기 위한 수단을 포함할 수 있다. 수단은 애플리케이션 프로세서(104, 204), 2차 프로세서(302), 프로세서 간 통신 버스(134, 234), 하드웨어 전송 메커니즘(309), 제어기(304), 및/또는 물리적 데이터 파이프(310)를 포함할 수 있다. 다른 양상에서, 상기 언급된 수단은 상기 언급된 수단에 의해 기술된 기능들을 수행하도록 구성된 임의의 장치 또는 모듈일 수 있다.
[00146] 도 7에 도시된 바와 같이, 블록(702)에 도시된 바와 같이, 다중 프로세서 시스템에서의 1차 프로세서는 실행 가능 소프트웨어 이미지에 대한 이미지 헤더를 전송하라는 명령을 수신할 수 있으며, 상기 실행 가능 소프트웨어 이미지는 상기 이미지 헤더 및 적어도 하나의 데이터 세그먼트를 포함한다. 블록(704)에 도시된 바와 같이, 1차 프로세서는 2차 프로세서에 이미지 헤더 및 적어도 하나의 데이터 세그먼트를 전송할 수 있다. 블록(706)에 도시된 바와 같이, 1차 프로세서는 이미지 헤더 및 적어도 하나의 데이터 세그먼트의 성공적인 수신의 표시를 2차 프로세서로부터 수신할 수 있다. 블록(708)에 도시된 바와 같이, 1차 프로세서는 실행 가능 이미지 전송의 종료 표시를 전송할 수 있다. 블록(710)에 도시된 바와 같이, 1차 프로세서는 전송의 종료 표시의 수신의 확인 응답을 2차 프로세서로부터 수신할 수 있다.
[00147] 다중 프로세서 디바이스는 수신하기 위한 수단 및 전송하기 위한 수단을 포함할 수 있다. 수단은 모뎀 프로세서(110, 210), 1차 프로세서(301), 프로세서 간 통신 버스(134, 234), 하드웨어 전송 메커니즘(308), 시스템 메모리(307) 및/또는 물리적 데이터 파이프(310)를 포함할 수 있다. 다른 양상에서, 상기 언급된 수단은 상기 언급된 수단에 의해 기술된 기능들을 수행하도록 구성된 임의의 장치 또는 모듈일 수 있다.
[00148] 펌웨어 및/또는 소프트웨어 구현의 경우, 방법들은 본 명세서에서 설명된 기능들을 수행하는 모듈들(예를 들어, 프로시저들, 함수들 등)로 구현될 수 있다. 명령들을 유형적으로 구현하는 임의의 기계 판독 가능 매체가 본 명세서에서 설명된 방법들의 구현에 사용될 수 있다. 예를 들어, 소프트웨어 코드들은 메모리에 저장되고 프로세서 유닛에 의해 실행될 수 있다. 메모리는 프로세서 유닛 내부에 또는 프로세서 유닛 외부에 구현될 수 있다. 본 명세서에서 사용된 바와 같이, "메모리"라는 용어는 임의의 타입의 장기, 단기, 휘발성, 비휘발성 또는 다른 메모리를 의미하며, 메모리의 임의의 특정 타입이나 메모리들의 개수, 또는 메모리가 저장되는 매체들의 타입으로 한정되는 것은 아니다.
[00149] 펌웨어 및/또는 소프트웨어로 구현된다면, 이 기능들은 컴퓨터 판독 가능 매체 상에 하나 또는 그보다 많은 명령들 또는 코드로서 저장될 수 있다. 예들은 데이터 구조로 인코딩된 컴퓨터 판독 가능 매체 및 컴퓨터 프로그램으로 인코딩된 컴퓨터 판독 가능 매체를 포함한다. 컴퓨터 판독 가능 매체는 물리적 컴퓨터 저장 매체를 포함한다. 저장 매체는 컴퓨터에 의해 액세스 가능한 임의의 이용 가능한 매체일 수 있다. 한정이 아닌 예시로, 이러한 컴퓨터 판독 가능 매체는 RAM, ROM, EEPROM, CD-ROM이나 다른 광 디스크 저장소, 자기 디스크 저장소 또는 다른 자기 저장 디바이스들, 또는 원하는 프로그램 코드를 명령들이나 데이터 구조들의 형태로 저장하는데 사용될 수 있으며 컴퓨터에 의해 액세스 가능한 임의의 다른 매체를 포함할 수 있고, 본 명세서에서 사용된 것과 같은 디스크(disk 및 disc)는 콤팩트 디스크(CD: compact disc), 레이저 디스크(laser disc), 광 디스크(optical disc), 디지털 다기능 디스크(DVD: digital versatile disc), 플로피 디스크(floppy disk) 및 블루레이 디스크(blu-ray disc)를 포함하며, 여기서 디스크(disk)들은 보통 데이터를 자기적으로 재생하는 한편, 디스크(disc)들은 데이터를 레이저들에 의해 광학적으로 재생한다. 상기의 결합들이 또한 컴퓨터 판독 가능 매체의 범위 내에 포함되어야 한다.
[00150] 컴퓨터 판독 가능 매체 상의 저장소 외에도, 명령들 및/또는 데이터는 통신 장치에 포함된 전송 매체 상에서 신호들로서 제공될 수 있다. 예를 들어, 통신 장치는 명령들 및 데이터를 나타내는 신호들을 갖는 트랜시버를 포함할 수 있다. 명령들 및 데이터는 하나 또는 그보다 많은 프로세서들로 하여금, 청구항들에 개요가 서술된 기능들을 구현하게 하도록 구성된다.
[00151] 특정 회로가 제시되었지만, 개시를 실시하기 위해 개시된 회로 전부가 요구되는 것은 아니라고 해당 기술분야에서 통상의 지식을 가진 자들에 의해 인식될 것이다. 더욱이, 특정한 잘 알려진 회로들은 본 개시에 초점을 유지하기 위해 설명되지 않았다.
[00152] 본 개시 및 그 이점들이 상세히 설명되었지만, 첨부된 청구항들에 의해 정의된 바와 같이 본 개시의 기술을 벗어나지 않으면서 본 명세서에 다양한 변경들, 치환들 및 개조들이 이루어질 수 있다고 이해되어야 한다. 예를 들어, 기판 또는 전자 디바이스에 관해 "위(above)"와 "아래(below)"와 같은 상대적 용어들이 사용된다. 물론, 기판 또는 전자 디바이스가 도치된다면, 위가 아래가 되고, 그 역도 성립한다. 추가로, 옆으로 배향된다면, 위와 아래는 기판 또는 전자 디바이스의 측면들을 의미할 수 있다. 더욱이, 본 출원의 범위는 본 명세서에서 설명된 프로세스, 기계, 제조, 물질의 조성, 수단, 방법들 및 단계들의 특정 실시예들로 한정되는 것으로 의도되는 것은 아니다. 해당 기술분야에서 통상의 기술을 가진 자가 본 개시로부터 쉽게 인식하듯이, 본 명세서에서 설명된 대응하는 실시예들과 실질적으로 동일한 기능을 수행하거나 실질적으로 동일한 결과를 달성하는, 현재 존재하는 또는 나중에 개발될 프로세스들, 기계들, 제조, 물질의 조성들, 수단, 방법들 또는 단계들이 본 개시에 따라 이용될 수 있다. 이에 따라, 첨부된 청구항들은 그 범위 내에 이러한 프로세스들, 기계들, 제조, 물질의 조성들, 수단, 방법들 또는 단계들을 포함하는 것으로 의도된다.

Claims (30)

  1. 다중 프로세서 시스템에서 2개의 프로세서들 간의 통신 방법으로서,
    2차 프로세서에 의해, 1차 프로세서와의 통신들을 개시하는 단계;
    상기 2차 프로세서에 의해, 실행 가능 소프트웨어 이미지에 대한 이미지 헤더를 전송하도록 상기 1차 프로세서에 명령하는 단계 ― 상기 실행 가능 소프트웨어 이미지는 상기 이미지 헤더 및 적어도 하나의 데이터 세그먼트를 포함함 ―;
    상기 2차 프로세서에 의해, 상기 이미지 헤더 및 적어도 하나의 데이터 세그먼트를 수신하는 단계;
    상기 2차 프로세서에 의해, 상기 이미지 헤더 및 적어도 하나의 데이터 세그먼트의 성공적인 수신을 상기 1차 프로세서에 표시하는 단계;
    상기 2차 프로세서에 의해, 상기 실행 가능 소프트웨어 이미지 전송의 종료 표시를 상기 1차 프로세서로부터 수신하는 단계; 및
    상기 2차 프로세서에 의해, 상기 전송의 종료 표시의 수신을 상기 1차 프로세서에 확인 응답하는 단계를 포함하는,
    다중 프로세서 시스템에서 2개의 프로세서들 간의 통신 방법.
  2. 제 1 항에 있어서,
    상기 이미지 헤더는 이미지 데이터가 위치하는 메모리 내에서의 이미지 크기 및 위치를 포함하는,
    다중 프로세서 시스템에서 2개의 프로세서들 간의 통신 방법.
  3. 제 1 항에 있어서,
    상기 2차 프로세서에 의해, 상기 적어도 하나의 데이터 세그먼트 각각에 대한 전송 요청을 상기 1차 프로세서에 전송하는 단계를 더 포함하는,
    다중 프로세서 시스템에서 2개의 프로세서들 간의 통신 방법.
  4. 제 1 항에 있어서,
    상기 명령하는 단계는 상기 2차 프로세서에 의해, 이미지 식별, 데이터 오프셋 및 데이터 길이를 포함하는 메시지를 상기 1차 프로세서에 전송하는 단계를 포함하는,
    다중 프로세서 시스템에서 2개의 프로세서들 간의 통신 방법.
  5. 제 1 항에 있어서,
    상기 2차 프로세서에 의해, 착신 데이터 세그먼트에 대한 수신 버퍼를 상기 2차 프로세서의 메모리 내의 목적지 어드레스가 되도록 설정하는 단계를 더 포함하는,
    다중 프로세서 시스템에서 2개의 프로세서들 간의 통신 방법.
  6. 다중 프로세서 디바이스로서,
    2차 프로세서에 의해, 1차 프로세서와의 통신들을 개시하기 위한 수단;
    상기 2차 프로세서에 의해, 실행 가능 소프트웨어 이미지에 대한 이미지 헤더를 전송하도록 상기 1차 프로세서에 명령하기 위한 수단 ― 상기 실행 가능 소프트웨어 이미지는 상기 이미지 헤더 및 적어도 하나의 데이터 세그먼트를 포함함 ―;
    상기 2차 프로세서에 의해, 상기 이미지 헤더 및 적어도 하나의 데이터 세그먼트를 수신하기 위한 수단;
    상기 2차 프로세서에 의해, 상기 이미지 헤더 및 적어도 하나의 데이터 세그먼트의 성공적인 수신을 상기 1차 프로세서에 표시하기 위한 수단;
    상기 2차 프로세서에 의해, 상기 실행 가능 소프트웨어 이미지 전송의 종료 표시를 상기 1차 프로세서로부터 수신하기 위한 수단; 및
    상기 2차 프로세서에 의해, 상기 전송의 종료 표시의 수신을 상기 1차 프로세서에 확인 응답하기 위한 수단을 포함하는,
    다중 프로세서 디바이스.
  7. 제 6 항에 있어서,
    상기 이미지 헤더는 이미지 데이터가 위치하는 메모리 내에서의 이미지 크기 및 위치를 포함하는,
    다중 프로세서 디바이스.
  8. 제 6 항에 있어서,
    상기 2차 프로세서에 의해, 상기 적어도 하나의 데이터 세그먼트 각각에 대한 전송 요청을 상기 1차 프로세서에 전송하기 위한 수단을 더 포함하는,
    다중 프로세서 디바이스.
  9. 제 6 항에 있어서,
    상기 명령하기 위한 수단은 상기 2차 프로세서에 의해, 이미지 식별, 데이터 오프셋 및 데이터 길이를 포함하는 메시지를 상기 1차 프로세서에 전송하기 위한 수단을 포함하는,
    다중 프로세서 디바이스.
  10. 제 6 항에 있어서,
    상기 2차 프로세서에 의해, 착신 데이터 세그먼트에 대한 수신 버퍼를 상기 2차 프로세서의 메모리 내의 목적지 어드레스가 되도록 설정하기 위한 수단을 더 포함하는,
    다중 프로세서 디바이스.
  11. 컴퓨터 프로그램 물건으로서,
    비-일시적 프로그램 코드가 기록된 비-일시적 컴퓨터 판독 가능 매체를 포함하며,
    상기 비-일시적 프로그램 코드는:
    2차 프로세서에 의해, 1차 프로세서와의 통신들을 개시하기 위한 프로그램 코드;
    상기 2차 프로세서에 의해, 실행 가능 소프트웨어 이미지에 대한 이미지 헤더를 전송하도록 상기 1차 프로세서에 명령하기 위한 프로그램 코드 ― 상기 실행 가능 소프트웨어 이미지는 상기 이미지 헤더 및 적어도 하나의 데이터 세그먼트를 포함함 ―;
    상기 2차 프로세서에 의해, 상기 이미지 헤더 및 적어도 하나의 데이터 세그먼트를 수신하기 위한 프로그램 코드;
    상기 2차 프로세서에 의해, 상기 이미지 헤더 및 적어도 하나의 데이터 세그먼트의 성공적인 수신을 상기 1차 프로세서에 표시하기 위한 프로그램 코드;
    상기 2차 프로세서에 의해, 상기 실행 가능 소프트웨어 이미지 전송의 종료 표시를 상기 1차 프로세서로부터 수신하기 위한 프로그램 코드; 및
    상기 2차 프로세서에 의해, 상기 전송의 종료 표시의 수신을 상기 1차 프로세서에 확인 응답하기 위한 프로그램 코드를 포함하는,
    컴퓨터 프로그램 물건.
  12. 제 11 항에 있어서,
    상기 이미지 헤더는 이미지 데이터가 위치하는 메모리 내에서의 이미지 크기 및 위치를 포함하는,
    컴퓨터 프로그램 물건.
  13. 제 11 항에 있어서,
    상기 비-일시적 프로그램 코드는 상기 2차 프로세서에 의해, 상기 적어도 하나의 데이터 세그먼트 각각에 대한 전송 요청을 상기 1차 프로세서에 전송하기 위한 프로그램 코드를 더 포함하는,
    컴퓨터 프로그램 물건.
  14. 제 11 항에 있어서,
    상기 명령하기 위한 프로그램 코드는 상기 2차 프로세서에 의해, 이미지 식별, 데이터 오프셋 및 데이터 길이를 포함하는 메시지를 상기 1차 프로세서에 전송하기 위한 프로그램 코드를 포함하는,
    컴퓨터 프로그램 물건.
  15. 제 11 항에 있어서,
    상기 비-일시적 프로그램 코드는 상기 2차 프로세서에 의해, 착신 데이터 세그먼트에 대한 수신 버퍼를 상기 2차 프로세서의 메모리 내의 목적지 어드레스가 되도록 설정하기 위한 프로그램 코드를 더 포함하는,
    컴퓨터 프로그램 물건.
  16. 다중 프로세서 시스템에서 2개의 프로세서들 간의 통신 방법으로서,
    1차 프로세서에 의해, 실행 가능 소프트웨어 이미지에 대한 이미지 헤더를 전송하라는 명령을 수신하는 단계 ― 상기 실행 가능 소프트웨어 이미지는 상기 이미지 헤더 및 적어도 하나의 데이터 세그먼트를 포함함 ―;
    상기 1차 프로세서에 의해, 상기 이미지 헤더 및 적어도 하나의 데이터 세그먼트를 2차 프로세서에 전송하는 단계;
    상기 1차 프로세서에 의해, 상기 이미지 헤더 및 적어도 하나의 데이터 세그먼트의 성공적인 수신의 표시를 상기 2차 프로세서로부터 수신하는 단계;
    상기 1차 프로세서에 의해, 상기 실행 가능 이미지 전송의 종료 표시를 전송하는 단계; 및
    상기 1차 프로세서에 의해, 상기 전송의 종료 표시의 수신의 확인 응답을 상기 2차 프로세서로부터 수신하는 단계를 포함하는,
    다중 프로세서 시스템에서 2개의 프로세서들 간의 통신 방법.
  17. 제 16 항에 있어서,
    상기 이미지 헤더는 이미지 데이터가 위치하는 메모리 내에서의 이미지 크기 및 위치를 포함하는,
    다중 프로세서 시스템에서 2개의 프로세서들 간의 통신 방법.
  18. 제 16 항에 있어서,
    상기 1차 프로세서에 의해, 상기 적어도 하나의 데이터 세그먼트 각각에 대한 상기 1차 프로세서로의 전송 요청을 수신하는 단계를 더 포함하는,
    다중 프로세서 시스템에서 2개의 프로세서들 간의 통신 방법.
  19. 제 16 항에 있어서,
    상기 1차 프로세서에 의해, 이미지 식별, 데이터 오프셋 및 데이터 길이를 포함하는 메시지를 상기 2차 프로세서로부터 수신하는 단계를 더 포함하는,
    다중 프로세서 시스템에서 2개의 프로세서들 간의 통신 방법.
  20. 제 19 항에 있어서,
    상기 메시지에 기초하여 데이터를 전송하는 단계를 더 포함하는,
    다중 프로세서 시스템에서 2개의 프로세서들 간의 통신 방법.
  21. 다중 프로세서 디바이스로서,
    1차 프로세서에 의해, 실행 가능 소프트웨어 이미지에 대한 이미지 헤더를 전송하라는 명령을 수신하기 위한 수단 ― 상기 실행 가능 소프트웨어 이미지는 상기 이미지 헤더 및 적어도 하나의 데이터 세그먼트를 포함함 ―;
    상기 1차 프로세서에 의해, 상기 이미지 헤더 및 적어도 하나의 데이터 세그먼트를 2차 프로세서에 전송하기 위한 수단;
    상기 1차 프로세서에 의해, 상기 이미지 헤더 및 적어도 하나의 데이터 세그먼트의 성공적인 수신의 표시를 상기 2차 프로세서로부터 수신하기 위한 수단;
    상기 1차 프로세서에 의해, 상기 실행 가능 이미지 전송의 종료 표시를 전송하기 위한 수단; 및
    상기 1차 프로세서에 의해, 상기 전송의 종료 표시의 수신의 확인 응답을 상기 2차 프로세서로부터 수신하기 위한 수단을 포함하는,
    다중 프로세서 디바이스.
  22. 제 21 항에 있어서,
    상기 이미지 헤더는 이미지 데이터가 위치하는 메모리 내에서의 이미지 크기 및 위치를 포함하는,
    다중 프로세서 디바이스.
  23. 제 21 항에 있어서,
    상기 1차 프로세서에 의해, 상기 적어도 하나의 데이터 세그먼트 각각에 대한 상기 1차 프로세서로의 전송 요청을 수신하기 위한 수단을 더 포함하는,
    다중 프로세서 디바이스.
  24. 제 21 항에 있어서,
    상기 1차 프로세서에 의해, 이미지 식별, 데이터 오프셋 및 데이터 길이를 포함하는 메시지를 상기 2차 프로세서로부터 수신하기 위한 수단을 더 포함하는,
    다중 프로세서 디바이스.
  25. 제 24 항에 있어서,
    상기 메시지에 기초하여 데이터를 전송하기 위한 수단을 더 포함하는,
    다중 프로세서 디바이스.
  26. 컴퓨터 프로그램 물건으로서,
    비-일시적 프로그램 코드가 기록된 비-일시적 컴퓨터 판독 가능 매체를 포함하며,
    상기 비-일시적 프로그램 코드는:
    1차 프로세서에 의해, 실행 가능 소프트웨어 이미지에 대한 이미지 헤더를 전송하라는 명령을 수신하기 위한 프로그램 코드 ― 상기 실행 가능 소프트웨어 이미지는 상기 이미지 헤더 및 적어도 하나의 데이터 세그먼트를 포함함 ―;
    상기 1차 프로세서에 의해, 상기 이미지 헤더 및 적어도 하나의 데이터 세그먼트를 2차 프로세서에 전송하기 위한 프로그램 코드;
    상기 1차 프로세서에 의해, 상기 이미지 헤더 및 적어도 하나의 데이터 세그먼트의 성공적인 수신의 표시를 상기 2차 프로세서로부터 수신하기 위한 프로그램 코드;
    상기 1차 프로세서에 의해, 상기 실행 가능 이미지 전송의 종료 표시를 전송하기 위한 프로그램 코드; 및
    상기 1차 프로세서에 의해, 상기 전송의 종료 표시의 수신의 확인 응답을 상기 2차 프로세서로부터 수신하기 위한 프로그램 코드를 포함하는,
    컴퓨터 프로그램 물건.
  27. 제 26 항에 있어서,
    상기 이미지 헤더는 이미지 데이터가 위치하는 메모리 내에서의 이미지 크기 및 위치를 포함하는,
    컴퓨터 프로그램 물건.
  28. 제 26 항에 있어서,
    상기 비-일시적 프로그램 코드는 상기 1차 프로세서에 의해, 상기 적어도 하나의 데이터 세그먼트 각각에 대한 상기 1차 프로세서로의 전송 요청을 수신하기 위한 프로그램 코드를 더 포함하는,
    컴퓨터 프로그램 물건.
  29. 제 26 항에 있어서,
    상기 비-일시적 프로그램 코드는 상기 1차 프로세서에 의해, 이미지 식별, 데이터 오프셋 및 데이터 길이를 포함하는 메시지를 상기 2차 프로세서로부터 수신하기 위한 프로그램 코드를 더 포함하는,
    컴퓨터 프로그램 물건.
  30. 제 29 항에 있어서,
    상기 비-일시적 프로그램 코드는 상기 메시지에 기초하여 데이터를 전송하기 위한 프로그램 코드를 더 포함하는,
    컴퓨터 프로그램 물건.
KR1020147018511A 2011-12-05 2012-12-05 다중 프로세서 시스템에서의 프로세서 간 프로토콜 KR101627097B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/310,928 US9058191B2 (en) 2010-03-22 2011-12-05 Direct transfer of executable software image to memory allocated by target processor based on transferred image header
US13/310,928 2011-12-05
PCT/US2012/068052 WO2013086062A1 (en) 2011-12-05 2012-12-05 Inter-processor protocol in a multi-processor system

Publications (2)

Publication Number Publication Date
KR20140098246A true KR20140098246A (ko) 2014-08-07
KR101627097B1 KR101627097B1 (ko) 2016-06-03

Family

ID=47472020

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147018511A KR101627097B1 (ko) 2011-12-05 2012-12-05 다중 프로세서 시스템에서의 프로세서 간 프로토콜

Country Status (6)

Country Link
US (1) US9058191B2 (ko)
EP (1) EP2788870A1 (ko)
JP (4) JP5890038B2 (ko)
KR (1) KR101627097B1 (ko)
CN (1) CN103975305B (ko)
WO (1) WO2013086062A1 (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8838949B2 (en) 2010-03-22 2014-09-16 Qualcomm Incorporated Direct scatter loading of executable software image from a primary processor to one or more secondary processor in a multi-processor system
KR102011137B1 (ko) * 2012-12-07 2019-08-14 삼성전자주식회사 데이터 처리 장치와 회로
US9594718B2 (en) 2013-01-24 2017-03-14 Qualcomm Innovation Center, Inc. Hardware accelerated communications over a chip-to-chip interface
US8954992B2 (en) * 2013-03-15 2015-02-10 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Distributed and scaled-out network switch and packet processing
JP6089349B2 (ja) * 2013-05-28 2017-03-08 ▲ホア▼▲ウェイ▼技術有限公司Huawei Technologies Co.,Ltd. マルチコアアーキテクチャでのリソース分離を支援するための方法およびシステム
KR102116096B1 (ko) * 2013-12-20 2020-05-27 한화테크윈 주식회사 다중시스템 및 이의 부팅 방법
KR102083931B1 (ko) 2014-01-21 2020-03-03 한화테크윈 주식회사 광각 렌즈계
TWI557644B (zh) * 2014-11-12 2016-11-11 鴻海精密工業股份有限公司 雙處理器電子裝置及其快速開機啓動的方法
CN105704749A (zh) * 2016-01-11 2016-06-22 努比亚技术有限公司 网络参数恢复装置及方法
US10564983B2 (en) * 2016-06-15 2020-02-18 Vmware, Inc. Multiprocessor initialization via firmware configuration
WO2020031184A1 (en) * 2018-08-06 2020-02-13 Accelario Software Ltd. Data migration methods and system
US11824009B2 (en) 2018-12-10 2023-11-21 Preferred Networks, Inc. Semiconductor device and data transferring method for semiconductor device
US11853104B2 (en) * 2019-06-27 2023-12-26 Netapp, Inc. Virtual machine backup from computing environment to storage environment
US11201749B2 (en) 2019-09-11 2021-12-14 International Business Machines Corporation Establishing a security association and authentication to secure communication between an initiator and a responder
US11188658B2 (en) 2019-09-11 2021-11-30 International Business Machines Corporation Concurrent enablement of encryption on an operational path at a storage port
US11354455B2 (en) 2019-09-11 2022-06-07 International Business Machines Corporation Maintenance of access for security enablement on a host system
US11308243B2 (en) 2019-09-11 2022-04-19 International Business Machines Corporation Maintenance of access for security enablement in a storage device
US11188659B2 (en) 2019-09-11 2021-11-30 International Business Machines Corporation Concurrent enablement of encryption on an operational path at a host port
US11206144B2 (en) 2019-09-11 2021-12-21 International Business Machines Corporation Establishing a security association and authentication to secure communication between an initiator and a responder
US11245521B2 (en) 2019-09-25 2022-02-08 International Business Machines Corporation Reverting from a new security association to a previous security association in response to an error during a rekey operation
US11303441B2 (en) 2019-09-25 2022-04-12 International Business Machines Corporation Reverting from a new security association to a previous security association in response to an error during a rekey operation
US11570586B2 (en) * 2020-07-02 2023-01-31 At&T Intellectual Property I, L.P. Location aware assignment of resources for push to talk (PTT) communication systems in a fifth generation (5G) network or other next generation wireless communication system
CN113204438B (zh) * 2021-03-24 2023-08-01 深圳震有科技股份有限公司 一种amp系统核间通讯方法及系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011119648A1 (en) * 2010-03-22 2011-09-29 Qualcomm Incorporated Direct scatter loading of executable software image from a primary processor to one or more secondary processor in a multi-processor system

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3639571A1 (de) 1986-11-20 1988-06-01 Standard Elektrik Lorenz Ag Verfahren und schaltungsanordnung zum urladen eines zweitrechners
JPH06195310A (ja) 1992-12-22 1994-07-15 Fujitsu Ltd マルチcpuに対する制御データ書換え方法
JPH07253960A (ja) * 1994-03-16 1995-10-03 Fujitsu Ltd マルチプロセッサシステムにおけるipl方式
JPH08161283A (ja) 1994-12-07 1996-06-21 Sony Corp 複数プロセツサシステム
KR970055857A (ko) * 1995-12-30 1997-07-31 김광호 디지탈 셀룰라 시스템에서 기지국시스템의 로딩방법
JPH09244902A (ja) 1996-03-12 1997-09-19 Oki Electric Ind Co Ltd ダウンロード回路
KR100265955B1 (ko) * 1996-12-02 2000-09-15 김영환 주프로세서에대해다수개의부프로세서가존재하는시스템의부프로세서로딩방법
JPH11282686A (ja) * 1998-03-30 1999-10-15 Hitachi Ltd ネットワークコンピュータシステム
JP2000020492A (ja) 1998-06-29 2000-01-21 Yaskawa Electric Corp サブcpuへのプログラムダウンロード方法およびそのnc装置
US20020138156A1 (en) 2001-01-25 2002-09-26 Wong Isaac H. System of connecting multiple processors in cascade
CN1251105C (zh) 2001-01-31 2006-04-12 株式会社日立制作所 数据处理系统和数据处理器
US7093104B2 (en) 2001-03-22 2006-08-15 Sony Computer Entertainment Inc. Processing modules for computer architecture for broadband networks
JP2003036251A (ja) * 2001-07-23 2003-02-07 Hitachi Ltd 信号処理装置
JP2004086447A (ja) 2002-08-26 2004-03-18 Renesas Technology Corp マイクロコンピュータ
CN1595372A (zh) 2003-09-12 2005-03-16 翁嘉联 一种改进bios执行的方法
US7496917B2 (en) 2003-09-25 2009-02-24 International Business Machines Corporation Virtual devices using a pluarlity of processors
US7356680B2 (en) 2005-01-22 2008-04-08 Telefonaktiebolaget L M Ericsson (Publ) Method of loading information into a slave processor in a multi-processor system using an operating-system-friendly boot loader
US7359919B2 (en) * 2005-03-08 2008-04-15 Microsoft Corporation Reliable request-response messaging over a request-response transport
JP2007157150A (ja) 2005-12-06 2007-06-21 Samsung Electronics Co Ltd メモリシステム及びそれを含むメモリ処理方法
JP2007183705A (ja) * 2006-01-04 2007-07-19 Olympus Corp マルチプロセッサシステム
JP2007213292A (ja) 2006-02-09 2007-08-23 Nec Electronics Corp マルチプロセッサシステム及びスレーブシステムの起動方法
US7447846B2 (en) 2006-04-12 2008-11-04 Mediatek Inc. Non-volatile memory sharing apparatus for multiple processors and method thereof
JP5458574B2 (ja) 2006-06-27 2014-04-02 日本電気株式会社 マルチプロセッサシステム、マルチプロセッサシステムを使用した携帯端末
US20080235493A1 (en) * 2007-03-23 2008-09-25 Qualcomm Incorporated Instruction communication techniques for multi-processor system
KR20100034415A (ko) 2008-09-24 2010-04-01 삼성전자주식회사 메모리 링크 아키텍쳐를 활용한 부팅기능을 갖는 멀티 프로세서 시스템
CN101387952B (zh) 2008-09-24 2011-12-21 上海大学 单芯片多处理器任务调度管理方法
KR20110013867A (ko) 2009-08-04 2011-02-10 삼성전자주식회사 메모리 링크 아키텍쳐에서 플래시 레스 부팅 기능을 갖는 멀티 프로세서 시스템
JP5999532B2 (ja) * 2015-09-16 2016-09-28 ヤマハ株式会社 Pll回路

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011119648A1 (en) * 2010-03-22 2011-09-29 Qualcomm Incorporated Direct scatter loading of executable software image from a primary processor to one or more secondary processor in a multi-processor system

Also Published As

Publication number Publication date
US9058191B2 (en) 2015-06-16
JP2017117499A (ja) 2017-06-29
CN103975305B (zh) 2017-10-31
WO2013086062A1 (en) 2013-06-13
JP5890038B2 (ja) 2016-03-22
CN103975305A (zh) 2014-08-06
JP2016115371A (ja) 2016-06-23
JP2018045718A (ja) 2018-03-22
KR101627097B1 (ko) 2016-06-03
EP2788870A1 (en) 2014-10-15
JP2015508520A (ja) 2015-03-19
US20120089814A1 (en) 2012-04-12
JP6336498B2 (ja) 2018-06-06

Similar Documents

Publication Publication Date Title
KR101627097B1 (ko) 다중 프로세서 시스템에서의 프로세서 간 프로토콜
EP2550603B1 (en) Direct scatter loading of executable software image from a primary processor to one or more secondary processors in a multi-processor system
JP2013522803A5 (ko)
US11379278B2 (en) Methods and apparatus for correcting out-of-order data transactions between processors
US10659553B2 (en) Memory system allowing host to easily transmit and receive data
US7523378B2 (en) Techniques to determine integrity of information
US7770088B2 (en) Techniques to transmit network protocol units
US20140101338A1 (en) Redirection communication
CN111448543B (zh) 内存访问技术及计算机系统
WO2011130974A1 (zh) 文件下载方法及系统
US11770212B2 (en) Data transmission methods, data transmission device, and data transmission apparatuses
WO2019057005A1 (zh) 数据校验的方法、装置以及网卡
KR20140132386A (ko) 감소된 지연을 갖는 원격 직접 메모리 액세스
US20150201436A1 (en) Method of mobile terminal internal communications
CN111800488B (zh) 一种基于udp和ipv6协议的数据传输方法及系统
US20090064129A1 (en) Suspend and resume mechanisms on a flash memory
US20160233987A1 (en) Initiator terminal, target terminal, initiator terminal error-processing method, and target terminal error-processing method
WO2013170592A1 (zh) 一种令牌周转控制方法、装置及系统
US10402186B2 (en) Remote update of a portable storage device

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
FPAY Annual fee payment

Payment date: 20190327

Year of fee payment: 4