KR20220033311A - 전자 디바이스 및 이의 동작 방법과 네트워크 시스템 - Google Patents
전자 디바이스 및 이의 동작 방법과 네트워크 시스템 Download PDFInfo
- Publication number
- KR20220033311A KR20220033311A KR1020200115562A KR20200115562A KR20220033311A KR 20220033311 A KR20220033311 A KR 20220033311A KR 1020200115562 A KR1020200115562 A KR 1020200115562A KR 20200115562 A KR20200115562 A KR 20200115562A KR 20220033311 A KR20220033311 A KR 20220033311A
- Authority
- KR
- South Korea
- Prior art keywords
- level
- firmware
- controller
- level controller
- target
- Prior art date
Links
- 238000011017 operating method Methods 0.000 title 1
- 238000000034 method Methods 0.000 claims description 46
- 230000004044 response Effects 0.000 claims description 14
- 230000005856 abnormality Effects 0.000 claims description 11
- 238000010586 diagram Methods 0.000 description 10
- 238000009792 diffusion process Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 5
- 238000012546 transfer Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000007480 spreading Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4416—Network booting; Remote initial program loading [RIPL]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4406—Loading of operating system
- G06F9/441—Multiboot arrangements, i.e. selecting an operating system to be loaded
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4403—Processor initialisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4406—Loading of operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4418—Suspend and resume; Hibernate and awake
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
Abstract
전자 디바이스가 개시된다. 일 실시예에 있어서, 전자 디바이스 내의 제1 레벨 컨트롤러는 제1 레벨 펌웨어를 업데이트하고, 상기 제1 레벨 컨트롤러는 상기 제1 레벨 컨트롤러보다 레벨이 낮은 제2 레벨 컨트롤러들 중 하나에 제2 레벨 펌웨어를 쓰며, 상기 제2 레벨 펌웨어가 쓰여진 제2 레벨 컨트롤러는 리셋 동작을 수행하여 부팅하고, 상기 제1 레벨 컨트롤러 또는 상기 부팅된 제2 레벨 컨트롤러는 펌웨어 업데이트가 되지 않은 타겟 제2 레벨 컨트롤러가 있는지 여부를 확인하고, 상기 제1 레벨 컨트롤러 또는 상기 부팅된 제2 레벨 컨트롤러는 상기 타겟 제2 레벨 컨트롤러가 있는 경우, 상기 제2 레벨 펌웨어를 상기 타겟 제2 레벨 컨트롤러에 쓴다.
Description
아래 실시예들은 전자 디바이스에서 펌웨어 관리에 관한 것이다.
펌웨어(firmware)는 소프트웨어의 일종으로, 시스템의 기본적인 제어 및 구동을 맡을 수 있다. 펌웨어는 일반적으로 ROM(Read Only Memory)에 기록될 수 있다.
기존에는 네트워크 환경 내의 여러 시스템에 펌웨어 업데이트가 수행된다. 관련 선행기술로 미국 등록특허 US7219343B2(발명의 명칭: 멀티 노드 데이터 처리 시스템에서 펌웨어 업데이트 메커니즘, 출원인: International Business Machines Corporation)가 있다. 해당 미국 등록특허 공보에는 다수의 네트워크 노드에 걸쳐 균일하게 펌웨어를 업데이트하는 내용이 개시되어 있다.
일 측에 따른 복수의 컨트롤러들을 포함하는 전자 디바이스의 동작 방법은 제1 레벨 컨트롤러가 제1 레벨 펌웨어를 업데이트하는 단계; 상기 제1 레벨 컨트롤러는 상기 제1 레벨 컨트롤러보다 레벨이 낮은 제2 레벨 컨트롤러들 중 하나에 제2 레벨 펌웨어를 쓰는(write) 단계; 상기 제2 레벨 펌웨어가 쓰여진 제2 레벨 컨트롤러는 리셋 동작을 수행하여 부팅하는 단계; 상기 제1 레벨 컨트롤러 또는 상기 부팅된 제2 레벨 컨트롤러는 펌웨어 업데이트가 되지 않은 타겟 제2 레벨 컨트롤러 가 있는지 여부를 확인하는 단계 ; 및 상기 제1 레벨 컨트롤러 또는 상기 부팅된 제2 레벨 컨트롤러는 상기 타겟 제2 레벨 컨트롤러가 있는 경우, 상기 제2 레벨 펌웨어를 상기 타겟 제2 레벨 컨트롤러에 쓰는 단계를 포함한다.
상기 제1 레벨 컨트롤러가 상기 제2 레벨 컨트롤러들 중 하나에 상기 제2 레벨 펌웨어를 쓰는 단계는 상기 제1 레벨 컨트롤러가 외부 메모리에 저장된 상기 제2 레벨 펌웨어를 상기 제2 레벨 컨트롤러들 중 하나에 쓰는 단계를 포함할 수 있다.
상기 부팅된 제2 레벨 컨트롤러는 상기 제2 레벨 컨트롤러들보다 레벨이 낮은 제3 레벨 컨트롤러들 중 펌웨어 업데이트가 되지 않은 타겟 제3 레벨 컨트롤러가 있는지 여부를 확인하는 단계; 상기 부팅된 제2 레벨 컨트롤러는 상기 타겟 제3 레벨 컨트롤러가 있는 경우, 제3 레벨 펌웨어를 상기 제1 레벨 컨트롤러에 요청하는 단계; 및 상기 부팅된 제2 레벨 컨트롤러는 상기 제1 레벨 컨트롤러로부터 상기 제3 레벨 펌웨어를 수신하여 상기 타겟 제3 레벨 컨트롤러에 쓰는 단계를 더 포함할 수 있다.
상기 부팅된 제2 레벨 컨트롤러는 상기 제2 레벨 컨트롤러들보다 레벨이 낮은 제3 레벨 컨트롤러들 중 펌웨어 업데이트가 되지 않은 타겟 제3 레벨 컨트롤러가 있는지 여부를 확인하는 단계; 및 상기 부팅된 제2 레벨 컨트롤러는 상기 타겟 제3 레벨 컨트롤러가 있는 경우, 외부 메모리에 저장된 제3 레벨 펌웨어를 상기 타겟 제3 레벨 컨트롤러에 쓰는 단계를 더 포함할 수 있다.
상기 타겟 제2 레벨 컨트롤러는 상기 제2 레벨 펌웨어가 쓰여진 후 부팅하는 동안에 펌웨어 업데이트되지 않은 동일 레벨 또는 하위 레벨 컨트롤러에 펌웨어 업데이트가 수행되도록 DMA(Direct Memory Access) 컨트롤러를 제어하는 단계를 더 포함할 수 있다.
상기 제1 레벨 컨트롤러는 상기 제1 레벨 펌웨어를 업데이트하여 부팅한 경우, 상기 제2 레벨 펌웨어를 호스트에 요청하는 단계; 및 상기 제1 레벨 컨트롤러는 상기 호스트로부터 상기 제2 레벨 펌웨어를 수신하여 메모리에 저장하는 단계를 더 포함할 수 있다.
상기 제1 레벨 컨트롤러 또는 상기 부팅된 제2 레벨 컨트롤러는 상기 타겟 제2 레벨 컨트롤러에 상기 제2 레벨 펌웨어를 쓰는 것을 실패한 경우 또는 상기 타겟 제2 레벨 컨트롤러에 상기 제2 레벨 펌웨어를 썼으나 상기 타겟 제2 레벨 컨트롤러의 부팅 완료에 대한 응답이 없는 경우, 상기 타겟 제2 레벨 컨트롤러에 이상(abnormality)이 있다고 결정하는 단계를 더 포함할 수 있다.
상기 제1 레벨 컨트롤러는 상기 타겟 제2 레벨 컨트롤러의 부팅 완료됨을 나타내는 상태가 일정 시간 이내에 컨트롤러 상태 테이블에 기록되지 않은 경우, 상기 타겟 제2 레벨 컨트롤러에 이상이 있다고 결정하는 단계를 더 포함할 수 있다.
상기 제1 레벨 컨트롤러가 상기 제2 레벨 컨트롤러들 중 하나에 상기 제2 레벨 펌웨어를 쓰는 단계는 상기 제1 레벨 컨트롤러가 브로드캐스팅 방식에 따라 상기 제2 레벨 펌웨어를 상기 제2 레벨 컨트롤러들에 쓰는 단계; 및 상기 부팅된 제2 레벨 컨트롤러는 상기 브로드캐스팅 방식에 따라 상기 부팅된 제2 레벨 컨트롤러와 연결된 제3 레벨 컨트롤러들에 제3 레벨 펌웨어를 쓰는 단계를 더 포함할 수 있다.
상기 제1 레벨 컨트롤러는 상기 제2 레벨 컨트롤러들 각각의 메모리 주소를 할당하는 단계를 더 포함할 수 있다.
일 측에 따른 전자 디바이스는 복수의 컨트롤러들을 포함한다.
상기 컨트롤러들 중 제1 레벨 컨트롤러는 제1 레벨 펌웨어를 업데이트하고, 상기 제1 레벨 컨트롤러는 상기 제1 레벨 컨트롤러보다 레벨이 낮은 제2 레벨 컨트롤러들 중 하나에 제2 레벨 펌웨어를 쓰며(write), 상기 제2 레벨 펌웨어가 쓰여진 제2 레벨 컨트롤러는 리셋 동작을 수행하여 부팅하고, 상기 제1 레벨 컨트롤러 또는 상기 부팅된 제2 레벨 컨트롤러는 펌웨어 업데이트가 되지 않은 타겟 제2 레벨 컨트롤러가 있는지 여부를 확인하고, 상기 제1 레벨 컨트롤러 또는 상기 부팅된 제2 레벨 컨트롤러는 상기 타겟 제2 레벨 컨트롤러가 있는 경우, 상기 제2 레벨 펌웨어를 상기 타겟 제2 레벨 컨트롤러에 쓴다.
상기 부팅된 제2 레벨 컨트롤러는 상기 제2 레벨 컨트롤러들보다 레벨이 낮은 제3 레벨 컨트롤러들 중 펌웨어 업데이트가 되지 않은 타겟 제3 레벨 컨트롤러가 있는지 여부를 확인할 수 있고, 상기 부팅된 제2 레벨 컨트롤러는 상기 타겟 제3 레벨 컨트롤러가 있는 경우, 제3 레벨 펌웨어를 상기 제1 레벨 컨트롤러에 요청하며, 상기 부팅된 제2 레벨 컨트롤러는 상기 제1 레벨 컨트롤러로부터 상기 제3 레벨 펌웨어를 수신하여 상기 타겟 제3 레벨 컨트롤러에 쓸 수 있다.
상기 부팅된 제2 레벨 컨트롤러는 상기 제2 레벨 컨트롤러들보다 레벨이 낮은 제3 레벨 컨트롤러들 중 펌웨어 업데이트가 되지 않은 타겟 제3 레벨 컨트롤러가 있는지 여부를 확인하고, 상기 부팅된 제2 레벨 컨트롤러는 상기 타겟 제3 레벨 컨트롤러가 있는 경우, 상기 메모리에 저장된 제3 레벨 펌웨어를 상기 타겟 제3 레벨 컨트롤러에 쓸 수 있다.
상기 타겟 제2 레벨 컨트롤러는 상기 제2 레벨 펌웨어가 쓰여진 후 부팅하는 동안에 펌웨어 업데이트되지 않은 동일 레벨 또는 하위 레벨 컨트롤러에 펌웨어 업데이트가 수행되도록 DMA 컨트롤러를 제어할 수 있다.
상기 제1 레벨 컨트롤러 또는 상기 부팅된 제2 레벨 컨트롤러는 상기 타겟 제2 레벨 컨트롤러에 상기 제2 레벨 펌웨어를 쓰는 것을 실패한 경우 또는 상기 타겟 제2 레벨 컨트롤러에 상기 제2 레벨 펌웨어를 썼으나 상기 타겟 제2 레벨 컨트롤러의 부팅 완료에 대한 응답이 없는 경우, 상기 타겟 제2 레벨 컨트롤러에 이상이 있다고 결정하거나, 상기 제1 레벨 컨트롤러는 상기 타겟 제2 레벨 컨트롤러의 부팅 완료됨을 나타내는 상태가 일정 시간 이내에 컨트롤러 상태 테이블에 기록되지 않은 경우, 상기 타겟 제2 레벨 컨트롤러에 이상이 있다고 결정할 수 있다.
상기 제1 레벨 컨트롤러가 브로드캐스팅 방식에 따라 상기 제2 레벨 펌웨어를 상기 제2 레벨 컨트롤러들에 쓰고, 상기 부팅된 제2 레벨 컨트롤러는 상기 브로드캐스팅 방식에 따라 상기 부팅된 제2 레벨 컨트롤러와 연결된 제3 레벨 컨트롤러들에 제3 레벨 펌웨어를 쓸 수 있다.
일 측에 따른 네트워크 시스템은 복수의 전자 디바이스들; 및 상기 전자 디바이스들과 통신하는 호스트를 포함한다.
상기 전자 디바이스들 중 제1 전자 디바이스는 상기 호스트로부터 펌웨어를 수신하여 펌웨어 업데이트를 수행하고, 상기 제1 전자 디바이스와 호스트 각각은 펌웨어 업데이트되지 않은 다른 전자 디바이스들 각각에 상기 펌웨어를 써서(write) 펌웨어 업데이트를 수행하며, 상기 제1 전자 디바이스, 상기 펌웨어 업데이트된 각 전자 디바이스, 및 상기 호스트 각각은 펌웨어 업데이트되지 않은 다른 전자 디바이스들 각각에 상기 펌웨어를 써서 펌웨어 업데이트를 수행한다.
상기 호스트는 상기 전자 디바이스들 각각의 펌웨어 업데이트 완료 여부가 기록되는 디바이스 상태 테이블을 저장할 수 있다.
상기 전자 디바이스들은 네트워크 토폴로지를 형성할 수 있다.
상기 네트워크 토폴로지는 트리 구조, 트리-링 구조, 메시 구조, 토러스(torus) 구조, 링 구조, 스타 구조, 또는 링-스타 구조를 포함할 수 있다.
도 1 내지 도 3은 일 실시예에 따른 전자 디바이스를 설명하기 위한 설명하기 위한 도면이다.
도 4 내지 도 7은 일 실시예에 따른 전자 디바이스 내에서 확산 방식의 펌웨어 업데이트를 설명하기 위한 도면이다.
도 8은 일 실시예에 따른 전자 디바이스 내에서 브로드캐스팅 방식의 펌웨어 업데이트를 설명하기 위한 도면이다.
도 9 내지 도 10은 일 실시예에 따른 전자 디바이스 내에서 상위 레벨 컨트롤러가 하위 레벨 컨트롤러의 메모리 주소를 할당하는 것을 설명하기 위한 도면이다.
도 11은 일 실시예에 따른 전자 디바이스의 동작 방법을 설명하기 위한 순서도이다.
도 12 내지 도 14는 일 실시예에 따른 전자 디바이스들의 펌웨어 업데이트를 설명하기 위한 도면이다.
도 4 내지 도 7은 일 실시예에 따른 전자 디바이스 내에서 확산 방식의 펌웨어 업데이트를 설명하기 위한 도면이다.
도 8은 일 실시예에 따른 전자 디바이스 내에서 브로드캐스팅 방식의 펌웨어 업데이트를 설명하기 위한 도면이다.
도 9 내지 도 10은 일 실시예에 따른 전자 디바이스 내에서 상위 레벨 컨트롤러가 하위 레벨 컨트롤러의 메모리 주소를 할당하는 것을 설명하기 위한 도면이다.
도 11은 일 실시예에 따른 전자 디바이스의 동작 방법을 설명하기 위한 순서도이다.
도 12 내지 도 14는 일 실시예에 따른 전자 디바이스들의 펌웨어 업데이트를 설명하기 위한 도면이다.
이하에서, 첨부된 도면을 참조하여 실시예들을 상세하게 설명한다. 그러나, 실시예들에는 다양한 변경이 가해질 수 있어서 특허출원의 권리 범위가 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 실시예들에 대한 모든 변경, 균등물 내지 대체물이 권리 범위에 포함되는 것으로 이해되어야 한다.
실시예에서 사용한 용어는 단지 설명을 목적으로 사용된 것으로, 한정하려는 의도로 해석되어서는 안된다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 실시예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 실시예의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
또한, 실시 예의 구성 요소를 설명하는 데 있어서, 제 1, 제 2, A, B, (a), (b) 등의 용어를 사용할 수 있다. 이러한 용어는 그 구성 요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성 요소의 본질이나 차례 또는 순서 등이 한정되지 않는다. 어떤 구성 요소가 다른 구성요소에 "연결", "결합" 또는 "접속"된다고 기재된 경우, 그 구성 요소는 그 다른 구성요소에 직접적으로 연결되거나 접속될 수 있지만, 각 구성 요소 사이에 또 다른 구성 요소가 "연결", "결합" 또는 "접속"될 수도 있다고 이해되어야 할 것이다.
어느 하나의 실시 예에 포함된 구성요소와, 공통적인 기능을 포함하는 구성요소는, 다른 실시 예에서 동일한 명칭을 사용하여 설명하기로 한다. 반대되는 기재가 없는 이상, 어느 하나의 실시 예에 기재한 설명은 다른 실시 예에도 적용될 수 있으며, 중복되는 범위에서 구체적인 설명은 생략하기로 한다.
도 1 내지 도 3은 일 실시예에 따른 전자 디바이스를 설명하기 위한 설명하기 위한 도면이다.
도 1을 참조하면, 전자 디바이스(110)는 호스트(120)와 통신한다.
전자 디바이스(110)는, 예를 들어, 스마트폰, 태블릿 등의 전자 장치에 포함되거나 서버, 컴퓨터 등의 단말에 포함될 수 있으나, 이에 제한되지 않는다.
전자 디바이스(110)는 복수의 PU(Processing Unit)들(110-1 내지 110-n)을 포함한다. PU들(110-1 내지 110-n) 각각은 컨트롤러(또는 코어)를 포함한다. 이에 따라, 전자 디바이스(110)는 복수의 컨트롤러들을 포함하는 것으로 달리 표현될 수 있다.
전자 디바이스(110) 내의 컨트롤러들 각각에는 레벨이 부여될 수 있다. 일례로, 전자 디바이스(110) 내에서 컨트롤러들은 최상위 레벨에 해당하는 레벨 1 컨트롤러, 레벨 1 컨트롤러보다 하위 레벨의 레벨 2 컨트롤러들, 레벨 2 컨트롤러들보다 하위 레벨의 레벨 3 컨트롤러들 등으로 분류될 수 있다.
전자 디바이스(110) 내에서 컨트롤러들 각각은 펌웨어 업데이트를 수행한다. 일례로, 상위 레벨 컨트롤러는 동일 레벨 컨트롤러 또는 하위 레벨 컨트롤러에 펌웨어 업데이트를 수행할 수 있다. 이러한 펌웨어 업데이트는 확산 방식의 펌웨어 업데이트이라 지칭될 수 있다. 이에 대해선 도 4 내지 도 7을 통해 설명한다. 다른 일례로, 상위 레벨 컨트롤러는 자신과 연결되어 있는 하위 레벨 컨트롤러들에 펌웨어 업데이트를 수행할 수 있다. 이러한 펌웨어 업데이트는 브로드캐스팅 방식의 펌웨어 업데이트이라 지칭될 수 있다. 이에 대해선 도 8을 통해 설명한다.
전자 디바이스(110) 내에서 컨트롤러들은 확산 방식의 펌웨어 업데이트 또는 브로드캐스팅 방식의 펌웨어 업데이트를 수행함으로써 컨트롤러들 전체에 대한 펌웨어 업데이트 속도가 향상될 수 있다. 또한, 전자 디바이스(110)는 펌웨어 업데이트 시 호스트(120)와의 통신 횟수를 줄여 호스트(120)의 부담을 줄일 수 있다.
PU들(110-1 내지 110-n) 각각은, 예를 들어, NPU(Neural Processing Unit)에 해당할 수 있다. 도 2 및 도 3에 NPU의 일례가 도시된다. 도 2 및 도 3에 도시된 예에서, NPU(200)는 컨트롤러(210), 메모리(220), 및 입력/출력(DMA(Direct Memory Access))(230)을 포함한다. 입력/출력(DMA)(230)는 컨트롤러(210)로부터 명령어를 수신하면 외부 메모리에 access하여 데이터를 입력 또는 출력할 수 있다.
도 2는 메모리(220)에 여유 공간이 있는 경우에 해당하고 도 3은 메모리(220)에 공간이 부족한 경우에 해당한다.
도 2에서, 메모리(220)는 부팅 영역, 펌웨어 영역(동일 레벨), 및 펌웨어 영역(하위 레벨)을 포함할 수 있다. 펌웨어 영역(동일 레벨)에는 컨트롤러(210)와 동일 레벨의 컨트롤러의 펌웨어가 저장될 수 있고, 펌웨어 영역(하위 레벨)에는 컨트롤러(210)의 하위 레벨의 컨트롤러의 펌웨어가 저장될 수 있다. 도 2에서, 컨트롤러(210)는 펌웨어 영역(동일 레벨)에 저장된 펌웨어를 자신과 동일 레벨의 컨트롤러에 펌웨어를 전달 또는 write함으로써 동일 레벨의 컨트롤러에 펌웨어 업데이트를 수행할 수 있다. 또한, 컨트롤러(210)는 펌웨어 영역(하위 레벨)에 저장된 펌웨어를 하위 레벨의 컨트롤러에 전달 또는 write함으로써 동일 레벨의 컨트롤러에 펌웨어 업데이트를 수행할 수 있다.
도 3에서, 메모리(310)에 각 레벨에 해당하는 펌웨어가 저장될 수 있다. 일례로, 메모리(310)에 레벨 0 컨트롤러의 펌웨어, 레벨 1 컨트롤러들의 펌웨어, 레벨 2 컨트롤러들의 펌웨어 등이 저장될 수 있다. 메모리(310)에는 여러 컨트롤러들이 access할 수 있다. 메모리(310)는 전자 디바이스(110) 내부에 위치하나 NPU(200) 외부에 위치하고 있어, 외부 메모리로 지칭될 수 있다. 메모리(310)는 비휘발성 메모리로, 예를 들어, HBM(High Bandwidth Memory) 일 수 있으나 이에 제한되지 않는다. 도 3에서, 컨트롤러(210)는 펌웨어 업데이트가 필요한 컨트롤러의 펌웨어를 메모리(310)에서 load하여 메모리(220)에 저장할 수 있다. 여기서, 펌웨어 업데이트가 필요한 컨트롤러는 컨트롤러(220)와 동일 레벨의 컨트롤러 또는 하위 레벨의 컨트롤러일 수 있다. 컨트롤러(210)는 펌웨어 업데이트가 필요한 컨트롤러에 펌웨어를 전달 또는 write할 수 있다.
도 4 내지 도 7은 일 실시예에 따른 전자 디바이스 내에서 확산 방식의 펌웨어 업데이트를 설명하기 위한 도면이다.
기존의 경우, 멀티 레벨의 컨트롤러들을 포함하는 디바이스에서 최상위 레벨 컨트롤러만 ROM(Read Only Memory)을 가질 수 있다. 이 경우, 하위 레벨 컨트롤러들이 동작하기 위해선 최상위 레벨 컨트롤러가 펌웨어를 개별적으로 하위 레벨 컨트롤러들 각각의 RAM(Read Access Memory)에 write 하거나 호스트가 하위 레벨 컨트롤러들 각각의 RAM에 펌웨어를 write한다. 이 경우, 전체 컨트롤러들의 펌웨어 업데이트가 완료될 때 까지 많은 시간이 소요된다. 후술할 확산 방식의 펌웨어 업데이트는 전체 컨트롤러들의 펌웨어 업데이트가 완료되기 까지 시간을 단축시킬 수 있다. 다시 말해, 확산 방식의 펌웨어 업데이트는 보다 빨리 전체 컨트롤러들의 펌웨어를 업데이트할 수 있다. 아래에서 확산 방식의 펌웨어 업데이트에 대해서 설명한다.
도 4에서, 블록들(410, 510-1 내지 510-3, 610-1 내지 610-5, 및710-1 내지 710-7)이 표현된다. 블록들(410, 510-1 내지 510-3, 610-1 내지 610-5, 및710-1 내지 710-7) 각각은 도 1을 통해 설명한 PU, 도 2 또는 도 3을 통해 설명한 NPU(200)에 해당할 수 있다. 또는, 블록들(410, 510-1 내지 510-3, 610-1 내지 610-5, 및710-1 내지 710-7) 각각은 도 2 또는 도 3을 통해 설명한 컨트롤러(210)에 해당할 수 있다.
설명의 편의 상 블록들(410, 510-1 내지 510-3, 610-1 내지 610-5, 및710-1 내지 710-7) 각각은 컨트롤러(210)에 해당한다고 하자. 이 때, 블록(410)은 레벨 1 컨트롤러, 블록들(510-1 내지 510-3)은 레벨 1 컨트롤러보다 레벨이 낮은 레벨 2 컨트롤러들, 블록들(610-1 내지 610-5)은 레벨 2 컨트롤러들 보다 레벨이 낮은 레벨 3 컨트롤러들, 및 블록들(710-1 내지 710-7)은 레벨 3 컨트롤러들보다 레벨이 낮은 레벨 4 컨트롤러들일 수 있다.
레벨 1 컨트롤러(410)는 자신의 펌웨어를 업데이트할 수 있다. 일례로, 레벨 1 컨트롤러(410)는 호스트(120)에게 자신의 펌웨어(이하, 레벨 1 컨트롤러(410)의 펌웨어를 레벨 1 펌웨어로 표현함)를 요청할 수 있고, 호스트(120)로부터 레벨 1 펌웨어를 수신할 수 있으며, 레벨 1 펌웨어를 메모리(예를 들어, 메모리(310) 또는 레벨 1 컨트롤러(410)의 RAM)에 저장할 수 있다. 구현에 따라, 디바이스(110)에는 ROM이 없을 수 있다. 이 경우, 호스트(120)에서 레벨 1 펌웨어가 업데이트될 수 있다.
레벨 1 컨트롤러(410)는 리셋(reset) 동작을 수행하여 부팅할 수 있다.
레벨 1 컨트롤러(410)는 부팅을 완료한 경우, 레벨 1 컨트롤러(410)의 부팅 완료 또는 레벨 1 컨트롤러(410)의 펌웨어 업데이트 완료를 컨트롤러 상태 테이블(controller status table)에 기록할 수 있다. 이러한 컨트롤러 상태 테이블은 레벨 1 컨트롤러(410) 및 메모리(310) 중 적어도 하나에 저장될 수 있다. 구현에 따라, 컨트롤러 상태 테이블은 호스트(120)에 저장될 수 있다.
레벨 1 컨트롤러(410)는 부팅을 완료한 경우, 호스트(120)에 하위 레벨 컨트롤러들의 펌웨어를 요청할 수 있다. 일례로, 레벨 1 컨트롤러(410)는 레벨 2 컨트롤러들(510-1 내지 510-3)의 펌웨어(이하, 레벨 2 펌웨어로 표현함), 레벨 3 컨트롤러들(610-1 내지 610-5)의 펌웨어(이하, 레벨 3 펌웨어로 표현함), 및 레벨 4 컨트롤러들(710-1 내지 710-7)의 펌웨어(이하, 레벨 4 펌웨어로 표현함)를 호스트(120)에 요청할 수 있다.
호스트(120)는 레벨 2 펌웨어, 레벨 3 펌웨어, 및 레벨 4 펌웨어를 메모리(310)에 저장할 수 있다. 구현에 따라, 레벨 1 컨트롤러(410)가 호스트(120)로부터 레벨 2 펌웨어, 레벨 3 펌웨어, 및 레벨 4 펌웨어를 수신하여 메모리(310)에 저장할 수 있다. 또 다른 구현에 따라, 호스트(120)는 레벨 2 펌웨어를 레벨 2 컨트롤러들(510-1 내지 510-3)로 전송할 수 있고, 레벨 3 펌웨어를 레벨 3 컨트롤러들(610-1 내지 610-5)로 전송할 수 있으며, 레벨 4 펌웨어를 레벨 4 컨트롤러들(710-1 내지 710-7)로 전송할 수 있다.
레벨 1 컨트롤러(410)는 레벨 2 컨트롤러들(510-1 내지 510-3) 중 하나 이상에 펌웨어 업데이트를 수행할 수 있다. 일례로, 도 5에서, 레벨 1 컨트롤러(410)는 상술한 컨트롤러 상태 테이블을 참조하여 레벨 2 컨트롤러들(510-1 내지 510-3) 중 레벨 2 컨트롤러(510-1)의 펌웨어 업데이트가 수행되지 않았음을 확인할 수 있다. 레벨 1 컨트롤러(410)는 메모리(310)에 저장된 레벨 2 펌웨어를 레벨 2 컨트롤러(510-1)에 write(또는 전달)할 수 있다. 레벨 2 컨트롤러(510-1)는 레벨 2 펌웨어가 쓰여진 경우 리셋 동작을 수행하여 부팅할 수 있고, 부팅한 경우 응답을 레벨 1 컨트롤러(410)에 전송할 수 있다. 레벨 1 컨트롤러(410) 또는 레벨 2 컨트롤러(510-1)는 레벨 2 컨트롤러(510-1)의 부팅 완료 또는 레벨 2 컨트롤러(510-1)의 펌웨어 업데이트 완료를 컨트롤러 상태 테이블에 기록할 수 있다.
구현에 따라, 레벨 1 컨트롤러(410)는 레벨 2 컨트롤러들(510-1 내지 510-3) 중 둘 이상에 레벨 2 펌웨어를 동시에 write하거나 레벨 2 컨트롤러들(510-1 내지 510-3) 모두에 레벨 2 펌웨어를 동시에 write할 수 있다.
도 6에서, 레벨 1 컨트롤러(410)는 컨트롤러 상태 테이블을 참조하여 레벨 2 컨트롤러(510-3)의 펌웨어 업데이트가 수행되지 않았음을 확인할 수 있다. 레벨 1 컨트롤러(410)는 레벨 2 컨트롤러(510-3)에 펌웨어 업데이트를 수행할 수 있다. 일례로, 레벨 1 컨트롤러(410)는 메모리(310)에 저장된 레벨 2 펌웨어를 레벨 2 컨트롤러(510-3)에 write할 수 있다. 레벨 2 컨트롤러(510-3)는 레벨 2 펌웨어가 쓰여진 경우 리셋 동작을 수행하여 부팅할 수 있고, 부팅한 경우 응답을 레벨 1 컨트롤러(410)에 전송할 수 있다. 레벨 1 컨트롤러(410) 또는 레벨 2 컨트롤러(510-3)는 레벨 2 컨트롤러(510-3)의 부팅 완료 또는 레벨 2 컨트롤러(510-3)의 펌웨어 업데이트 완료를 컨트롤러 상태 테이블에 기록할 수 있다.
또한, 도 6에서, 레벨 2 컨트롤러(510-1)는 컨트롤러 상태 테이블을 참조하여 자신보다 하위 레벨에 있는 레벨 3 컨트롤러(610-1)의 펌웨어 업데이트가 수행되지 않았음을 확인할 수 있다. 도 6에 도시된 것과 같이, 레벨 2 컨트롤러(510-1)는 펌웨어 업데이트되지 않은 동일 레벨 컨트롤러(510-2)와 펌웨어 업데이트되지 않은 하위 레벨 컨트롤러(610-1)가 있으면, 펌웨어 업데이트되지 않은 동일 레벨 컨트롤러(510-2)보다는 펌웨어 업데이트되지 않은 하위 레벨 컨트롤러(610-1)를 우선적으로 선택할 수 있다. 이에 따라, 전체 컨트롤러들에 대한 펌웨어 업데이트가 빠르게 시작될 수 있다.
레벨 2 컨트롤러(510-1)는 레벨 3 컨트롤러(610-1)에 펌웨어 업데이트를 수행할 수 있다. 일례로, 레벨 2 컨트롤러(510-1)는 메모리(310)에 저장된 레벨 3 펌웨어를 레벨 3 컨트롤러(610-1)에 write할 수 있다. 다른 일례로, 레벨 2 컨트롤러(510-1)는 레벨 1 컨트롤러(410)에 레벨 3 펌웨어를 요청할 수 있고 레벨 1 컨트롤러(410)로부터 레벨 3 펌웨어를 수신하여 레벨 3 컨트롤러(610-1)에 write할 수 있다. 레벨 3 컨트롤러(610-1)는 레벨 3 펌웨어가 쓰여진 경우 리셋 동작을 수행하여 부팅할 수 있고, 부팅한 경우 응답을 레벨 2 컨트롤러(510-1)에 전송할 수 있다. 레벨 2 컨트롤러(510-1) 또는 레벨 3 컨트롤러(610-1)는 레벨 3 컨트롤러(610-1)의 부팅 완료 또는 펌웨어 업데이트 완료를 컨트롤러 상태 테이블에 기록할 수 있다.
도 7에서, 레벨 2 컨트롤러(510-1)는 컨트롤러 상태 테이블을 참조하여 자신과 동일 레벨에 있는 레벨 2 컨트롤러(510-2)의 펌웨어 업데이트가 완료되지 않았음을 확인할 수 있다. 이 경우, 레벨 2 컨트롤러(510-1)는 레벨 2 컨트롤러(510-2)에 펌웨어 업데이트를 수행할 수 있다. 일례로, 레벨 2 컨트롤러(510-1)는 메모리(310)에 저장된 레벨 2 펌웨어를 레벨 2 컨트롤러(510-2)에 write할 수 있다. 레벨 2 컨트롤러(510-2)는 레벨 2 펌웨어가 쓰여진 경우 리셋 동작을 수행하여 부팅할 수 있고, 부팅한 경우 레벨 2 컨트롤러(510-1)에게 응답을 전송할 수 있다. 레벨 2 컨트롤러(510-1) 또는 레벨 2 컨트롤러(510-2)는 레벨 2 컨트롤러(510-2)의 부팅 완료 또는 펌웨어 업데이트 완료를 컨트롤러 상태 테이블에 기록할 수 있다.
또한, 도 7에서, 레벨 2 컨트롤러(510-3)는 레벨 3 컨트롤러(610-5)에 펌웨어 업데이트를 수행할 수 있고, 레벨 3 컨트롤러(610-1)는 레벨 4 컨트롤러(710-1)에 펌웨어 업데이트를 수행할 수 있다. 이러한 방식으로 상위 레벨 컨트롤러가 동일 레벨 컨트롤러 또는 하위 레벨 컨트롤러에 펌웨어를 write함으로써 전자 디바이스(110) 내의 컨트롤러들(410, 510-1 내지 510-3, 610-1 내지 610-5, 및 710-1 내지 710-7)에 대한 펌웨어 업데이트 시간이 단축될 수 있다.
앞서 설명한 예들은 특정 레벨 컨트롤러가 펌웨어 업데이트에 따른 부팅이 된 경우 동일 레벨 컨트롤러 또는 하위 레벨 컨트롤러에 펌웨어 업데이트를 수행하는 것에 해당한다. 이에 제한되지 않고, 특정 레벨 컨트롤러는 펌웨어 업데이트에 따른 부팅 동안에 펌웨어 업데이트되지 않은 동일 레벨 컨트롤러 또는 하위 레벨 컨트롤러에 펌웨어 업데이트가 수행되게 끔 DMA 컨트롤러를 제어할 수 있다. 특정 레벨 컨트롤러는 부팅이 완료된 경우에도 동일 레벨 컨트롤러들 중 펌웨어 업데이트가 되지 않은 컨트롤러 또는 하위 레벨 컨트롤러들 중 펌웨어 업데이트가 되지 않은 컨트롤러에 펌웨어 업데이트를 수행할 수 있다. 이에 따라, 전자 디바이스(110) 내의 컨트롤러들(410, 510-1 내지 510-3, 610-1 내지 610-5, 및 710-1 내지 710-7)의 각각의 펌웨어가 보다 빠르게 업데이트될 수 있다.
일례로, 도 6에서, 레벨 2 컨트롤러(510-1)는 펌웨어 업데이트에 따른 부팅 동안에 레벨 3 컨트롤러(610-1)의 펌웨어 업데이트에 대한 명령어를 DMA 컨트롤러에 전송할 수 있다. 레벨 2 컨트롤러(510-1)의 DMA 컨트롤러는 레벨 2 컨트롤러(510-1)의 명령어를 기초로 메모리(310)에서 레벨 3 펌웨어를 read할 수 있고, 레벨 3 펌웨어를 레벨 3 컨트롤러(610-1)에 write할 수 있다. 이에 따라, 레벨 2 컨트롤러(510-1)의 부팅 동안 레벨 3 컨트롤러(610-1)에 대한 펌웨어 업데이트가 진행될 수 있다. 마찬가지로, 도 7에서, 레벨 2 컨트롤러(510-1)는 부팅 동안에 레벨 2 컨트롤러(510-2)에 대한 펌웨어 업데이트가 진행되도록 할 수 있고, 레벨 2 컨트롤러(510-3)는 부팅 동안에 레벨 3 컨트롤러(610-5)에 대한 펌웨어 업데이트가 진행되도록 할 수 있으며, 레벨 3 컨트롤러(610-1)는 부팅 동안에 레벨 4 컨트롤러(710-1)에 대한 펌웨어 업데이트가 진행되도록 할 수 있다. 이에 따라, 펌웨어 업데이트 속도가 보다 향상될 수 있다.
특정 레벨 컨트롤러에 펌웨어 쓰기(또는 펌웨어 업데이트)가 불가능한 경우, 특정 레벨 컨트롤러에 펌웨어가 write되었으나 부팅 완료에 대한 응답이 없는 경우, 또는 특정 레벨 컨트롤러의 부팅 완료(또는 펌웨어 업데이트 완료)가 되었음을 나타내는 상태가 일정 시간 이내에 컨트롤러 상태 테이블에 기록되지 않은 경우, 특정 레벨 컨트롤러에 이상(abnormality) 또는 문제가 있다고 결정될 수 있다.
도 7에서, 레벨 2 컨트롤러(510-3)는 레벨 3 컨트롤러(610-5)에 레벨 3 펌웨어의 쓰기(또는 업데이트)가 실패한 경우 또는 레벨 3 컨트롤러(610-5)에 레벨 3 펌웨어의 쓰기(또는 업데이트)를 하였으나 레벨 3 컨트롤러(610-5)의 부팅 완료에 대한 응답이 없는 경우, 레벨 3 컨트롤러(610-5)에 문제가 있다고 결정할 수 있다. 이러한 결정을 기초로 레벨 2 컨트롤러(510-3)는 컨트롤러 상태 테이블에 레벨 3 컨트롤러(610-5)에 문제가 있다고 기록할 수 있다. 다른 일례로, 레벨 3 컨트롤러(610-5)의 부팅 완료(또는 펌웨어 업데이트 완료)를 나타내는 상태가 일정 시간 이내에 컨트롤러 상태 테이블에 기록되지 않을 수 있다. 이 경우, 레벨 1 컨트롤러(410) 또는 호스트(120)는 레벨 3 컨트롤러(610-5)에 문제가 있다고 결정할 수 있다.
도 8은 일 실시예에 따른 전자 디바이스 내에서 브로드캐스팅 방식의 펌웨어 업데이트를 설명하기 위한 도면이다.
도 8을 참조하면, 전자 디바이스(110)는 레벨 1 컨트롤러(810), 레벨 2 컨트롤러들(820-1 내지 830-3), 및 레벨 3 컨트롤러들(830-1 내지 830-9)을 포함할 수 있다.
도 8에서, 동일 레벨 컨트롤러들은 상위 레벨 컨트롤러로부터 브로드캐스팅되는 데이터를 이용하여 펌웨어를 write할 수 있다. 레벨 1 컨트롤러(810)는 호스트(120)로부터 레벨 2 컨트롤러들(820-1 내지 830-3)의 펌웨어(이하, 레벨 2 펌웨어) 및 레벨 3 컨트롤러들(830-1 내지 830-9)의 펌웨어(이하, 레벨 3 펌웨어)를 수신할 수 있고, 이들을 메모리(310)에 저장할 수 있다. 구현에 따라, 호스트(120)가 레벨 2 펌웨어 및 레벨 3 펌웨어를 메모리(310)에 저장할 수 있다.
레벨 1 컨트롤러(810)는 레벨 2 컨트롤러들(820-1 내지 830-3) 각각에 레벨 2 펌웨어 쓰기 또는 업데이트를 수행할 수 있다. 그리고, 레벨 2 컨트롤러들(820-1 내지 830-3) 각각은 자신과 연결된 레벨 3 컨트롤러들에 레벨 3 펌웨어 쓰기 또는 업데이트를 수행할 수 있다. 다시 말해, 레벨 2 컨트롤러(820-1)는 레벨 3 컨트롤러들(830-1 내지 830-3) 각각에 레벨 3 펌웨어를 쓰거나 업데이트할 수 있고, 레벨 2 컨트롤러(820-2)는 레벨 3 컨트롤러들(830-4 내지 830-6) 각각에 레벨 3 펌웨어를 쓰거나 업데이트할 수 있으며, 레벨 2 컨트롤러(820-3)는 레벨 3 컨트롤러들(830-7 내지 830-9) 각각에 레벨 3 펌웨어를 쓰거나 업데이트할 수 있다.
상술한 확산 방식의 펌웨어 업데이트 또는 브로드캐스팅 방식의 펌웨어 업데이트는 컨트롤러들이 다양한 토폴로지(예를 들어, Tree, Tree-Ring, Mesh, Torus, Ring, Star, 또는 Ring-Star 등) 또는 구조를 형성하고 있을 때에 적용될 수 있다.
도 9 내지 도 10은 일 실시예에 따른 전자 디바이스 내에서 상위 레벨 컨트롤러가 하위 레벨 컨트롤러의 메모리 주소를 할당하는 것을 설명하기 위한 도면이다.
동일 레벨 컨트롤러들은 메모리 영역(memory area)을 공유해서 사용할 수 있다. 이 경우, 메모리 맵핑을 위한 바이너리(binary)는 명령어를 수행하기 위한 바이너리와 구분될 수 있다. 다시 말해, 메모리 영역을 공유하는 동일 레벨 컨트롤러들 각각의 메모리 주소와 맵핑되는 부분은 변동 부분일 수 있고, 동일 레벨 컨트롤러들 사이의 동일한 명령어에 해당하는 부분은 고정 부분일 수 있다.
도 9를 참조하면, 레벨 1 컨트롤러(910)는 상술한 확산 방식의 펌웨어 업데이트 또는 브로드캐스팅 방식의 펌웨어 업데이트를 레벨 2 컨트롤러들(920 내지 922)에 수행할 수 있다.
레벨 2 컨트롤러들(920 내지 922)은 메모리 영역을 공유해서 사용할 수 있다. 이 경우, 레벨 2 컨트롤러들(920 내지 922)에서 고정 부분(920-1, 921-1, 922-1)와 변동 부분(920-2, 921-2, 922-2)이 구분될 수 있다.
레벨 1 컨트롤러(910)는 레벨 2 컨트롤러(920)의 변동 부분(920-2) 메모리 영역을 지정할 수 있다. 일례로, 레벨 1 컨트롤러(910)는 레벨 2 컨트롤러(920)의 변동 부분(920-2)과 메모리 주소 "0x0000~0x0FFF"를 맵핑할 수 있다. 달리 표현하면, 레벨 1 컨트롤러(910)는 레벨 2 컨트롤러(920)에 메모리 주소 "0x0000~0x0FFF"를 할당할 수 있다. 레벨 1 컨트롤러(910)는 레벨 2 컨트롤러(921)의 변동 부분(921-2) 메모리 영역을 지정할 수 있고, 레벨 2 컨트롤러(922)의 변동 부분(922-2) 메모리 영역을 지정할 수 있다. 일례로, 레벨 1 컨트롤러(910)는 레벨 2 컨트롤러(921)에 메모리 주소 "0x1000~0x1FFF"를 할당할 수 있고, 레벨 2 컨트롤러(922)에 메모리 주소 "0x2000~0x2FFF"를 할당할 수 있다.
도 10에 도시된 예에서, 레벨 3 컨트롤러들(1010 내지 1014)은 메모리 영역을 공유해서 사용할 수 있다. 도 9를 통해 설명한 예와 유사하게, 레벨 2 컨트롤러(920)는 레벨 3 컨트롤러들(1010 내지 1014) 각각에 메모리 주소를 할당할 수 있다.
도 11은 일 실시예에 따른 전자 디바이스의 동작 방법을 설명하기 위한 순서도이다.
도 11을 통해 설명할 제1 레벨 컨트롤러는 최상위 레벨 컨트롤러로, 상술한 레벨 1 컨트롤러에 해당할 수 있다. 또한, 도 11을 통해 설명할 제2 레벨 컨트롤러들은 두번째로 레벨이 높은 컨트롤러들로, 상술한 레벨 2 컨트롤러들에 해당할 수 있다. 또한, 도 11을 통해 설명할 제3 레벨 컨트롤러들은 세번째로 레벨이 높은 컨트롤러들로, 상술한 레벨 3 컨트롤러들에 해당할 수 있다.
도 11을 참조하면, 전자 디바이스(110) 내의 제1 레벨 컨트롤러는 제1 레벨 펌웨어를 업데이트한다(1110). 여기서, 제1 레벨 펌웨어는 제1 레벨 컨트롤러의 펌웨어를 나타낸다. 단계(1110)에서, 제1 레벨 컨트롤러는 제1 레벨 펌웨어의 업데이트 버전을 호스트(210)에 요청할 수 있고 호스트(210)로부터 업데이트 버전을 수신할 수 있다.
제1 레벨 컨트롤러는 제1 레벨 펌웨어를 업데이트하여 부팅한 경우, 제2 레벨 펌웨어와 제3 레벨 펌웨어를 호스트(120)에 요청할 수 있다. 여기서, 제2 레벨 펌웨어는 제2 레벨 컨트롤러들의 펌웨어를 나타내고 제3 레벨 펌웨어는 제3 레벨 컨트롤러들의 펌웨어를 나타낸다. 제1 레벨 컨트롤러는 호스트(120)로부터 제2 레벨 펌웨어 및 제3 레벨 펌웨어를 수신하여 메모리(310)에 저장할 수 있다.
제1 레벨 컨트롤러는 제1 레벨 컨트롤러보다 레벨이 낮은 제2 레벨 컨트롤러들 중 하나에 제2 레벨 펌웨어를 write한다(1120). 단계(1120)에서, 제1 레벨 컨트롤러는 메모리(310)에 저장된 제2 레벨 펌웨어를 제2 레벨 컨트롤러들 중 하나에 write할 수 있다.
제2 레벨 펌웨어가 쓰여진 제2 레벨 컨트롤러는 리셋 동작을 수행하여 부팅한다(1130).
제1 레벨 컨트롤러 또는 부팅된 제2 레벨 컨트롤러는 제2 레벨 컨트롤러들 중 펌웨어 업데이트가 되지 않은 타겟 제2 레벨 컨트롤러가 있는지 여부를 확인한다(1140). 단계(1140)에서, 제1 레벨 컨트롤러 또는 부팅된 제2 레벨 컨트롤러는 상술한 컨트롤러 상태 테이블을 참조하여 제2 레벨 컨트롤러들 중 타겟 제2 레벨 컨트롤러가 있는지 여부를 확인할 수 있다.
제1 레벨 컨트롤러 또는 부팅된 제2 레벨 컨트롤러는 타겟 제2 레벨 컨트롤러가 있는 경우, 제2 레벨 펌웨어를 타겟 제2 레벨 컨트롤러에 write한다(1150). 다시 말해, 타겟 제2 레벨 컨트롤러의 펌웨어 업데이트는 동일 레벨 컨트롤러 또는 상위 레벨 컨트롤러에 의해 수행될 수 있다.
부팅된 제2 레벨 컨트롤러는 상술한 컨트롤러 상태 테이블을 참조하여 제2 레벨 컨트롤러들보다 레벨이 낮은 제3 레벨 컨트롤러들 중 펌웨어 업데이트가 되지 않은 타겟 제3 레벨 컨트롤러가 있는지 여부를 확인할 수 있다. 부팅된 제2 레벨 컨트롤러는 타겟 제3 레벨 컨트롤러가 있는 경우, 메모리(310)에 저장된 제3 레벨 펌웨어를 타겟 제3 레벨 컨트롤러에 write할 수 있다. 구현에 따라, 부팅된 제2 레벨 컨트롤러는 제3 레벨 펌웨어를 제1 레벨 컨트롤러에 요청할 수 있고, 제1 레벨 컨트롤러로부터 제3 레벨 펌웨어를 수신하여 타겟 제3 레벨 컨트롤러에 write할 수 있다.
제1 레벨 컨트롤러 또는 부팅된 제2 레벨 컨트롤러는 타겟 제2 레벨 컨트롤러에 제2 레벨 펌웨어를 쓰는 것을 실패한 경우 또는 타겟 제2 레벨 컨트롤러에 제2 레벨 펌웨어를 썼으나 타겟 제2 레벨 컨트롤러의 부팅 완료에 대한 응답이 없는 경우, 타겟 제2 레벨 컨트롤러에 이상이 있다고 결정할 수 있다. 또는, 제1 레벨 컨트롤러는 타겟 제2 레벨 컨트롤러의 부팅 완료(또는 펌웨어 업데이트 완료)됨을 나타내는 상태가 일정 시간 이내에 컨트롤러 상태 테이블에 기록되지 않은 경우, 타겟 제2 레벨 컨트롤러에 이상이 있다고 결정할 수 있다.
도 1 내지 도 10을 통해 기술된 사항들은 도 11을 통해 기술된 사항들에 적용될 수 있으므로, 상세한 설명을 생략한다.
도 12 내지 도 14는 일 실시예에 따른 전자 디바이스들의 펌웨어 업데이트를 설명하기 위한 도면이다.
도 12를 참조하면, 네트워크 시스템은 복수의 전자 디바이스들(1220-1 내지 1220-n)과 호스트(120)를 포함한다.
복수의 전자 디바이스들(1220-1 내지 1220-n) 각각은 호스트(120)와 통신한다. 복수의 전자 디바이스들(1220-1 내지 1220-n) 각각은, 예를 들어, 스마트폰, 노트북, PC, 태블릿, 드론, 또는 IoT 디바이스 등 전자 장치에 포함될 수 있으나 이에 제한되지 않는다. 실시예에 따라, 복수의 전자 디바이스들(1220-1 내지 1220-n) 각각은 상술한 전자 디바이스(110)에 해당할 수 있으나 이에 제한되지 않는다.
호스트(120)에는 디바이스 상태 테이블(1210)이 저장될 수 있다. 디바이스 상태 테이블(1210)에는 전자 디바이스들(1220-1 내지 1220-n) 각각의 펌웨어 업데이트 완료 여부가 기록될 수 있다.
도 12에서, 전자 디바이스(1220-1)는 호스트(120)에게 펌웨어를 요청할 수 있고, 호스트(120)로부터 펌웨어를 수신하여 펌웨어 업데이트를 수행할 수 있다. 전자 디바이스(1220-1)는 펌웨어 업데이트가 완료되면 호스트(120)에게 응답을 전송할 수 있다. 전자 디바이스(1220-1) 또는 호스트(120)는 전자 디바이스(1220-1)의 펌웨어 업데이트가 완료되면, 전자 디바이스(1220-1)의 펌웨어 업데이트가 완료되었음을 나타내는 상태를 디바이스 상태 테이블(1210)에 기록할 수 있다.
도 13에서, 전자 디바이스(1220-1)는 전자 디바이스(1220-2)에 펌웨어 업데이트를 수행할 수 있다. 위에서 설명한 특정 레벨 컨트롤러가 동일 레벨 컨트롤러 또는 하위 레벨 컨트롤러에 펌웨어 업데이트를 수행하는 것과 같이, 전자 디바이스(1220-1)는 전자 디바이스(1220-2)에 펌웨어 업데이트를 수행할 수 있다. 다시 말해, 펌웨어 업데이트가 완료된 전자 디바이스(1220-1)는 펌웨어 업데이트가 되지 않은 전자 디바이스(1220-2)에 펌웨어를 write할 수 있다. 전자 디바이스(1220-2)는 펌웨어 업데이트가 완료되면 전자 디바이스(1220-1)에 응답을 전송할 수 있다. 전자 디바이스(1220-1) 또는 전자 디바이스(1220-2)는 전자 디바이스(1220-2)의 펌웨어 업데이트가 완료되었음을 나타내는 상태를 디바이스 상태 테이블(1210)에 기록할 수 있다.
또한, 도 13에서, 전자 디바이스(1220-3)는 호스트(120)로부터 펌웨어를 수신하여 펌웨어 업데이트를 수행할 수 있다. 전자 디바이스(1220-3)는 펌웨어 업데이트가 완료되면 호스트(120)에 응답을 전송할 수 있다. 전자 디바이스(1220-3) 또는 호스트(120)는 전자 디바이스(1220-3)의 펌웨어 업데이트가 완료되면 전자 디바이스(1220-3)의 펌웨어 업데이트가 완료되었음을 나타내는 상태를 디바이스 상태 테이블(1210)에 기록할 수 있다
도 14에서, 전자 디바이스(1220-1)는 전자 디바이스(1220-4)에 펌웨어 업데이트를 수행할 수 있고, 전자 디바이스(1220-2)는 전자 디바이스(1220-5)에 펌웨어 업데이트를 수행할 수 있으며, 전자 디바이스(1220-3)는 전자 디바이스(1220-6)에 펌웨어 업데이트를 수행할 수 있다. 전자 디바이스(1220-7)는 호스트(120)로부터 펌웨어를 수신하여 펌웨어 업데이트를 수행할 수 있다.
도 12 내지 도 14를 통해 설명한 것과 같이, 네트워크 상의 일부 전자 디바이스는 호스트(120)로부터 펌웨어를 수신하여 펌웨어 업데이트를 수행하고, 펌웨어 업데이트가 완료된 전자 디바이스는 펌웨어 업데이트가 되지 않은 전자 디바이스에 펌웨어 업데이트를 수행할 수 있다. 이에 따라, 네트워크 내의 전자 디바이스들(1220-1 내지 1220-n) 각각의 펌웨어 업데이트가 빠른 속도로 진행될 수 있다.
전자 디바이스들(1220-1 내지 1220-n)의 펌웨어 업데이트는 상술한 확산 방식의 펌웨어 업데이트 또는 브로드캐스팅 방식의 펌웨어 업데이트와 유사하게 수행될 수 있다. 또한, 전자 디바이스들(1220-1 내지 1220-n)은 네트워크 토폴로지를 형성할 수 있다. 네트워크 토폴로지는 트리 구조, 트리-링 구조, 메시 구조, 토러스(torus) 구조, 링 구조, 스타 구조, 또는 링-스타 구조를 포함할 수 있다.
도 1 내지 도 11을 통해 기술된 사항들은 도 12 내지 도 14를 통해 기술된 사항들에 적용될 수 있으므로, 상세한 설명을 생략한다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 청구범위와 균등한 것들도 후술하는 청구범위의 범위에 속한다.
Claims (20)
- 복수의 컨트롤러들을 포함하는 전자 디바이스의 동작 방법에 있어서,
제1 레벨 컨트롤러는 제1 레벨 펌웨어를 업데이트하는 단계;
상기 제1 레벨 컨트롤러는 상기 제1 레벨 컨트롤러보다 레벨이 낮은 제2 레벨 컨트롤러들 중 하나에 제2 레벨 펌웨어를 쓰는(write) 단계;
상기 제2 레벨 펌웨어가 쓰여진 제2 레벨 컨트롤러는 리셋 동작을 수행하여 부팅하는 단계;
상기 제1 레벨 컨트롤러 또는 상기 부팅된 제2 레벨 컨트롤러는 펌웨어 업데이트가 되지 않은 타겟 제2 레벨 컨트롤러가 있는지 여부를 확인하는 단계; 및
상기 제1 레벨 컨트롤러 또는 상기 부팅된 제2 레벨 컨트롤러는 상기 타겟 제2 레벨 컨트롤러가 있는 경우, 상기 제2 레벨 펌웨어를 상기 타겟 제2 레벨 컨트롤러에 쓰는 단계
를 포함하는,
전자 디바이스의 동작 방법.
- 제1항에 있어서,
상기 제1 레벨 컨트롤러가 상기 제2 레벨 컨트롤러들 중 하나에 상기 제2 레벨 펌웨어를 쓰는 단계는,
상기 제1 레벨 컨트롤러가 외부 메모리에 저장된 상기 제2 레벨 펌웨어를 상기 제2 레벨 컨트롤러들 중 하나에 쓰는 단계
를 포함하는,
전자 디바이스의 동작 방법.
- 제1항에 있어서,
상기 부팅된 제2 레벨 컨트롤러는 상기 제2 레벨 컨트롤러들보다 레벨이 낮은 제3 레벨 컨트롤러들 중 펌웨어 업데이트가 되지 않은 타겟 제3 레벨 컨트롤러가 있는지 여부를 확인하는 단계;
상기 부팅된 제2 레벨 컨트롤러는 상기 타겟 제3 레벨 컨트롤러가 있는 경우, 제3 레벨 펌웨어를 상기 제1 레벨 컨트롤러에 요청하는 단계; 및
상기 부팅된 제2 레벨 컨트롤러는 상기 제1 레벨 컨트롤러로부터 상기 제3 레벨 펌웨어를 수신하여 상기 타겟 제3 레벨 컨트롤러에 쓰는 단계
를 더 포함하는,
전자 디바이스의 동작 방법.
- 제1항에 있어서,
상기 부팅된 제2 레벨 컨트롤러는 상기 제2 레벨 컨트롤러들보다 레벨이 낮은 제3 레벨 컨트롤러들 중 펌웨어 업데이트가 되지 않은 타겟 제3 레벨 컨트롤러가 있는지 여부를 확인하는 단계; 및
상기 부팅된 제2 레벨 컨트롤러는 상기 타겟 제3 레벨 컨트롤러가 있는 경우, 외부 메모리에 저장된 제3 레벨 펌웨어를 상기 타겟 제3 레벨 컨트롤러에 쓰는 단계
를 더 포함하는,
전자 디바이스의 동작 방법.
- 제1항에 있어서,
상기 타겟 제2 레벨 컨트롤러는 상기 제2 레벨 펌웨어가 쓰여진 후 부팅하는 동안에 펌웨어 업데이트되지 않은 동일 레벨 또는 하위 레벨 컨트롤러에 펌웨어 업데이트가 수행되도록 DMA(Direct Memory Access) 컨트롤러를 제어하는 단계
를 더 포함하는,
전자 디바이스의 동작 방법.
- 제1항에 있어서,
상기 제1 레벨 컨트롤러는 상기 제1 레벨 펌웨어를 업데이트하여 부팅한 경우, 상기 제2 레벨 펌웨어를 호스트에 요청하는 단계; 및
상기 제1 레벨 컨트롤러는 상기 호스트로부터 상기 제2 레벨 펌웨어를 수신하여 메모리에 저장하는 단계
를 더 포함하는
전자 디바이스의 동작 방법.
- 제1항에 있어서,
상기 제1 레벨 컨트롤러 또는 상기 부팅된 제2 레벨 컨트롤러는 상기 타겟 제2 레벨 컨트롤러에 상기 제2 레벨 펌웨어를 쓰는 것을 실패한 경우 또는 상기 타겟 제2 레벨 컨트롤러에 상기 제2 레벨 펌웨어를 썼으나 상기 타겟 제2 레벨 컨트롤러의 부팅 완료에 대한 응답이 없는 경우, 상기 타겟 제2 레벨 컨트롤러에 이상(abnormality)이 있다고 결정하는 단계
를 더 포함하는,
전자 디바이스의 동작 방법.
- 제1항에 있어서,
상기 제1 레벨 컨트롤러는 상기 타겟 제2 레벨 컨트롤러의 부팅 완료됨을 나타내는 상태가 일정 시간 이내에 컨트롤러 상태 테이블에 기록되지 않은 경우, 상기 타겟 제2 레벨 컨트롤러에 이상이 있다고 결정하는 단계
를 더 포함하는,
전자 디바이스의 동작 방법.
- 제1항에 있어서,
상기 제1 레벨 컨트롤러가 상기 제2 레벨 컨트롤러들 중 하나에 상기 제2 레벨 펌웨어를 쓰는 단계는,
상기 제1 레벨 컨트롤러가 브로드캐스팅 방식에 따라 상기 제2 레벨 펌웨어를 상기 제2 레벨 컨트롤러들에 쓰는 단계
를 포함하고,
상기 부팅된 제2 레벨 컨트롤러는 상기 브로드캐스팅 방식에 따라 상기 부팅된 제2 레벨 컨트롤러와 연결된 제3 레벨 컨트롤러들에 제3 레벨 펌웨어를 쓰는 단계
를 더 포함하는,
전자 디바이스의 동작 방법.
- 제1항에 있어서,
상기 제1 레벨 컨트롤러는 상기 제2 레벨 컨트롤러들 각각의 메모리 주소를 할당하는 단계
를 더 포함하는,
전자 디바이스의 동작 방법.
- 전자 디바이스에 있어서,
복수의 컨트롤러들
을 포함하고,
상기 컨트롤러들 중 제1 레벨 컨트롤러는 제1 레벨 펌웨어를 업데이트하고,
상기 제1 레벨 컨트롤러는 상기 제1 레벨 컨트롤러보다 레벨이 낮은 제2 레벨 컨트롤러들 중 하나에 제2 레벨 펌웨어를 쓰며(write),
상기 제2 레벨 펌웨어가 쓰여진 제2 레벨 컨트롤러는 리셋 동작을 수행하여 부팅하고,
상기 제1 레벨 컨트롤러 또는 상기 부팅된 제2 레벨 컨트롤러는 펌웨어 업데이트가 되지 않은 타겟 제2 레벨 컨트롤러가 있는지 여부를 확인하고,
상기 제1 레벨 컨트롤러 또는 상기 부팅된 제2 레벨 컨트롤러는 상기 타겟 제2 레벨 컨트롤러가 있는 경우, 상기 제2 레벨 펌웨어를 상기 타겟 제2 레벨 컨트롤러에 쓰는,
전자 디바이스.
- 제11항에 있어서,
상기 부팅된 제2 레벨 컨트롤러는 상기 제2 레벨 컨트롤러들보다 레벨이 낮은 제3 레벨 컨트롤러들 중 펌웨어 업데이트가 되지 않은 타겟 제3 레벨 컨트롤러가 있는지 여부를 확인하고,
상기 부팅된 제2 레벨 컨트롤러는 상기 타겟 제3 레벨 컨트롤러가 있는 경우, 제3 레벨 펌웨어를 상기 제1 레벨 컨트롤러에 요청하며,
상기 부팅된 제2 레벨 컨트롤러는 상기 제1 레벨 컨트롤러로부터 상기 제3 레벨 펌웨어를 수신하여 상기 타겟 제3 레벨 컨트롤러에 쓰는,
전자 디바이스.
- 제11항에 있어서,
상기 부팅된 제2 레벨 컨트롤러는 상기 제2 레벨 컨트롤러들보다 레벨이 낮은 제3 레벨 컨트롤러들 중 펌웨어 업데이트가 되지 않은 타겟 제3 레벨 컨트롤러가 있는지 여부를 확인하고,
상기 부팅된 제2 레벨 컨트롤러는 상기 타겟 제3 레벨 컨트롤러가 있는 경우, 메모리에 저장된 제3 레벨 펌웨어를 상기 타겟 제3 레벨 컨트롤러에 쓰는,
전자 디바이스.
- 제11항에 있어서,
상기 타겟 제2 레벨 컨트롤러는 상기 제2 레벨 펌웨어가 쓰여진 후 부팅하는 동안에 펌웨어 업데이트되지 않은 동일 레벨 또는 하위 레벨 컨트롤러에 펌웨어 업데이트가 수행되도록 DMA 컨트롤러를 제어하는,
전자 디바이스.
- 제11항에 있어서,
상기 제1 레벨 컨트롤러 또는 상기 부팅된 제2 레벨 컨트롤러는 상기 타겟 제2 레벨 컨트롤러에 상기 제2 레벨 펌웨어를 쓰는 것을 실패한 경우 또는 상기 타겟 제2 레벨 컨트롤러에 상기 제2 레벨 펌웨어를 썼으나 상기 타겟 제2 레벨 컨트롤러의 부팅 완료에 대한 응답이 없는 경우, 상기 타겟 제2 레벨 컨트롤러에 이상이 있다고 결정하거나, 상기 제1 레벨 컨트롤러는 상기 타겟 제2 레벨 컨트롤러의 부팅 완료됨을 나타내는 상태가 일정 시간 이내에 컨트롤러 상태 테이블에 기록되지 않은 경우, 상기 타겟 제2 레벨 컨트롤러에 이상이 있다고 결정하는,
전자 디바이스.
- 제11항에 있어서,
상기 제1 레벨 컨트롤러가 브로드캐스팅 방식에 따라 상기 제2 레벨 펌웨어를 상기 제2 레벨 컨트롤러들에 쓰고,
상기 부팅된 제2 레벨 컨트롤러는 상기 브로드캐스팅 방식에 따라 상기 부팅된 제2 레벨 컨트롤러와 연결된 제3 레벨 컨트롤러들에 제3 레벨 펌웨어를 쓰며,
상기 제3 레벨 컨트롤러들은 상기 부팅된 제2 레벨 컨트롤러보다 레벨이 낮고 상기 제3 레벨 펌웨어는 상기 제3 레벨 컨트롤러들의 펌웨어를 나타내는,
전자 디바이스.
- 복수의 전자 디바이스들; 및
상기 전자 디바이스들과 통신하는 호스트
를 포함하고,
상기 전자 디바이스들 중 제1 전자 디바이스는 상기 호스트로부터 펌웨어를 수신하여 펌웨어 업데이트를 수행하고,
상기 제1 전자 디바이스와 호스트 각각은 펌웨어 업데이트되지 않은 다른 전자 디바이스들 각각에 상기 펌웨어를 써서(write) 펌웨어 업데이트를 수행하며,
상기 제1 전자 디바이스, 상기 펌웨어 업데이트된 각 전자 디바이스, 및 상기 호스트 각각은 펌웨어 업데이트되지 않은 다른 전자 디바이스들 각각에 상기 펌웨어를 써서 펌웨어 업데이트를 수행하는,
네트워크 시스템.
- 제17항에 있어서,
상기 호스트는 상기 전자 디바이스들 각각의 펌웨어 업데이트 완료 여부가 기록되는 디바이스 상태 테이블을 저장하는,
네트워크 시스템.
- 제17항에 있어서,
상기 전자 디바이스들은 네트워크 토폴로지를 형성하는,
네트워크 시스템.
- 제19항에 있어서,
상기 네트워크 토폴로지는 트리 구조, 트리-링 구조, 메시 구조, 토러스(torus) 구조, 링 구조, 스타 구조, 또는 링-스타 구조를 포함하는,
네트워크 시스템.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200115562A KR20220033311A (ko) | 2020-09-09 | 2020-09-09 | 전자 디바이스 및 이의 동작 방법과 네트워크 시스템 |
US17/316,893 US11886887B2 (en) | 2020-09-09 | 2021-05-11 | Management method and device for updating underlying multi-level firmware programs using verifying controllers |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200115562A KR20220033311A (ko) | 2020-09-09 | 2020-09-09 | 전자 디바이스 및 이의 동작 방법과 네트워크 시스템 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220033311A true KR20220033311A (ko) | 2022-03-16 |
Family
ID=80469248
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200115562A KR20220033311A (ko) | 2020-09-09 | 2020-09-09 | 전자 디바이스 및 이의 동작 방법과 네트워크 시스템 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11886887B2 (ko) |
KR (1) | KR20220033311A (ko) |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6513114B1 (en) * | 1999-12-08 | 2003-01-28 | Dell Products L.P. | System and methods for providing selectable initialization sequences |
US7644406B2 (en) | 2003-01-21 | 2010-01-05 | Hewlett-Packard Development Company, L.P. | Update system capable of updating software across multiple FLASH chips |
WO2004072773A2 (en) | 2003-02-11 | 2004-08-26 | Bitfone Corporation | Electronic device supporting multiple update agents |
US7219343B2 (en) | 2003-04-10 | 2007-05-15 | International Business Machines Corporation | Firmware update mechanism in a multi-node data processing system |
KR100862971B1 (ko) | 2007-07-26 | 2008-10-13 | 강릉대학교산학협력단 | 무선 센서 네트워크의 노드들에 대한 펌웨어 업데이트 방법 |
KR20110104383A (ko) | 2010-03-16 | 2011-09-22 | 삼성전자주식회사 | 펌웨어 업데이트 서비스 장치 및 방법 |
KR101466560B1 (ko) | 2011-06-07 | 2014-11-28 | 엘에스아이 코포레이션 | 호스트가 볼 때 디바이스 펌웨어 업데이트 효과들의 관리 |
US8898654B2 (en) | 2012-08-29 | 2014-11-25 | Microsoft Corporation | Secure firmware updates |
KR101992680B1 (ko) | 2013-02-05 | 2019-06-25 | 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. | 화상형성장치, 추적장치, 관리장치 및 화상형성장치의 펌웨어 업데이트 방법 |
WO2016032817A1 (en) * | 2014-08-26 | 2016-03-03 | Marvell World Trade Ltd. | Storage device controller architecture |
KR102261815B1 (ko) | 2014-10-30 | 2021-06-07 | 삼성전자주식회사 | 펌웨어 업데이트 시간을 줄일 수 있는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템 |
US10127032B2 (en) | 2015-11-05 | 2018-11-13 | Quanta Computer Inc. | System and method for unified firmware management |
KR20220045764A (ko) * | 2020-10-06 | 2022-04-13 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
-
2020
- 2020-09-09 KR KR1020200115562A patent/KR20220033311A/ko active Search and Examination
-
2021
- 2021-05-11 US US17/316,893 patent/US11886887B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20220075629A1 (en) | 2022-03-10 |
US11886887B2 (en) | 2024-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10459663B2 (en) | Thin provisioning of raid storage | |
EP3547112B1 (en) | Computing device and computer-implemented method for configuration management via logical architecture awareness | |
US10817354B2 (en) | Upgrading a kernel or kernel module with a configured persistent memory unused by the kernel | |
US20170329524A1 (en) | Preallocating storage space for an application operation in a space efficient volume | |
US9003414B2 (en) | Storage management computer and method for avoiding conflict by adjusting the task starting time and switching the order of task execution | |
US9081507B2 (en) | Shared storage access management systems and methods | |
US9798494B2 (en) | Preallocating storage space for an application operation in a space efficient volume | |
US9098640B2 (en) | Controller, electronic equipment unit, and USB device control method | |
US10324775B2 (en) | Method for bidirectional calling between open system and mainframe system performed by computing device | |
US20160239207A1 (en) | Storage control apparatus and storage control method | |
EP2637091A1 (en) | Management interface for multiple storage subsystems virtualization | |
JP2023036774A (ja) | 共有メモリのアクセス制御方法、共有メモリのアクセス制御装置、電子機器および自動運転車両 | |
US20170262220A1 (en) | Storage control device, method of controlling data migration and non-transitory computer-readable storage medium | |
US9830078B2 (en) | System and method for pre-operating system memory map management to minimize operating system failures | |
US10120578B2 (en) | Storage optimization for write-in-free-space workloads | |
KR20220033311A (ko) | 전자 디바이스 및 이의 동작 방법과 네트워크 시스템 | |
US20090213755A1 (en) | Method for establishing a routing map in a computer system including multiple processing nodes | |
US9588918B2 (en) | Storage control devices and method therefor to invoke address thereof | |
US20220318015A1 (en) | Enforcing data placement requirements via address bit swapping | |
CN112860595B (zh) | Pci设备或pcie设备、数据存取方法及相关组件 | |
US10909044B2 (en) | Access control device, access control method, and recording medium containing access control program | |
US20190138236A1 (en) | System and Method to Reserve Persistent Memory Space in an NVDIMM for NVDIMM Namespace Support | |
US10990545B1 (en) | System and method for handling in-band interrupts with multiple I3C masters | |
KR101041710B1 (ko) | 비휘발성 메모리의 섹터 관리 방법 | |
CN114127699A (zh) | 在存储器拷贝和存储器映射之间动态切换以优化i/o性能 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination |