KR20180019806A - 종단 장치로부터 제공되는 부트 업 명령어에 기초하여 부팅 동작을 수행하도록 구성되는 전자 장치 - Google Patents

종단 장치로부터 제공되는 부트 업 명령어에 기초하여 부팅 동작을 수행하도록 구성되는 전자 장치 Download PDF

Info

Publication number
KR20180019806A
KR20180019806A KR1020160103793A KR20160103793A KR20180019806A KR 20180019806 A KR20180019806 A KR 20180019806A KR 1020160103793 A KR1020160103793 A KR 1020160103793A KR 20160103793 A KR20160103793 A KR 20160103793A KR 20180019806 A KR20180019806 A KR 20180019806A
Authority
KR
South Korea
Prior art keywords
memory
boot
self
command
configuration
Prior art date
Application number
KR1020160103793A
Other languages
English (en)
Other versions
KR102669219B1 (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 삼성전자주식회사
Priority to KR1020160103793A priority Critical patent/KR102669219B1/ko
Priority claimed from KR1020160103793A external-priority patent/KR102669219B1/ko
Priority to US15/671,866 priority patent/US10635450B2/en
Priority to CN201710701593.8A priority patent/CN107766097B/zh
Publication of KR20180019806A publication Critical patent/KR20180019806A/ko
Application granted granted Critical
Publication of KR102669219B1 publication Critical patent/KR102669219B1/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/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • 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/4411Configuring for operating with peripheral devices; Loading of device drivers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 제 1 메모리, 제 2 메모리, 및 컨트롤러를 포함하는 전자 장치를 제공한다. 제 1 메모리는 부트 업 명령어의 데이터를 저장하고, 제 2 메모리는 외부 장치와의 통신이 수행되는 환경에 관한 설정 정보를 저장한다. 컨트롤러는 제 2 메모리가 외부 장치로부터의 커맨드에 기초하여 설정 정보를 저장하기 전에, 자가 설정 값을 갖는 설정 정보를 제 2 메모리에 저장한다. 컨트롤러는 자가 설정 값에 의해 정의되는 환경 하에서, 외부 장치로부터 수신되는 메모리 읽기 요청에 응답하여 부트 업 명령어의 데이터를 외부 장치로 제공한다. 본 발명에 따르면, 부팅 동작이 빠르게 수행될 수 있고, 시스템 구현/관리가 쉽고 저렴해질 수 있다.

Description

종단 장치로부터 제공되는 부트 업 명령어에 기초하여 부팅 동작을 수행하도록 구성되는 전자 장치 {ELECTRONIC DEVICE CONFIGURED TO PERFORM BOOTING OPERATION BASED ON BOOT-UP INSTRUCTION PROVIDED FROM ENDPOINT DEVICE}
본 발명은 전자 장치에 관한 것으로, 좀 더 구체적으로는 부팅 동작을 수행하기 위해 서로 통신하는 장치들의 동작들에 관한 것이다.
근래 다양한 유형의 전자 장치들이 이용되고 있다. 전자 장치는 그것에 포함되는 하나 이상의 전기/전자 회로들의 동작에 따라 사용자에게 서비스를 제공한다. 전자 장치는 단독으로 동작하거나, 다른 전자 장치와 통신하면서 동작할 수 있다.
전자 장치는 그것에 포함되는 또는 별개로 제공되는 프로세서의 제어에 따라 부팅 동작을 수행한다. 부팅 동작은 전자 장치 및 그것에 포함되는 전기/전자 회로들이 사용자에게 서비스를 제공할 수 있는 상태로 진입하도록 허용하기 위해 수행된다. 예로서, 부팅 동작에 따라, 프로세서는 그것에 연결된 종단 장치/주변 장치를 인식하고, 운영 체제(Operating System)를 로드(Load)한다. 나아가, 부팅 동작에 따라, 종단 장치/주변 장치는 프로세서 또는 사용자로부터의 입력을 수신할 준비를 한다.
시스템의 크기 및 복잡도가 증가하는 경우, 부팅 동작을 수행하는 데에 긴 시간이 요구될 수 있다. 부팅 동작이 지연되는 경우, 전자 장치가 사용자에게 서비스를 제공하는 데에도 긴 시간이 요구될 수 있다. 빠른 부팅 동작은 전자 장치의 성능 및 사용자의 만족도를 향상시키는 데에 큰 영향을 줄 수 있다.
본 발명의 실시 예들은 부팅 동작을 빠르게 수행하기 위한 전자 장치의 구성 및 동작 스킴(Scheme)을 제공할 수 있다.
본 발명의 실시 예에 따른 전자 장치는 불휘발성 메모리, 구성 메모리, 및 컨트롤러를 포함할 수 있다. 불휘발성 메모리는 부트 업 명령어(Boot-up Instruction)의 데이터를 저장할 수 있고, 구성 메모리는 외부 장치와의 통신이 수행되는 환경에 관한 설정 정보를 저장할 수 있다. 컨트롤러는 구성 메모리가 외부 장치로부터의 커맨드에 기초하여 설정 정보를 저장하기 전에, 자가 설정 값(Self-setting Value)을 갖는 설정 정보를 구성 메모리에 저장할 수 있다. 나아가, 컨트롤러는 자가 설정 값에 의해 정의되는 환경 하에서, 외부 장치로부터 수신되는 메모리 읽기 요청에 응답하여 부트 업 명령어의 데이터를 외부 장치로 제공할 수 있다.
본 발명의 실시 예에 따른 전자 장치는 불휘발성 메모리, 구성 메모리, 구성 로직 회로, 및 컨트롤러를 포함할 수 있다. 불휘발성 메모리는 부트 업 명령어의 데이터를 저장할 수 있고, 구성 메모리는 외부 장치와의 통신이 수행되는 환경에 관한 설정 정보를 저장할 수 있다. 구성 로직 회로는 구성 메모리가 외부 장치로부터의 커맨드에 기초하여 설정 정보를 저장하기 전에, 자가 설정 값을 갖는 설정 정보를 구성 메모리에 저장할 수 있다. 컨트롤러는 자가 설정 값에 의해 정의되는 환경 하에서, 외부 장치로부터 수신되는 메모리 읽기 요청에 응답하여 부트 업 명령어의 데이터를 외부 장치로 제공할 수 있다.
본 발명의 실시 예에 따른 전자 장치는 스위치 장치 및 대상 종단 장치를 포함할 수 있다. 스위치 장치는 호스트로 연결되는 호스트 포트, 복수의 종단 장치와 각각 연결되는 복수의 종단 포트, 및 호스트 포트 및 복수의 종단 포트를 통해 호스트와의 통신이 수행되는 환경에 관한 설정 정보를 각각 저장하도록 구성되는 스위치 구성 메모리들을 포함할 수 있다. 대상 종단 장치는 복수의 종단 포트 중 대상 종단 포트로 연결될 수 있고, 부트 업 명령어의 데이터를 저장할 수 있다. 스위치 장치는 스위치 구성 메모리들이 호스트로부터의 커맨드에 기초하여 설정 정보를 저장하기 전에, 대상 종단 장치의 제어에 따라 자가 설정 값을 갖는 설정 정보를 스위치 구성 메모리들 중 호스트 포트 및 대상 종단 포트에 대응하는 대상 스위치 구성 메모리들에 저장할 수 있다. 나아가, 스위치 장치는 자가 설정 값에 의해 정의되는 환경 하에서 호스트로부터 수신되는 메모리 읽기 요청을 대상 종단 장치로 전달할 수 있고, 메모리 읽기 요청에 응답하여 대상 종단 장치로부터 출력되는 부트 업 명령어의 데이터를 호스트로 전달할 수 있다.
본 발명의 실시 예에 따른 전자 장치는 프로세서 장치 및 종단 장치를 포함할 수 있다. 프로세서 장치는 부트 업 명령어에 기초하여 부팅 동작을 수행할 수 있다. 종단 장치는 부트 업 명령어의 데이터, 및 프로세서 장치와의 통신이 수행되는 환경에 관한 설정 정보를 저장할 수 있다. 종단 장치는 프로세서 장치로부터의 커맨드에 기초하여 설정 정보를 저장하기 전에, 자가 설정 값을 갖는 설정 정보를 저장할 수 있다. 나아가, 종단 장치는 자가 설정 값에 의해 정의되는 환경 하에서, 프로세서 장치로부터 수신되는 메모리 읽기 요청에 응답하여 부트 업 명령어의 데이터를 프로세서 장치로 제공할 수 있다.
본 발명의 실시 예들에 따르면, 프로세서는 느린 속도의 메모리 대신 빠른 속도의 종단 장치로부터 부트 업 명령어를 읽을 수 있다. 따라서, 부팅 동작이 빠르게 수행될 수 있다.
본 발명의 실시 예들에 따르면, 추가의 메모리, 이 메모리를 관리하는 장치, 및 이 메모리의 데이터를 보존하기 위해 제공되는 배터리가 전자 장치로부터 제거될 수 있다. 따라서, 시스템/장치의 전체 면적이 감소할 수 있고, 구현 비용이 절감될 수 있다.
본 발명의 실시 예들에 따르면, 부트 업 명령어의 갱신(Update)이 필요한 경우, 추가의 메모리를 교체하는 대신, 종단 장치에 저장되는 프로그램 코드(Program Code; 예컨대, 펌웨어(Firmware) 등)를 새로 설치하는 것으로 충분하다. 따라서, 부트 업 명령어의 갱신이 쉬워지고 저렴해질 수 있다.
도 1은 본 발명의 실시 예에 따른 전자 장치들을 포함하는 컴퓨팅 장치를 보여주는 블록도이다.
도 2는 도 1의 전자 장치들 사이의 예시적인 연결 구조를 보여주는 블록도이다.
도 3은 도 2의 전자 장치들 사이의 예시적인 통신을 설명하는 흐름도이다.
도 4는 도 2의 연결 구조에서 수행되는 예시적인 자가 구성(Self-configuration) 동작을 설명하는 개념도이다.
도 5는 도 2의 구성 메모리(Configuration Memory)에 저장될 수 있는 설정 정보의 예시적인 구성을 보여주는 개념도이다.
도 6은 도 4의 구성 메모리에 자가 설정 값(Self-setting Value)을 저장하기 위한 예시적인 구현들을 보여주는 개념도이다.
도 7은 도 2의 연결 구조에서 수행되는 예시적인 자가 리셋(Self-reset) 동작을 설명하는 개념도이다.
도 8은 도 2의 연결 구조에서 수행되는 예시적인 일반 통신(Normal Communication)을 설명하는 개념도이다.
도 9는 도 2의 전자 장치들 사이의 예시적인 사이드밴드(Sideband) 통신을 설명하기 위한 개념도이다.
도 10은 도 1의 전자 장치들 사이의 예시적인 연결 구조를 보여주는 블록도이다.
도 11은 도 10의 연결 구조에 기초한 구성 로직 회로(Configuration Logic Circuit)의 예시적인 구성 및 동작을 보여주는 개념도이다.
도 12는 도 1의 전자 장치들 사이의 예시적인 연결 구조를 보여주는 블록도이다.
도 13은 도 12의 연결 구조에서 수행되는 예시적인 자가 구성 동작을 설명하는 개념도이다.
도 14는 도 1의 전자 장치들 사이의 예시적인 연결 구조를 보여주는 블록도이다.
도 15는 본 발명의 실시 예에 따른 전자 장치의 예시적인 구성 및 그것의 인터페이스들을 나타낸 블록도이다.
아래에서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자(이하, 통상의 기술자)들이 본 발명을 용이하게 실시할 수 있도록, 첨부되는 도면들을 참조하여 본 발명의 실시 예들이 명확하고 상세하게 설명될 것이다.
도 1은 본 발명의 실시 예에 따른 전자 장치들을 포함하는 컴퓨팅 장치를 보여주는 블록도이다.
도 1을 참조하면, 컴퓨팅 장치(1000)는 메인 프로세서(Main Processor, 1100), 워킹 메모리(Working Memory, 1200), 유저 인터페이스(User Interface, 1300), 저장 장치(1400), 통신 블록(1500), 그래픽 처리 장치(Graphic Processor Device, 1600), 및 버스(Bus, 1700)를 포함할 수 있다. 예로서, 컴퓨팅 장치(1000)는 데스크탑(Desktop) 컴퓨터, 랩탑(Laptop) 컴퓨터, 태블릿(Tablet) 컴퓨터, 비디오 게임기(Video Game Console), 워크스테이션(Workstation), 서버(Server) 등과 같은 다양한 전자 장치들 중 하나일 수 있으나, 본 발명은 이 예에 의해 한정되지 않는다.
메인 프로세서(1100)는 컴퓨팅 장치(1000)의 전반적인 동작들을 제어할 수 있다. 메인 프로세서(1100)는 다양한 종류의 산술 연산들 및/또는 논리 연산들을 처리하도록 구성될 수 있다.
이를 위해, 메인 프로세서(1100)는 하나 이상의 프로세서 코어들을 포함하는 전용 논리 회로(Special-purpose Logic Circuit; 예컨대, FPGA(Field Programmable Gate Array), ASICs(Application Specific Integrated Circuits) 등)로 구현될 수 있다. 메인 프로세서(1100)는 프로세서 코어들을 이용하여, 프로그램 코드(Program Code)의 명령어 집합(Instruction Set)을 실행할 수 있다. 예로서, 메인 프로세서(1100)는 범용(General-purpose) 프로세서, 전용 프로세서, 및/또는 어플리케이션 프로세서(Application Processor)를 포함할 수 있다.
워킹 메모리(1200)는 컴퓨팅 장치(1000)의 동작에 이용되는 데이터를 일시적으로 저장할 수 있다. 예로서, 워킹 메모리(1200)는 메인 프로세서(1100)에 의해 처리된 또는 처리될 데이터를 저장할 수 있다. 예로서, 워킹 메모리(1200)는 SRAM(Static Random Access Memory), DRAM(Dynamic RAM), SDRAM(Synchronous DRAM) 등과 같은 휘발성 메모리를 포함할 수 있다.
유저 인터페이스(1300)는 메인 프로세서(1100)의 제어에 따라, 사용자와 컴퓨팅 장치(1000) 사이의 통신을 중재할 수 있다. 예로서, 유저 인터페이스(1300)는 키보드, 마우스, 키패드, 버튼, 터치 패널, 터치 스크린, 터치 패드, 터치 볼, 카메라, 마이크, 자이로스코프 센서, 진동 센서 등으로부터의 입력을 처리할 수 있다. 나아가, 유저 인터페이스(1300)는 디스플레이 장치, 스피커, 모터 등으로의 출력을 처리할 수 있다.
저장 장치(1400)는 전력 공급에 관계없이 데이터를 저장할 수 있다. 예로서, 저장 장치(1400)는 플래시(Flash) 메모리, PRAM(Phase-change RAM), MRAM(Magneto-resistive RAM), ReRAM(Resistive RAM), FRAM(Ferro-electric RAM) 등과 같은 불휘발성 메모리들 중 적어도 하나를 포함할 수 있다. 예로서, 저장 장치(1400)는 SSD(Solid State Drive), HDD(Hard Disk Drive) 등과 같은 저장 매체를 포함할 수 있다.
통신 블록(1500)은 메인 프로세서(1100)의 제어에 따라, 컴퓨팅 장치(1000)의 외부 장치/시스템과 통신할 수 있다. 예로서, 통신 블록(1500)은 이더넷(Ethernet), TCP/IP(Transfer Control Protocol/Internet Protocol), USB(Universal Serial Bus), Firewire 등과 같은 다양한 유선 통신 규약 중 적어도 하나, 및/또는 LTE(Long Term Evolution), WiMax(Worldwide Interoperability for Microwave Access), GSM(Global System for Mobile communications), CDMA(Code Division Multiple Access), Bluetooth, NFC(Near Field Communication), WiFi(Wireless Fidelity), RFID(Radio Frequency Identification) 등의 다양한 무선 통신 규약 중 적어도 하나에 따라 컴퓨팅 장치(1000)의 외부 장치/시스템과 통신할 수 있다.
그래픽 처리 장치(1600)는 복수의 프로세서 코어(예컨대, GPU(Graphic Processing Unit)들)을 포함할 수 있다. 그래픽 처리 장치(1600)에 포함되는 프로세서 코어들은 그래픽 데이터를 병렬로 빠르게 처리할 수 있다. 예로서, 그래픽 처리 장치(1600)는 프로세서 코어들을 이용하여, 픽셀 셰이더(Pixel Shader), 슈퍼 샘플링(Super-sampling), 색 공간 변환(Color Space Transform) 등과 같은 다양한 그래픽 연산을 처리할 수 있다.
메인 프로세서(1100), 워킹 메모리(1200), 유저 인터페이스(1300), 저장 장치(1400), 통신 블록(1500), 및 그래픽 처리 장치(1600) 각각은 회로 레벨, 칩 레벨, 및/또는 패키지 레벨의 장치로 구현될 수 있고, 컴퓨팅 장치(1100)에 장착될 수 있다. 또는, 메인 프로세서(1100), 워킹 메모리(1200), 유저 인터페이스(1300), 저장 장치(1400), 통신 블록(1500), 및 그래픽 처리 장치(1600) 각각은 독립적인 전자 장치로 구현될 수 있고, 컴퓨팅 장치(1100) 내에 조립될 수 있다. 장착된 또는 조립된 구성 요소들은 버스(1700)를 통해 서로 연결될 수 있다.
버스(1700)는 컴퓨팅 장치(1000)의 구성 요소들 사이에서 통신 경로를 제공할 수 있다. 컴퓨팅 장치(1000)의 구성 요소들은 버스(1700)의 버스 포맷에 기초하여 서로 데이터를 교환할 수 있다. 예로서, 버스 포맷은 PCI(Peripheral Component Interconnect), PCIe(PCI Express), NVMe(Nonvolatile Memory Express), SCSI(Small Computer System Interface), ATA(Advanced Technology Attachment), SATA(Serial ATA), PATA(Parallel ATA), SAS(Serial Attached SCSI), UFS(Universal Flash Storage) 등과 같은 다양한 통신 규약 중 하나 이상을 포함할 수 있다.
메인 프로세서(1100)는 전력 공급의 시작에 응답하여, 부팅 동작을 개시할 수 있다. 부팅 동작은 컴퓨팅 장치(1000) 및 그것의 구성 요소들이 적절하게 동작할 수 있는 상태로 진입하도록 허용하기 위해 수행될 수 있다. 예로서, 전력은 컴퓨팅 장치(1000)에 포함되는 배터리(미도시) 또는 컴퓨팅 장치(1000) 외부의 전력원(미도시)으로부터 컴퓨팅 장치(1000)의 구성 요소들로 공급될 수 있다.
부팅 동작이 개시되면, 메인 프로세서(1100)는 먼저 부트 업 명령어(Boot-up Instruction, BUI)를 읽고 처리할 수 있다. 메인 프로세서(1100)는 부트 업 명령어(BUI)에 기초하여 부팅 동작을 수행할 수 있다. 부트 업 명령어(BUI)는 메인 프로세서(1100)가 다양한 연산을 처리할 수 있고 다른 구성 요소들을 식별할 수 있는 상태로 진입하도록 허용하기 위한 기본적인 명령어(들)를 포함할 수 있다. 더 나은 이해를 돕기 위한 예로서, 부트 업 명령어(BUI)는 BIOS(Basic Input/Output System), EFI(Extensible Firmware Interface), UEFI(Unified EFI) 등 중 적어도 하나와 관련될 수 있으나, 본 발명은 이 예에 의해 한정되지는 않는다.
부트 업 명령어(BUI)를 처리하면서, 메인 프로세서(1100)는 컴퓨팅 장치(1000)의 다른 구성 요소들을 식별하고 인식할 수 있다. 예로서, 메인 프로세서(1100)는 어떤 구성 요소가 연결되어 있는지, 연결된 구성 요소의 유형/모델이 무엇인지, 연결된 구성 요소와 통신하기 위한 환경을 어떻게 설정할 것인지 등을 판별할 수 있다. 더 나은 이해를 돕기 위한 예로서, 이러한 판별은 PCIe 통신 규약에서 정의되는 나열/구성(Enumeration/Configuration) 동작에 대응할 수 있으나, 본 발명은 이 예에 의해 한정되지는 않는다.
부트 업 명령어(BUI)를 처리한 후, 메인 프로세서(1100)는 부트 로더(Boot Loader)에 기초하여 운영 체제(Operating System)의 커널(Kernel)을 준비할 수 있다. 메인 프로세서(1100)는 준비된 커널 상에 운영 체제를 로드(Load)할 수 있다. 나아가, 메인 프로세서(1100)는 다른 구성 요소들이 적절하게 서비스를 제공할 수 있도록 다른 구성 요소들의 동작을 준비시킬 수 있다. 위 과정들에 따라, 부팅 동작이 완료될 수 있다.
메인 프로세서(1100)는 부트 로더 및 운영 체제를 다루기 전에, 부트 업 명령어(BUI)를 읽고 처리할 수 있다. 부트 업 명령어(BUI)를 읽고 처리하는 데에 긴 시간이 요구되는 경우, 부팅 동작이 지연될 수 있다. 따라서, 부트 업 명령어(BUI)를 빠르게 읽고 처리하는 것은 빠른 부팅 동작에 이득을 가져올 수 있다.
몇몇 경우, 컴퓨팅 장치(1000)는 부트 업 명령어 메모리(10)를 포함할 수 있다. 예로서, 부트 업 명령어 메모리(10)는 롬(Read-only Memory, ROM), 플래시 메모리 등과 같은 추가의 메모리를 포함할 수 있다. 이러한 부트 업 명령어 메모리(10)는 메인 프로세서(1100)를 위해 부트 업 명령어(예컨대, BIOS, EFI 등)를 저장할 수 있고, 메인 프로세서(1100)의 요청에 응답하여 메인 프로세서(1100)에게 부트 업 명령어를 제공할 수 있다.
그러나, 대부분의 경우에, 부트 업 명령어 메모리(10)는 느린 동작 속도를 가질 수 있고, 컴퓨팅 장치(1000) 상에서 추가의 면적을 차지할 수 있다. 게다가, 부트 업 명령어 메모리(10)는 부트 업 명령어 메모리(10)를 관리하는 것과 관련되는 CMOS(Complementary Metal-oxide Semiconductor) 장치(칩), 및 부트 업 명령어 메모리(10)의 데이터를 보존하기 위해 제공되는 배터리를 수반하기 때문에, 컴퓨팅 장치(1000)의 면적이 더 증가할 수 있다. 나아가, 부트 업 명령어의 갱신이 필요한 경우, 부트 업 명령어 메모리(10) 및 CMOS 장치(칩)의 교체가 요구되기 때문에, 가격 증가 및 불편함이 불가피하다.
따라서, 본 발명의 실시 예들에서, 컴퓨팅 장치(1000)는 추가의 부트 업 명령어 메모리(10)를 포함하지 않을 수 있다. 대신, 저장 장치(1400)가 부트 업 명령어(BUI)의 데이터를 저장할 수 있다. 본 발명의 실시 예들에서, 저장 장치(1400)는 메인 프로세서(1100)의 요청에 응답하여 메인 프로세서(1100)에게 부트 업 명령어(BUI)를 제공할 수 있다.
대부분의 경우에, 저장 장치(1400)의 동작 속도는 부트 업 명령어 메모리(10)에 비해 훨씬 빠를 수 있다. 따라서, 프로세서(1100)가 부트 업 명령어(BUI)를 저장 장치(1400)로부터 읽는 경우, 부팅 동작이 빠르게 수행될 수 있다. 게다가, 부트 업 명령어 메모리(10), CMOS 장치(칩), 및 배터리가 컴퓨팅 장치(1000)로부터 제거될 수 있기 때문에, 컴퓨팅 장치(1000)의 면적 및 구현 비용이 감소할 수 있다. 나아가, 부트 업 명령어(BUI)는 저장 장치(1400)에 저장되는 프로그램 코드를 새로 설치함으로써, 쉽게 갱신될 수 있다.
그러나, 부트 업 명령어(BUI)를 읽기 전에, 메인 프로세서(1100)는 아직 저장 장치(1400)를 식별하거나 인식하지 않았을 수 있다. 이는, 메인 프로세서(1100)가 부트 업 명령어(BUI)를 읽은 후에 저장 장치(1400)를 식별하고 인식할 수 있기 때문이다. 결과적으로, 부트 업 명령어(BUI)를 읽기 전에, 메인 프로세서(1100)는 아직 저장 장치(1400)와 통신할 준비가 되지 않았을 수 있고, 곧바로 저장 장치(1400)로부터 부트 업 명령어(BUI)를 읽지 못할 수 있다.
따라서, 본 발명의 실시 예들에서, 저장 장치(1400)는 메인 프로세서(1100)에게 부트 업 명령어(BUI)를 제공하기 위해, "자가 구성(Self-configuration) 동작"을 수행할 수 있다. 자가 구성 동작에서, 저장 장치(1400)는 메인 프로세서(1100)와 통신을 수행하기 위한 상태로 스스로 진입할 수 있다. 메인 프로세서(1100)는 자가 구성 동작을 수행한 저장 장치(1400)로부터 부트 업 명령어(BUI)를 수신할 수 있다. 이러한 동작들이 도 2 내지 도 15를 참조하여 설명될 것이다.
먼저, 도 2 내지 도 13을 참조하여, PCIe 통신 규약을 채용한 실시 예들이 설명될 것이다. 이 실시 예들에서, PCIe 통신 규약에 따라 통신하는 전자 장치들 사이의 연결 구조는 "PCI/PCIe 패브릭(Fabric)"으로 언급될 수 있다. 그러나, 이 실시 예들은 더 나은 이해를 돕기 위해 제공되는 것이고, 본 발명을 한정하기 위한 것은 아니다. 본 발명의 실시 예들은 아래의 설명들에 기초하여 PCIe 통신 규약 외의 다른 통신 규약(들)에도 적용될 수 있다.
도 2는 도 1의 전자 장치들 사이의 예시적인 연결 구조를 보여주는 블록도이다. 예로서, 도 1의 컴퓨팅 장치(1000)는 전자 장치들(예컨대, 1100, 1200, 1400, 1500, 1600 등)을 연결하기 위해 PCI/PCIe 패브릭(2000a)을 채용할 수 있다.
예로서, PCI/PCIe 패브릭(2000a)은 메인 프로세서(2100), 워킹 메모리(2200), 및 종단(Endpoint) 장치들(2400a, 2500, 2600)을 포함할 수 있다. 한편, 본 발명의 실시 예들에서, PCI/PCIe 패브릭(2000a)은 도 1을 참조하여 설명된 것과 같이 부트 업 명령어 메모리(10)를 포함하지 않을 수 있다.
메인 프로세서(2100) 및 워킹 메모리(2200)는 각각 도 1의 메인 프로세서(1100) 및 워킹 메모리(1200)에 대응할 수 있다. 종단 장치들(2400a, 2500, 2600) 각각은 PCI/PCIe 패브릭(2000a)의 종단에서 메인 프로세서(2100)를 위해 서비스를 제공할 수 있다. 예로서, 종단 장치(2400a)는 도 1의 저장 장치(1400)에 대응하는 저장 장치인 것으로 가정될 것이고, 아래에서 저장 장치로 언급될 수 있다. 종단 장치들(2500, 2600) 각각은 도 1의 저장 장치(1400), 통신 블록(1500), 그래픽 처리 장치(1600), 또는 그 외 다른 유형의 종단 장치에 대응할 수 있다. 도 2는 세 개의 종단 장치들(2400a, 2500, 2600)을 보여주지만, 종단 장치들의 개수는 다양하게 변경 또는 수정될 수 있다.
메인 프로세서(2100), 워킹 메모리(2200), 및 종단 장치들(2400a, 2500, 2600)은 루트 컴플렉스(Root Complex, 2005)를 통해 서로 연결될 수 있다. 루트 컴플렉스(2005)는 메인 프로세서(2100), 워킹 메모리(2200), 및 종단 장치들(2400a, 2500, 2600) 사이의 통신을 중재할 수 있다. 예로서, 루트 컴플렉스(2005)는 메인 프로세서(2100), 워킹 메모리(2200), 및 종단 장치들(2400a, 2500, 2600) 사이에서 통신 타이밍(Timing), 통신 시퀀스(Sequence), 통신 환경 등을 관리할 수 있다. 루트 컴플렉스(2005)는 컴퓨팅 장치(1000)의 메인보드 상에 인쇄 또는 실장되거나, 별개의 장치로 구현될 수 있다.
저장 장치(2400a)는 하나 이상의 불휘발성 메모리들(2410), 컨트롤러(2430a), 및 구성 메모리(Configuration Memory, 2450a)를 포함할 수 있다. 불휘발성 메모리(2410)는 데이터를 저장하거나, 저장된 데이터를 출력할 수 있다. 예로서, 불휘발성 메모리(2410)는 플래시 메모리, PRAM, MRAM, ReRAM, FRAM 등 중 적어도 하나를 포함할 수 있다.
불휘발성 메모리(2410)는 메인 프로세서(2100)를 위해 부트 업 명령어(BUI)의 데이터를 저장할 수 있다. 불휘발성 메모리(2410)는 펌웨어(FW) 및/또는 소프트웨어(SW)의 프로그램 코드의 데이터를 저장할 수 있다. 펌웨어(FW) 및/또는 소프트웨어(SW)의 프로그램 코드는 저장 장치(2400a)를 동작시키기 위해 컨트롤러(2430a)에 의해 실행될 수 있다. 또는, 펌웨어(FW) 및/또는 소프트웨어(SW)의 프로그램 코드는 PCI/PCIe 패브릭(2000a)을 채용한 컴퓨팅 장치(1000)를 동작시키기 위해 메인 프로세서(2100)에 의해 실행될 수 있다(예컨대, 운영 체제).
컨트롤러(2430a)는 저장 장치(2400a)의 전반적인 동작들을 제어할 수 있다. 컨트롤러(2430a)는 외부 장치(예컨대, 메인 프로세서(2100))로부터의 요청에 응답하여, 불휘발성 메모리(2410)가 데이터를 저장하거나 출력하도록 불휘발성 메모리(2410)를 제어할 수 있다. 예로서, 컨트롤러(2430a)는 메인 프로세서(2100)로부터 수신되는 메모리 읽기 요청에 응답하여, 부트 업 명령어(BUI)의 데이터를 메인 프로세서(2100)로 제공할 수 있다. 예로서, 컨트롤러(2430a)에게 서비스를 요청하는 외부 장치는 "호스트(Host)"로 언급될 수 있다. 그 밖에도, 컨트롤러(2430a)는 저장 장치(2400a)의 동작 환경을 관리하거나 불휘발성 메모리(2410)에 저장된 데이터의 오류를 검사하는 등, 다양한 동작을 수행할 수 있다.
컨트롤러(2430a)는 (위에서 설명된 및/또는 아래에서 설명될) 특정 동작을 수행하도록 설계된 하드웨어 회로를 포함할 수 있다. 컨트롤러(2430a)는 (위에서 설명된 및/또는 아래에서 설명될) 특정 동작을 수행하도록 설계된 펌웨어(FW) 및/또는 소프트웨어(SW)의 프로그램 코드를 실행할 수 있다. 컨트롤러(2430a)는 프로그램 코드의 명령어 집합을 실행하고 처리할 수 있는 하나 이상의 프로세서 코어들을 포함할 수 있다.
구성 메모리(2450a)는 설정 정보(Setting Information, STI)를 저장할 수 있다. 설정 정보(STI)는 외부 장치(예컨대, 메인 프로세서(2100))와의 통신이 수행되는 환경에 관한 정보를 포함할 수 있다. 예로서, 구성 메모리(2450a)는 PCIe 통신 규약에서 정의되는 구성 공간(Configuration Space)과 관련될 수 있다. 저장 장치(2400a) 및 컨트롤러(2430a)는 설정 정보(STI)에 기초하여 정의되는 통신 환경 하에서, 외부 장치와 통신할 수 있다.
예로서, 설정 정보(STI)는 신호 어드레스 범위의 정보를 포함할 수 있다. 저장 장치(2400a) 및 컨트롤러(2430a)는 설정 정보(STI)의 신호 어드레스 범위에 포함되는 신호 어드레스를 갖는 입력(예컨대, 호스트로부터의 커맨드, 요청, 쿼리(Query), 데이터 등)을 수신하고 처리할 수 있다.
예로서, 신호 어드레스 범위는 상한 값 및 하한 값에 기초하여 정의될 수 있다. 이 예에서, 저장 장치(2400a) 및 컨트롤러(2430a)는 상한 값과 하한 값 사이의 신호 어드레스를 갖는 입력을 수신하고 처리할 수 있다. 다른 예로서, 신호 어드레스 범위는 상한 값에 기초하여 정의될 수 있다. 이 예에서, 저장 장치(2400a) 및 컨트롤러(2430a)는 하한 값 이하의 신호 어드레스를 갖는 입력을 수신하고 처리할 수 있다. 외부 장치(예컨대, 메인 프로세서(2100))는 저장 장치(2400a)와 통신하기 위해, 저장 장치(2400a)에 의해 처리될 수 있는 신호 어드레스를 갖는 신호/데이터/패킷(Packet)을 출력할 수 있다. 다만, 이 예들은 더 나은 이해를 돕기 위해 제공되는 것이고, 본 발명을 한정하기 위한 것은 아니다.
예로서, 나열/구성 동작에서, 메인 프로세서(2100)는 저장 장치(2400a)가 연결되어 있음을 인식할 수 있다. 메인 프로세서(2100)는 저장 장치(2400a)와 통신하기 위해, 나열/구성 커맨드를 저장 장치(2400a)로 제공할 수 있다. 저장 장치(2400a)는 나열/구성 커맨드에 응답하여, 구성 메모리(2450a)에 설정 정보(STI)를 저장할 수 있다. 나열/구성 동작이 완료된 후, 외부 장치(예컨대, 메인 프로세서(2100))는 설정 정보(STI)를 참조하여 저장 장치(2400a)와 통신할 수 있다.
예로서, 구성 메모리(2450a)는 설정 정보(STI)를 저장하기 위해 레지스터(Registor) 유형의 메모리를 포함할 수 있다. 그러나, 본 발명은 이 예에 의해 한정되지 않는다. 구성 메모리(2450a)는 플래시 메모리, PRAM, MRAM, ReRAM, FRAM, EEPROM(Electrically Erasable/Programmable Read-only Memory) 등 다양한 유형의 메모리들 중 하나 이상을 포함할 수 있다.
컨트롤러(2430a)는 구성 관리기(2431a)를 포함할 수 있다. 구성 관리기(2431a)는 저장 장치(2400a)의 자가 구성 동작을 수행할 수 있다. 본 발명의 실시 예들에서, 컨트롤러(2430a)가 메인 프로세서(2100)로부터의 메모리 읽기 요청에 응답하여 부트 업 명령어(BUI)를 메인 프로세서(2100)로 제공하기 전에, 구성 관리기(2431a)는 메인 프로세서(2100)와의 통신을 가능하게 하기 위해 자가 구성 동작을 수행할 수 있다. 자가 구성 동작에 따라, 저장 장치(2400a)는 메인 프로세서(2100)로부터의 나열/구성 커맨드에 기초하여 설정 정보(STI)를 저장하기 전에, "자가 설정 값(Self-setting Value)"을 갖는 설정 정보(STI)를 스스로 저장할 수 있다.
자가 설정 값은 메인 프로세서(2100)로부터의 커맨드 없이 저장 장치(2400a)에 의해 설정되는 설정 정보(STI)의 값을 포함할 수 있다. 자가 구성 동작에서, 구성 관리기(2431a)는 메인 프로세서(2100)와의 통신이 수행되는 환경을 정의하기 위해 자가 설정 값을 갖는 설정 정보(STI)를 구성 메모리(2450a)에 저장할 수 있다.
따라서, 메인 프로세서(2100)가 부트 업 명령어(BUI)를 아직 읽지 않고 나열/구성 동작을 수행하지 않았더라도, 메인 프로세서(2100)는 자가 설정 값을 갖는 설정 정보(STI)에 기초하여 저장 장치(2400a)와 통신할 수 있다. 나아가, 컨트롤러(2430a)는 자가 설정 값에 의해 정의되는 환경 하에서, 메인 프로세서(2100)로부터 수신되는 메모리 읽기 요청에 응답하여 부트 업 명령어(BUI)의 데이터를 메인 프로세서(2100)로 제공할 수 있다.
자가 구성 동작을 수행하기 위해, 구성 관리기(2431a)는 펌웨어(FW) 및/또는 소프트웨어(SW)의 프로그램 코드를 실행함으로써 컨트롤러(2430a) 상에서 실행될 수 있다. 또는, 구성 관리기(2431a)는 하드웨어 회로로 구현될 수 있다. 몇몇 경우, 구성 관리기(2431a)는 소프트웨어 및 하드웨어의 하이브리드(Hybrid) 형태로 구현될 수 있다.
도 3은 도 2의 전자 장치들 사이의 예시적인 통신을 설명하는 흐름도이다.
S110, S114, 및 S115 동작들에서, 메인 프로세서(2100), 저장 장치(2400a), 및 그 외 다른 종단 장치들(2500, 2600)로의 전력 공급이 각각 시작될 수 있다. 전력은 PCI/PCIe 패브릭(2000a) 외부의 배터리 또는 그 외 다른 전력원으로부터 공급될 수 있다.
S120 동작에서, 저장 장치(2400a)는 자가 구성 동작을 수행할 수 있다. 메인 프로세서(2100)가 저장 장치(2400a)로 나열/구성 커맨드를 제공하기 전에, 저장 장치(2400a)는 메인 프로세서(2100)와의 통신을 허용하기 위해 자가 구성 동작을 수행할 수 있다. 자가 구성 동작에서, 저장 장치(2400a)는 자가 설정 값을 갖는 설정 정보(STI)를 구성 메모리(2450a)에 저장할 수 있다. 자가 구성 동작은 도 4를 참조하여 더 설명될 것이다.
S123 동작에서, 메인 프로세서(2100)는 저장 장치(2400a)로 메모리 읽기 요청을 제공할 수 있다. S126 동작에서, 저장 장치(2400a)는 데이터와 함께 완료 응답을 메인 프로세서(2100)로 제공할 수 있다. 메인 프로세서(2100)로 제공되는 데이터는 부트 업 명령어(BUI)를 포함할 수 있다. S130 동작에서, 메인 프로세서(2100)는 S126 동작에서 수신된 부트 업 명령어(BUI)에 기초하여 부팅 동작을 수행할 수 있다.
본 발명의 실시 예에서, 메인 프로세서(2100)는 부팅 동작 및 나열/구성 동작을 수행하기 전에 저장 장치(2400a)와 통신할 수 있다. 메인 프로세서(2100)와 저장 장치(2400a) 사이의 통신은 자가 설정 값을 갖는 설정 정보(STI)에 의해 정의되는 환경 하에서 수행될 수 있다. 따라서, 메인 프로세서(2100)는 추가의 부트 업 명령어 메모리(10) 없이, 저장 장치(2400a)로부터 부트 업 명령어(BUI)를 수신할 수 있다.
S140 동작에서, 저장 장치(2400a)는 "자가 리셋(Self-reset)" 동작을 수행할 수 있다. 자가 리셋 동작에서, 저장 장치(2400a)는 자가 설정 값을 갖는 상태 정보(STI)를 해제(Release)할 수 있고, 구성 메모리(2450a)를 초기화할 수 있다. 자가 설정 값은 부트 업 명령어(BUI)를 메인 프로세서(2100)로 제공하기 위해 일시적으로 설정된 상태 정보(STI)에 대응할 수 있다. 따라서, 부트 업 명령어(BUI)가 메인 프로세서(2100)로 제공된 후, 저장 장치(2400a)는 자가 리셋 동작을 수행하여 자가 설정 값을 갖는 설정 정보(STI)를 해제 및 초기화할 수 있다. 다만, 몇몇 경우, 자가 설정 값을 갖는 설정 정보(STI)가 메인 프로세서(2100)와 계속 통신하는 데에 적합할 수 있다. 이러한 경우, S140 동작은 생략될 수 있다. 자가 리셋 동작은 도 7을 참조하여 더 설명될 것이다.
S150 동작에서, 메인 프로세서(2100)는 저장 장치(2400a) 및 종단 장치들(2500, 2600) 각각으로 나열/구성 커맨드를 제공할 수 있다. 메인 프로세서(2100)가 저장 장치(2400a) 및 종단 장치들(2500, 2600)이 연결되어 있음을 인식한 경우, 인식된 저장 장치(2400a) 및 종단 장치들(2500, 2600) 각각으로 나열/구성 커맨드를 제공할 수 있다.
S154 동작에서, 저장 장치(2400a)는 S150 동작에서 수신된 커맨드에 기초하여 구성 동작을 수행할 수 있다. 구성 동작에서, 저장 장치(2400a)는 구성 메모리(2450a)에 설정 정보(STI)를 저장할 수 있다. S155 동작에서, 종단 장치들(2500, 2600) 각각 역시 S150 동작에서 수신된 커맨드에 기초하여 구성 동작을 수행(예컨대, 설정 정보를 저장)할 수 있다.
S160 동작에서, 메인 프로세서(2100)와 저장 장치(2400a) 및 종단 장치들(2500, 2600) 각각 사이에서 일반(Normal) 통신이 수행될 수 있다. 예로서, PCI/PCIe 패브릭(2000a)이 채용된 경우, 메인 프로세서(2100)는 PCIe 통신 규약에 따라 저장 장치(2400a) 및 종단 장치들(2500, 2600) 각각과 통신할 수 있다. 이러한 통신은 S154 및 S155 동작들에서 저장된 설정 정보에 의해 정의되는 환경 하에서 수행될 수 있다. 나열/구성 동작 및 일반 통신은 도 8을 참조하여 더 설명될 것이다.
도 4는 도 2의 연결 구조에서 수행되는 예시적인 자가 구성 동작을 설명하는 개념도이다.
저장 장치(2400a)로의 전력 공급이 시작된 후, 컨트롤러(2430a)는 펌웨어(FW) 및/또는 소프트웨어(SW)의 프로그램 코드를 실행할 수 있다. 따라서, 컨트롤러(2430a)는 구성 관리기(2431a)를 실행할 수 있다(동작 ①).
구성 관리기(2431a)는 자가 구성 동작을 수행하기 위해 실행될 수 있다. 자가 구성 동작에서, 구성 관리기(2431a)는 자가 설정 값(SSV)을 갖는 설정 정보(STI)를 구성 메모리(2450a)에 저장할 수 있다(동작 ②).
위에서 설명된 것과 같이, 설정 정보(STI)는 신호 어드레스 범위의 정보를 포함할 수 있다. 이 경우, 자가 설정 값(SSV)은 신호 어드레스 범위를 정의하는 상한 값 및 하한 값 중 적어도 하나를 포함할 수 있다.
예로서, 펌웨어(FW) 및/또는 소프트웨어(SW)의 프로그램 코드는 신호 어드레스 범위의 상한 값 및 하한 값 중 적어도 하나에 관한 코드를 포함할 수 있다. 구성 관리기(2431a)는 펌웨어(FW) 및/또는 소프트웨어(SW)의 프로그램 코드로부터 상한 값 및/또는 하한 값을 읽을 수 있다. 구성 관리기(2431a)는 읽힌 값(들)을 자가 설정 값(SSV)으로서 구성 메모리(2450a)에 저장할 수 있다.
이후, 컨트롤러(2430a)는 자가 설정 값(SSV)에 의해 지시되는 신호 어드레스 범위에 포함되는 신호 어드레스를 갖는 입력(예컨대, 커맨드, 요청, 쿼리, 데이터, 패킷 등)을 메인 프로세서(2100)로부터 수신할 수 있다. 따라서, 컨트롤러(2430a)는 신호 어드레스 범위의 상한 값과 하한 값 사이의 신호 어드레스를 갖는 메모리 읽기 요청을 메인 프로세서(2100)로부터 수신할 수 있다(동작 ③).
예로서, 메인 프로세서(2100)는 전력 공급의 시작에 응답하여, 메모리 읽기 요청을 저장 장치(2400a)로 제공할 수 있다. 또는, 구성 관리기(2431a)가 자가 구성 동작을 수행하는 데에(즉, 자가 설정 값(SSV)을 갖는 설정 정보(STI)를 저장하는 데에) 시간이 소요되기 때문에, 메인 프로세서(2100)는 전력 공급의 시작으로부터 소정의 시간이 지난 뒤에 메모리 읽기 요청을 저장 장치(2400a)로 제공할 수 있다.
컨트롤러(2430a)는 메모리 읽기 요청에 응답하여, 부트 업 명령어(BUI)를 불휘발성 메모리(2410)로부터 읽을 수 있다. 컨트롤러(2430a)는 읽힌 부트 업 명령어(BUI)의 데이터를 메인 프로세서(2100)로 제공할 수 있다(동작 ④).
몇몇 실시 예에서, 컨트롤러(2430a)는 저장 장치(2400a)로의 전력 공급의 시작에 응답하여, 구성 관리기(2431a)를 실행할 수 있다. 따라서, 구성 관리기(2431a)는 전력 공급의 시작에 응답하여, 자가 설정 값(SSV)을 갖는 설정 정보(STI)를 구성 메모리(2450a)에 저장할 수 있다.
몇몇 실시 예에서, 저장 장치(2400a)는 (도 9를 참조하여 설명될 것과 같이) 메인 인터페이스 규약(예컨대, PCIe 등)과 상이한 사이드밴드(Sideband) 인터페이스 규약에 따라 메인 프로세서(2100a)와 더 통신할 수 있다. 이러한 실시 예에서, 컨트롤러(2430a)는 사이드밴드 인터페이스 규약에 따라 메인 프로세서(2100a)로부터 수신되는 선행 요청(Preceding Request)에 응답하여 구성 관리기(2431a)를 실행할 수 있다. 따라서, 구성 관리기(2431a)는 이 선행 요청에 응답하여, 자가 설정 값(SSV)을 갖는 설정 정보(STI)를 구성 메모리(2450a)에 저장할 수 있다.
몇몇 실시 예에서, 구성 메모리(2450a)는 초기화 상태에서, 모든 입력이 수신되도록 허용하는 상태 정보(STI)를 기본적으로 저장하도록 구성될 수 있다(즉, 완전히 개방(Open)된 상태). 예로서, 메인 프로세서(2100)는 최대 값과 최소 값 사이의 신호 어드레스를 갖는 신호를 출력할 수 있다. 구성 메모리(2450a)는 그 최대 값과 그 최소 값 사이의 신호 어드레스를 갖는 어떠한 입력이든 수신하기 위한 상태 정보(STI)를 저장할 수 있다. 이러한 실시 예에서, 컨트롤러(2431a)는 메인 프로세서(2100)로부터의 메모리 읽기 요청에 응답하여 구성 관리기(2431a)를 실행할 수 있다(메모리 읽기 요청의 신호 어드레스와 무관하게). 구성 관리기(2431a)는 메모리 읽기 요청에 응답하여, 적당한 자가 설정 값(SSV)을 갖는 설정 정보(STI)를 구성 메모리(2450a)에 저장할 수 있다. (이러한 실시 예에서, 도 3의 S123 동작은 도 3의 S120 동작 이전에 수행될 수 있다.)
도 5는 도 2의 구성 메모리에 저장될 수 있는 설정 정보의 예시적인 구성을 보여주는 개념도이다.
구성 메모리(2450a)는 설정 정보(STI)를 저장할 수 있다. 자가 구성 동작에 따라, 설정 정보(STI)는 자가 설정 값(SSV)을 가질 수 있다. 설정 정보(STI)가 신호 어드레스 범위의 정보를 포함하는 경우, 자가 설정 값(SSV)은 신호 어드레스 범위를 정의하는 상한 값 및 하한 값 중 적어도 하나를 포함할 수 있다.
예로서, 상한 값이 "0xFFFF"이고 하한 값이 "0x0000"인 경우, 컨트롤러(2430a)는 "0x0000"와 "0xFFFF" 에 의해 정의되는 신호 어드레스 범위에 포함되는 신호 어드레스를 갖는 입력을 수신하고 처리할 수 있다. 몇몇 경우, 자가 설정 값(SSV)은 신호 어드레스 범위를 정의하기 위해 상한 값 "0xFFFF"만을 포함할 수 있다. 이러한 경우, 컨트롤러(2430a)는 "0xFFFF" 이하의 신호 어드레스를 갖는 입력을 수신하고 처리할 수 있다.
자가 설정 값(SSV)에 의해 지시되는 상한 값 및/또는 하한 값은 메모리 읽기 요청을 수신하는 데에 적합하도록 선택될 수 있다. 몇몇 경우, 자가 설정 값(SSV)은 메인 프로세서(2100)의 벤더(Vendor)와 미리 약속된 상한 값 및/또는 하한 값을 포함할 수 있다. 컨트롤러(2430a)는 자가 설정 값(SSV)의 상한 값 및/또는 하한 값에 의해 정의되는 신호 어드레스 범위에 포함되는 신호 어드레스를 갖는 입력을 수신하고 처리할 수 있다. 따라서, 자가 설정 값(SSV)은 신호 어드레스 범위가 메인 프로세서(2100)로부터의 메모리 읽기 요청의 신호 어드레스를 포함하도록 선택될 수 있다.
예로서, 설정 정보(STI)는 특정 통신 기능(들)을 가능(Enable)/불능(Disable)하게 하는 제어 정보를 포함할 수 있다. 이 경우, 자가 설정 값(SSV)은 특정 통신 기능(들)에 대응하는 제어 정보 값(들)을 더 포함할 수 있다. 그 밖에도, 설정 정보(STI)는 종단 장치를 식별하기 위해 참조되는 식별자 정보, 종단 장치의 동작 상태를 지시하는 상태 정보 등 다양한 정보를 더 포함할 수 있다. 메인 프로세서(2100)는 저장 장치(2400a)와 통신하기 위해, 설정 정보(STI)에 기초하여 허용되는 신호/데이터/패킷을 출력할 수 있다.
도 6은 도 4의 구성 메모리에 자가 설정 값을 저장하기 위한 예시적인 구현들을 보여주는 개념도이다.
구성 메모리(2450a)는 복수의 메모리 영역을 포함할 수 있다. 메모리 영역들 각각은 상이한 기능들을 제공할 수 있다. 메모리 영역들 각각은 상이한 메모리 인덱스들에 기초하여 구별될 수 있다.
예로서, "0" 또는 "1"의 메모리 인덱스를 갖는 메모리 영역(이하, 제 1 영역)은 외부 장치(예컨대, 메인 프로세서(2100))와 컨트롤러(2430a) 사이의 일반 통신을 위해 외부 장치에 의해 참조될 수 있다. 좀 더 구체적으로, 도 3의 S160 동작에서, 제 1 영역은 메인 프로세서(2100)와 통신하기 위해 참조되는 설정 정보(STI)를 저장할 수 있다. 한편, "5" 또는 "6"의 메모리 인덱스를 갖는 메모리 영역(이하, 제 2 영역)은 일반 통신 동안 참조되지 않는 예비 영역을 포함할 수 있다. 몇몇 경우, 구성 메모리(2450a)는 PCIe 통신 규약에서 참조되는 확장 롬(Expansion ROM) 영역과 관련될 수 있다.
몇몇 실시 예에서, 자가 설정 값(SSV)을 갖는 설정 정보(STI)는 제 1 영역(예컨대, "0"의 메모리 인덱스를 갖는 메모리 영역)에 저장될 수 있다. 이러한 실시 예에서, 자가 설정 값(SSV)을 갖는 설정 정보(STI)는 도 3의 S140 동작에서 리셋될 수 있다. 따라서, 메인 프로세서(2100)와 컨트롤러(2430a) 사이의 일반 통신은 자가 설정 값(SSV)의 영향을 받지 않을 수 있다.
몇몇 실시 예에서, 자가 설정 값(SSV)을 갖는 설정 정보(STI)는 제 2 영역(예컨대, "5"의 메모리 인덱스를 갖는 메모리 영역)에 저장될 수 있다. 또는, 구성 메모리(2450a)가 컨트롤러(2430a)의 제어에 따라 확장 롬 영역을 개방할 수 있고, 확장 롬 영역이 자가 설정 값(SSV)을 갖는 설정 정보(STI)를 저장할 수 있다. 이러한 실시 예들에서, 구성 메모리(2450a)를 위한 자가 리셋 동작이 수행되지 않더라도, 메인 프로세서(2100)와 컨트롤러(2430a) 사이의 일반 통신은 자가 설정 값(SSV)의 영향을 받지 않을 수 있다.
도 7은 도 2의 연결 구조에서 수행되는 예시적인 자가 리셋 동작을 설명하는 개념도이다.
컨트롤러(2430a)의 구성 관리기(2431a)는 부트 업 명령어(BUI)의 데이터가 외부 장치(예컨대, 메인 프로세서(2100))로 완전히 제공되었는지 여부를 판별할 수 있다. 부트 업 명령어(BUI)의 데이터가 메인 프로세서(2100)로 완전히 제공된 것으로 판별된 경우, 구성 관리기(2431a)는 자가 리셋 동작을 수행할 수 있다.
자가 리셋 동작에서, 구성 관리기(2431a)는 자가 설정 값(SSV)을 갖는 상태 정보(STI)를 해제 및 초기화할 수 있다(동작 ⑤). 부트 업 명령어(BUI)의 데이터가 메인 프로세서(2100)로 완전히 제공된 경우, 자가 설정 값(SSV)은 더 이상 참조되지 않을 수 있다. 따라서, 구성 관리기(2431a)는 자가 설정 값(SSV)을 해제하여 구성 메모리(2450a)를 초기화할 수 있다. 예로서, "해제"는 자가 설정 값(SSV) 자체를 삭제하는 것, 및/또는 자가 설정 값(SSV)에 대한 참조 링크(Reference Link)를 끊는(Disconnect) 것을 포함할 수 있다.
몇몇 실시 예에서, 구성 관리기(2431a)는 부트 업 명령어(BUI)의 데이터 양에 관한 정보를 미리(예로서, 저장 장치(2400a)가 동작하기 전에 미리) 식별할 수 있다. 나아가, 구성 관리기(2431a)는 저장 장치(2400a), 불휘발성 메모리(2410), 또는 컨트롤러(2430a)로부터 출력되는 부트 업 명령어(BUI)의 데이터 양을 모니터링할 수 있다. 구성 관리기(2431a)는 모니터링된 데이터 양에 기초하여, 부트 업 명령어(BUI)의 데이터가 메인 프로세서(2100)로 완전히 제공되었는지 여부를 판별할 수 있다. 예로서, 모니터링된 데이터 양이 미리 식별된 데이터 양 이상인 경우(즉, 부트 업 명령어(BUI)의 데이터의 전부가 메인 프로세서(2100)로 출력된 경우), 구성 관리기(2431a)는 부트 업 명령어(BUI)의 데이터가 메인 프로세서(2100)로 완전히 제공된 것으로 판별할 수 있다.
몇몇 실시 예에서, 메인 프로세서(2100)가 저장 장치(2400a)로부터 수신되는 부트 업 명령어(BUI)의 데이터 양을 모니터링할 수 있다. 부트 업 명령어(BUI)의 데이터의 전부가 완전히 수신된 경우, 메인 프로세서(2100)는 저장 장치(2400a)로 완료 응답 또는 나열/구성 커맨드를 전송할 수 있다. 구성 관리기(2431a)는 메인 프로세서(2100)로부터의 완료 응답 또는 나열/구성 커맨드에 응답하여, 부트 업 명령어(BUI)의 데이터가 메인 프로세서(2100)로 완전히 제공된 것으로 판별할 수 있다. (부트 업 명령어(BUI)의 수신 완료를 알리기 위해 나열/구성 커맨드가 이용되는 경우, 도 3의 S150 동작은 도 3의 S140 동작 이전에 수행될 수 있다.)
몇몇 실시 예에서, 저장 장치(2400a)는 (도 9를 참조하여 설명될 것과 같이) 메인 인터페이스 규약(예컨대, PCIe 등)과 상이한 사이드밴드 인터페이스 규약에 따라 메인 프로세서(2100a)와 더 통신할 수 있다. 이러한 실시 예에서, 메인 프로세서(2100)는 부트 업 명령어(BUI)의 수신 완료를 알리기 위해, 사이드밴드 인터페이스 규약에 따라 저장 장치(2400a)로 완료 응답을 전송할 수 있다. 구성 관리기(2431a)는 이 완료 응답에 응답하여, 부트 업 명령어(BUI)의 데이터가 메인 프로세서(2100)로 완전히 제공된 것으로 판별할 수 있다.
도 8은 도 2의 연결 구조에서 수행되는 예시적인 일반 통신을 설명하는 개념도이다.
메인 프로세서(2100)는 저장 장치(2400a)로부터 수신된 부트 업 명령어(BUI)에 기초하여 부팅 동작을 수행하는 동안, 나열/구성 동작을 수행할 수 있다. 메인 프로세서(2100)는 나열/구성 동작에 따라, 종단 장치들을 인식할 수 있고 통신 환경들을 설정할 수 있다. 예로서, 메인 프로세서(2100)는 저장 장치(2400a)에 대한 나열/구성 동작을 수행하기 위해, 저장 장치(2400a)로 나열/구성 커맨드를 전송할 수 있다(동작 ⑥).
컨트롤러(2430a)는 나열/구성 커맨드에 기초하여, 구성 동작을 수행할 수 있다. 구성 동작에서, 컨트롤러(2430a)는 구성 메모리(2450a)에 설정 정보(STI)를 새로 저장할 수 있다(동작 ⑦). 새로 저장되는 설정 정보(STI)는 메인 프로세서(2100)와의 일반 통신이 수행되는 환경과 관련될 수 있다. 따라서, 컨트롤러(2430a)는 새로 저장되는 설정 정보(STI)에 의해 정의되는 환경 하에서, 메인 프로세서(2100)와의 일반 통신을 수행할 수 있다(동작 ⑧). 예로서, 일반 통신은 커맨드 및 응답의 교환, 데이터의 송신/수신 등 통상적인 통신을 포함할 수 있다.
위 과정들에 따라, 컨트롤러(2430a)는 자가 설정 값(SSV)을 갖는 설정 정보(STI)를 해제하고 구성 메모리(2450a)를 초기화한 후, 나열/구성 커맨드에 기초하여 구성 메모리(2450a)에 설정 정보(STI)를 새로 저장할 수 있다. 새로 저장되는 설정 정보(STI)는 자가 설정 값(SSV)과 동일한 값을 포함하거나, 자가 설정 값(SSV)과 상이한 값을 포함할 수 있다.
도 9는 도 2의 전자 장치들 사이의 예시적인 사이드밴드 통신을 설명하기 위한 개념도이다.
저장 장치(2400b)는 불휘발성 메모리(들)(2410), 컨트롤러(2430b), 및 구성 메모리(2450a)를 포함할 수 있다. 저장 장치(2400b)는 루트 컴플렉스(2005)를 통해 메인 프로세서(2100)와 연결되고 통신할 수 있다.
루트 컴플렉스(2005), 메인 프로세서(2100), 불휘발성 메모리(2410), 및 구성 메모리(2450a)는 도 2 내지 도 8을 참조하여 설명되었다. 저장 장치(2400b), 컨트롤러(2430b), 및 구성 관리기(2431b)의 구성들 및 동작들은 도 2 내지 도 8을 참조하여 설명된 저장 장치(2400a), 컨트롤러(2430a), 및 구성 관리기(2431a)의 구성들 및 동작들을 각각 포함할 수 있다. 설명의 편의를 위해, 중복되는 설명들은 이하 생략될 것이다.
메인 프로세서(2100) 및 저장 장치(2400b)는 메인 인터페이스 규약에 따라 제 1 통신(R1)을 수행할 수 있다. 예로서, 위에서 가정된 것과 같이, 메인 인터페이스 규약은 PCIe 통신 규약과 관련될 수 있다. 그러나, 본 발명은 이에 한정되지 않고, 메인 인터페이스 규약은 NVMe, SCSI, ATA, SATA, PATA, SAS, UFS 등과 같은 다른 통신 규약들 중 적어도 하나와 관련될 수 있다.
예로서, 메인 프로세서(2100)와 저장 장치(2400b) 사이의 제 1 통신(R1)은 일반 통신을 포함할 수 있다(도 3의 S160 동작 참조). 예로서, 제 1 통신(R1)에 따라, 메인 프로세서(2100)는 저장 장치(2400b)로 메모리 읽기 요청을 제공할 수 있고(도 3의 S123 동작 참조), 나열/구성 커맨드를 제공할 수 있다(도 3의 S150 동작 참조). 예로서, 제 1 통신(R1)에 따라, 저장 장치(2400b)는 부트 업 명령어(BUI)의 데이터를 메인 프로세서(2100)로 제공할 수 있다(도 3의 S126 동작 참조).
몇몇 실시 예에서, 메인 프로세서(2100) 및 저장 장치(2400b)는 사이드밴드 인터페이스 규약에 따라 제 2 통신(R2)을 수행할 수 있다. 사이드밴드 인터페이스 규약은 메인 인터페이스 규약과 별개로, 2차(Secondary) 정보를 교환하기 위해 채용될 수 있다. 예로서, 사이드밴드 인터페이스 규약은 I2C(Inter Integrated Circuit), SMBus(System Management Bus) 등 중 적어도 하나와 관련될 수 있으나, 본 발명은 이에 한정되지는 않는다.
예로서, 메인 프로세서(2100)는 제 1 통신(R1)에 따라 메모리 읽기 요청을 저장 장치(2400b)로 제공하기 전에, 제 2 통신(R2)에 따라 선행 요청을 저장 장치(2400b)로 제공할 수 있다. 컨트롤러(2430b)는 선행 요청에 기초하여, 메인 프로세서(2100)가 곧 메모리 읽기 요청을 전송할 것임을 인지할 수 있다. 따라서, 컨트롤러(2430b)는 선행 요청에 응답하여, 구성 관리기(2431b)를 실행할 수 있다. 구성 관리기(2431b)는 선행 요청에 응답하여, 자가 설정 값(SSV)을 갖는 설정 정보(STI)를 구성 메모리(2450a)에 저장할 수 있다.
예로서, 메인 프로세서(2100)는 부트 업 명령어(BUI)의 수신 완료를 알리기 위해, 제 2 통신(R2)에 따라 저장 장치(2400b)로 완료 응답을 전송할 수 있다. 구성 관리기(2431b)는 완료 응답에 응답하여, 부트 업 명령어(BUI)의 데이터가 메인 프로세서(2100)로 완전히 제공된 것으로 판별할 수 있다.
도 10은 도 1의 전자 장치들 사이의 예시적인 연결 구조를 보여주는 블록도이다. 예로서, 도 1의 컴퓨팅 장치(1000)는 전자 장치들(예컨대, 1100, 1200, 1400, 1500, 1600 등)을 연결하기 위해 PCI/PCIe 패브릭(2000c)을 채용할 수 있다.
예로서, PCI/PCIe 패브릭(2000c)은 루트 컴플렉스(2005), 메인 프로세서(2100), 워킹 메모리(2200), 및 종단 장치들(2400c, 2500, 2600)을 포함할 수 있다. 예로서, 종단 장치(2400c)는 저장 장치로 구현될 수 있고(이하, 저장 장치(2400c)로 언급됨), 불휘발성 메모리(들)(2410), 컨트롤러(2430c), 구성 로직 회로(2431c), 및 구성 메모리(2450c)를 포함할 수 있다.
루트 컴플렉스(2005), 메인 프로세서(2100), 워킹 메모리(2200), 불휘발성 메모리(2410), 및 종단 장치들(2500, 2600)은 도 2 내지 도 9를 참조하여 설명되었다. 컨트롤러(2430c)가 도 2의 구성 관리기(2431a) 또는 도 9의 구성 관리기(2431b)를 포함하지 않음을 제외하면, 컨트롤러(2430c) 및 구성 메모리(2450c)의 구성들 및 동작들은 도 2 내지 도 9를 참조하여 설명된 컨트롤러(2430a 또는 2430b) 및 구성 메모리(2450a)의 구성들 및 동작들을 포함할 수 있다. 설명의 편의를 위해, 중복되는 설명들은 이하 생략될 것이다.
구성 로직 회로(2431c)는 도 2 내지 도 9를 참조하여 설명된 자가 구성 동작을 수행하도록 구성될 수 있다. 구성 메모리(2450c)가 외부 장치(예컨대, 메인 프로세서(2100))로부터의 나열/구성 커맨드에 기초하여 설정 정보(STI)를 저장하기 전에, 구성 로직 회로(2431c)는 자가 구성 동작에 따라 자가 설정 값(SSV)을 갖는 설정 정보(STI)를 구성 메모리(2450c)에 저장할 수 있다.
컨트롤러(2430c)는 자가 설정 값(SSV)에 의해 정의되는 환경 하에서, 메인 프로세서(2100)로부터 수신되는 메모리 읽기 요청에 응답하여, 부트 업 명령어(BUI)를 불휘발성 메모리(2410)로부터 읽을 수 있다. 컨트롤러(2430c)는 읽힌 부트 업 명령어(BUI)의 데이터를 메인 프로세서(2100)로 제공할 수 있다. 따라서, 자가 구성 동작에서 저장된 자가 설정 값(SSV)에 기초하여, 메인 프로세서(2100)는 부트 업 명령어(BUI)를 실행하기 전에 저장 장치(2400c)와 통신할 수 있다.
구성 로직 회로(2431c)는 이러한 자가 구성 동작을 수행하기 위해 하나 이상의 아날로그 및/또는 디지털 회로들을 포함하는 하드웨어 회로로 구현될 수 있다. 구성 로직 회로(2431c)의 예시적인 구성 및 동작이 도 11을 참조하여 설명될 것이다.
도 11은 도 10의 연결 구조에 기초한 구성 로직 회로의 예시적인 구성 및 동작을 보여주는 개념도이다. 몇몇 실시 예에서, 구성 로직 회로(2431c)는 주소 추출기(2432), 분석기(2433), 및 구성 설정기(2434)를 포함할 수 있다.
주소 추출기(2432)는 메인 프로세서(2100)로부터 수신되는 메모리 읽기 요청의 전송 경로에 연결될 수 있다. 주소 추출기(2432)는 메모리 읽기 요청이 메인 프로세서(2100)로부터 수신되는지 여부를 모니터링할 수 있다. 메모리 읽기 요청이 수신되는 경우, 주소 추출기(2432)는 수신된 메모리 읽기 요청에 대응하는 신호 어드레스를 수신된 메모리 읽기 요청으로부터 추출할 수 있다. 예로서, 주소 추출기(2432)는 수신된 메모리 읽기 요청의 데이터 포맷에서 신호 어드레스를 설명하는 필드를 스누핑(Snooping)할 수 있다.
분석기(2433)는 주소 추출기(2432)에 의해 추출된 신호 어드레스를 분석할 수 있다. 분석기(2433)는 추출된 신호 어드레스를 포함하는 신호 어드레스 범위를 정의할 수 있다. 예로서, 분석기(2433)는 신호 어드레스 범위를 정의하기 위해 신호 어드레스 범위의 상한 값 및/또는 하한 값을 선택할 수 있다.
구성 설정기(2434)는 분석기(2433)에 의해 정의된 신호 어드레스 범위에 기초하여, 자가 설정 값(SSV)을 갖는 설정 정보(STI)를 구성 메모리(2450c)에 저장할 수 있다. 예로서, 구성 설정기(2434)는 신호 어드레스 범위의 상한 값 및/또는 하한 값을 자가 설정 값(SSV)으로서 구성 메모리(2450c)에 저장할 수 있다.
따라서, 구성 메모리(2450c)에 저장되는 자가 설정 값(SSV)은 메인 프로세서(2100)로부터의 메모리 읽기 요청을 수신하고 처리하기 위한 환경을 정의할 수 있다. 컨트롤러(2430c)는 자가 설정 값(SSV)(예컨대, 상한 값 및/또는 하한 값)에 기초하여, 주소 추출기(2432)에 의해 추출된 신호 어드레스를 갖는 메모리 읽기 요청을 메인 프로세서(2100)로부터 수신할 수 있다.
예로서, 메모리 읽기 요청이 "0xA000"의 신호 어드레스를 갖는 경우, 분석기(2433)는 하한 값 "0x0000" 및 상한 값 "0xF000"에 의해 정의되는 신호 어드레스 범위를 선택할 수 있다. 나아가, 구성 설정기(2434)는 하한 값 "0x0000" 및 상한 값 "0xF000"(또는, 상한 값 "0xF000"만)을 자가 설정 값(SSV)으로서 구성 메모리(2450c)에 저장할 수 있다. 따라서, 컨트롤러(2430c)는 하한 값 "0x0000"과 상한 값 "0xF000" 사이의 신호 어드레스 범위에 포함되는 신호 어드레스 "0xA000"를 갖는 메모리 읽기 요청을 수신할 수 있다.
다만, 위 실시 예는 더 나은 이해를 돕기 위한 예시로서 제공된 것이고, 본 발명을 한정하기 위한 것은 아니다. 구성 로직 회로(2431c)의 구성 및 동작은 다양하게 변경 또는 수정될 수 있다.
몇몇 다른 실시 예에서, 구성 로직 회로(2431c)는 모든 입력이 수신되도록 허용하는 자가 설정 값(SSV)을 구성 메모리(2450c)에 저장하도록 구성될 수 있다. 예로서, 구성 로직 회로(2431c)는 메인 프로세서(2100)로부터 출력되는 모든 신호들의 신호 어드레스들의 최대 값을 상한 값으로서 구성 메모리(2450c)에 저장할 수 있다. 나아가, 구성 로직 회로(2431c)는 메인 프로세서(2100)로부터 출력되는 모든 신호들의 신호 어드레스들의 최소 값을 하한 값으로서 구성 메모리(2450c)에 저장할 수 있다.
이 예에 따르면, 컨트롤러(2430c)는 그 최대 값과 그 최소 값 사이의 신호 어드레스를 갖는 어떠한 입력이든 수신할 수 있다. 따라서, 컨트롤러(2430c)는 메모리 읽기 요청의 신호 어드레스와 무관하게, 메인 프로세서(2100)로부터 메모리 읽기 요청을 수신할 수 있다. 이를 위해, 구성 로직 회로(2431c)는 메인 프로세서(2100)로부터 출력되는 신호들의 신호 어드레스들의 최대 값 및 최소 값에 관한 정보를 미리(예컨대, 저장 장치(2400c)가 동작하기 전에 미리) 알도록 구성될 수 있다.
도 12는 도 1의 전자 장치들 사이의 예시적인 연결 구조를 보여주는 블록도이다. 예로서, 도 1의 컴퓨팅 장치(1000)는 전자 장치들(예컨대, 1100, 1200, 1400, 1500, 1600 등)을 연결하기 위해 PCI/PCIe 패브릭(2000d)을 채용할 수 있다.
예로서, PCI/PCIe 패브릭(2000d)은 루트 컴플렉스(2005), 메인 프로세서(2100), 워킹 메모리(2200), 종단 장치들(2400d, 2500, 2600), 및 스위치 장치(2800)를 포함할 수 있다. 예로서, 종단 장치(2400d)는 저장 장치로 구현될 수 있고(이하, 저장 장치(2400d)로 언급됨), 불휘발성 메모리(들)(2410), 컨트롤러(2430d), 및 종단 구성 메모리(2450d)를 포함할 수 있다. 컨트롤러(2430d)는 구성 관리기(2431d)를 포함(예컨대, 실행)할 수 있다.
루트 컴플렉스(2005), 메인 프로세서(2100), 워킹 메모리(2200), 불휘발성 메모리(2410), 및 종단 장치들(2500, 2600)은 도 2 내지 도 9를 참조하여 설명되었다. 저장 장치(2400d), 컨트롤러(2430d), 구성 관리기(2431d), 및 종단 구성 메모리(2450d)의 구성들 및 동작들은 도 2 내지 도 9를 참조하여 설명된 저장 장치(2400a 또는 2400b), 컨트롤러(2430a 또는 2430b), 구성 관리기(2431a 또는 2431b), 및 구성 메모리(2450a)의 구성들 및 동작들을 각각 포함할 수 있다. 설명의 편의를 위해, 중복되는 설명들은 이하 생략될 것이다.
스위치 장치(2800)는 루트 컴플렉스(2005)와 종단 장치들(2400d, 2500, 2600) 사이에 연결될 수 있다. 종단 장치들(2400d, 2500, 2600)은 스위치 장치(2800) 및 루트 컴플렉스(2005)를 통해 메인 프로세서(2100)와 통신할 수 있다. 스위치 장치(2800)는 PCI/PCIe 패브릭(2000d)의 동작 정책에 따라, 종단 장치들(2400d, 2500, 2600)과 메인 프로세서(2100) 사이에서 커맨드, 요청, 쿼리, 데이터, 신호, 패킷 등의 전송 경로들을 제공할 수 있다. 예로서, 스위치 장치(2800)는 PCI/PCIe 스위치에 대응할 수 있다. 스위치 장치(2800)의 예시적인 구성 및 동작이 도 13을 참조하여 설명될 것이다.
도 13은 도 12의 연결 구조에서 수행되는 예시적인 자가 구성 동작을 설명하는 개념도이다.
스위치 장치(2800)는 호스트 포트(2810) 및 복수의 종단 포트(2820, 2830, 2840)를 포함할 수 있다. 호스트 포트(2810)는 호스트(예컨대, 메인 프로세서(2100))로 연결될 수 있다. 종단 포트들(2820, 2830, 2840)은 각각 종단 장치들(2400d, 2500, 2600)과 연결될 수 있다. 도 13은 세 개의 종단 포트들(2820, 2830, 2840)을 보여주지만, 종단 포트들의 개수는 다양하게 변경 또는 수정될 수 있다.
스위치 장치(2800)는 스위치 구성 메모리들(2811, 2821, 2831, 2841)을 포함할 수 있다. 스위치 구성 메모리(2811)는 호스트 포트(2810)를 통해 호스트와의 통신이 수행되는 환경에 관한 설정 정보(STI1)를 저장할 수 있다. 호스트 포트(2810)는 설정 정보(STI1)에 의해 정의되는 환경 하에서, 커맨드, 요청, 쿼리, 데이터, 신호, 패킷 등의 전송 경로를 제공할 수 있다. 예로서, 호스트 포트(2810)는 설정 정보(STI1)의 신호 어드레스 범위에 포함되는 신호 어드레스를 갖는 나열/구성 커맨드의 전송 경로를 제공할 수 있다.
스위치 구성 메모리들(2821, 2831, 2841)은 종단 포트들(2820, 2830, 2840)을 통해 호스트와의 통신이 수행되는 환경들에 관한 설정 정보(STI2, STI3, STI4)를 각각 저장할 수 있다. 종단 포트들(2820, 2830, 2840)은 각각 설정 정보(STI2, STI3, STI4)에 의해 정의되는 환경들 하에서, 커맨드, 요청, 쿼리, 데이터, 신호, 패킷 등의 전송 경로들을 제공할 수 있다.
종단 장치들(2400d, 2500, 2600) 중에서 부트 업 명령어(BUI)를 저장하는 저장 장치(2400d)는 "대상(Target) 종단 장치"로 언급될 수 있다. 나아가, 대상 종단 장치(2400d)로 연결되는 종단 포트(2820)는 "대상 종단 포트"로 언급될 수 있다.
구성 관리기(2431d)는 도 2 내지 도 9를 참조하여 설명된 자가 구성 동작을 수행할 수 있다. 종단 구성 메모리(2450d)는 스위치 장치(2800)를 통해 호스트(예컨대, 메인 프로세서(2100))와의 통신이 수행되는 환경에 관한 설정 정보(STI)를 저장할 수 있다. 종단 구성 메모리(2450d)가 호스트로부터의 나열/구성 커맨드에 기초하여 설정 정보(STI)를 저장하기 전에, 구성 관리기(2431d)는 자가 구성 동작에 따라 자가 설정 값(SSV)을 갖는 설정 정보(STI)를 종단 구성 메모리(2450d)에 저장할 수 있다.
나아가, 구성 관리기(2431d)의 자가 구성 동작은 스위치 장치(2800)를 위해서도 수행될 수 있다. 예로서, 스위치 구성 메모리들(2811, 2821, 2831, 2841)이 메인 프로세서(2100)로부터의 나열/구성 커맨드에 기초하여 설정 정보(STI1, STI2, STI3, STI4)를 저장하기 전에, 스위치 장치(2800)는 대상 종단 장치(2400d)의 제어에 따라(즉, 구성 관리기(2431d)의 자가 구성 동작에 따라) 자가 설정 값(SSV1)을 갖는 설정 정보(STI1)를 호스트 포트(2810)에 대응하는 스위치 구성 메모리(2811)에 저장할 수 있고, 자가 설정 값(SSV2)을 갖는 설정 정보(STI2)를 대상 종단 포트(2820)에 대응하는 스위치 구성 메모리(2821)에 저장할 수 있다.
호스트 포트(2810) 및 대상 종단 포트(2820)는 자가 설정 값들(SSV1, SSV2)에 의해 정의되는 환경들 하에서 전송 경로를 제공할 수 있다. 예로서, 스위치 장치(2800)는 호스트 포트(2810) 및 대상 종단 포트(2820)를 통해, 메인 프로세서(2100)로부터 수신되는 메모리 읽기 요청을 대상 종단 장치(2400d)로 전달할 수 있다. 나아가, 스위치 장치(2800)는 대상 종단 포트(2820) 및 호스트 포트(2810)를 통해, 메모리 읽기 요청에 응답하여 대상 종단 장치(2400d)로부터 출력되는 부트 업 명령어(BUI)의 데이터를 메인 프로세서(2100)로 전달할 수 있다. 따라서, 나열/구성 동작이 아직 수행되지 않았더라도, 대상 종단 장치(2400d)는 스위치 장치(2800)를 통해 부트 업 명령어(BUI)의 데이터를 메인 프로세서(2100)로 제공할 수 있다.
몇몇 실시 예에서, 스위치 장치(2800)는 자가 구성 동작 동안, 자가 설정 값들(SSV1, SSV2)을 갖는 설정 정보(STI1, STI2)를 스위치 구성 메모리(2811, 2821)에만 저장할 수 있다. 반면, 스위치 구성 메모리들(2831, 2841)은 자가 구성 동작 동안 자가 설정 값들(SSV3, SSV4)을 갖는 설정 정보(STI3, STI4)를 저장하지 않을 수 있다. 이러한 실시 예에서, 스위치 장치(2800)는 메인 프로세서(2100)로부터의 메모리 읽기 요청을 대상 종단 장치(2400d)로만 전달할 수 있고, 다른 종단 장치들(2500, 2600)로는 메모리 읽기 요청을 전달하지 않을 수 있다.
몇몇 실시 예에서, 스위치 장치(2800)는 자가 구성 동작 동안, 자가 설정 값들(SSV3, SSV4)을 갖는 설정 정보(STI3, STI4)를 스위치 구성 메모리들(2831, 2841)에 저장할 수 있다. 이러한 실시 예에서, 스위치 장치(2800)는 메인 프로세서(2100)로부터의 메모리 읽기 요청을 대상 종단 장치(2400d) 및 다른 종단 장치들(2500, 2600) 모두로 전달할 수 있다. 그러나, 종단 장치들(2500, 2600)은 부트 업 명령어(BUI)를 저장하지 않기 때문에, 메모리 읽기 요청을 무시하거나 오류 응답을 출력할 수 있다. 또는, 스위치 장치(2800)는 종단 장치들(2500, 2600)로부터 메모리 읽기 요청에 대응하는 응답을 수신하지 않을 수 있다. 따라서, 스위치 장치(2800)는 메모리 읽기 요청에 대응하는 응답을 대상 종단 장치(2400d)로부터만 수신할 수 있다.
도 12 및 도 13에서, 대상 종단 장치(2400d)의 컨트롤러(2430d)가 구성 관리기(2431d)를 포함(예컨대, 실행)하는 것으로 설명되었다. 그러나, 구성 관리기(2431d)의 일부 또는 전부는 대상 종단 장치(2400d)의 외부에 구현될 수 있다. 예로서, 구성 관리기(2431d)의 일부 또는 전부는 스위치 장치(2800)에 포함될 수 있다. 구성 관리기(2431d)의 구현은 자가 구성 동작을 수행하기 위해 다양하게 변경 또는 수정될 수 있다. 몇몇 실시 예에서, 구성 관리기(2431d)의 일부 또는 전부는 도 10 및 도 11을 참조하여 설명된 구성 로직 회로(2431c)와 동일 또는 유사하게 하드웨어 회로로 구현될 수 있다.
도 14는 도 1의 전자 장치들 사이의 예시적인 연결 구조를 보여주는 블록도이다. 예로서, 도 1의 컴퓨팅 장치(1000)는 전자 장치들(예컨대, 1100, 1200, 1400, 1500, 1600 등)을 연결하기 위해 연결 구조(3000)를 채용할 수 있다.
연결 구조(3000)는 루트 컴플렉스(3005), 메인 프로세서(3100), 워킹 메모리(3200), PCIe 장치(3400), NVMe 장치(3500), HBA(Host Bus Adapter, 3600), SAS 장치(3610), 및 SATA 장치(3620)를 포함할 수 있다. 루트 컴플렉스(3005), 메인 프로세서(3100), 및 워킹 메모리(3200)의 구성들 및 동작들은 도 2 내지 도 13을 참조하여 설명된 루트 컴플렉스(2005), 메인 프로세서(2100), 및 워킹 메모리(2200)의 구성들 및 동작들을 포함할 수 있다. 설명의 편의를 위해, 중복되는 설명들은 이하 생략될 것이다.
도 2 내지 도 13을 참조하여 설명된 것과 같이, PCIe 통신 규약을 채용한 PCIe 장치(3400)는 루트 컴플렉스(3005)를 통해 메인 프로세서(3100)와 통신할 수 있다. 게다가, NVMe 통신 규약을 채용한 NVMe 장치(3500) 역시 루트 컴플렉스(3005)를 통해 메인 프로세서(3100)와 통신할 수 있다. 몇몇 경우, SAS 통신 규약을 채용한 SAS 장치(3610) 및 SATA 통신 규약을 채용한 SATA 장치(3620)는 HBA(3600)를 통해 루트 컴플렉스(3005)와 연결될 수 있다. 예로서, HBA(3600)는 SAS 장치(3610) 및 SATA 장치(3620)를 위해 인터페이스 변환(Interface Translation)을 처리할 수 있다.
PCIe 장치(3400) 뿐만 아니라, NVMe 장치(3500), SAS 장치(3610), 및 SATA 장치(3620) 각각 역시 부트 업 명령어(BUI)를 저장할 수 있다. PCIe 장치(3400), NVMe 장치(3500), SAS 장치(3610), 및 SATA 장치(3620) 각각은 나열/구성 동작이 수행되기 전에 메인 프로세서(3100)로 부트 업 명령어(BUI)를 제공하기 위해, 자가 구성 동작을 수행할 수 있다. 즉, 도 2 내지 도 13을 참조하여 설명된 실시 예들은 PCIe 외의 다양한 통신 규약에 적용될 수 있다.
도 2 내지 도 13에서, 저장 장치(2400a, 2400b, 2400c, 또는 2400d)가 부트 업 명령어(BUI)를 저장하는 것으로 설명되었다. 그러나, 부트 업 명령어(BUI)는 저장 장치 외의 다른 유형의 종단 장치에 저장될 수 있다. 부트 업 명령어(BUI)는 그래픽 처리 장치, 통신 장치 등, 메모리를 포함하는 어떠한 유형의 종단 장치에든 저장될 수 있다.
도 15는 본 발명의 실시 예에 따른 전자 장치의 구성 및 그것의 인터페이스들을 나타낸 블록도이다. 전자 장치(4000)는 MIPI 연합(Mobile Industry Processor Interface Alliance)에 의해 제안된 인터페이스 규약을 이용하거나 지원할 수 있는 데이터 처리 장치로 구현될 수 있다. 예로서, 전자 장치(4000)는 휴대용 통신 단말기, PDA(Personal Digital Assistant), PMP(Portable Media Player), 스마트 폰, 태블릿 컴퓨터, 웨어러블 장치 등과 같은 전자 장치들 중 하나일 수 있다.
전자 장치(4000)는 어플리케이션 프로세서(4100), 디스플레이(4220), 및 이미지 센서(4230)를 포함할 수 있다. 어플리케이션 프로세서(4100)는 DigRF 마스터(4110), DSI(Display Serial Interface) 호스트(4120), CSI(Camera Serial Interface) 호스트(4130), 물리 계층(4140), 및 UFS HCI(UFS Host-Controller Interface, 4150)를 포함할 수 있다.
DSI 호스트(4120)는 DSI에 따라 디스플레이(4220)의 DSI 장치(4225)와 통신할 수 있다. 예로서, DSI 호스트(4120)에는 광 시리얼라이저(SER)가 구현될 수 있고, DSI 장치(4225)에는 광 디시리얼라이저(DES)가 구현될 수 있다.
CSI 호스트(4130)는 CSI에 따라 이미지 센서(4230)의 CSI 장치(4235)와 통신할 수 있다. 예로서, CSI 호스트(4130)에는 광 디시리얼라이저(DES)가 구현될 수 있고, CSI 장치(4235)에는 광 시리얼라이저(SER)가 구현될 수 있다.
전자 장치(4000)는 어플리케이션 프로세서(4100)와 통신하는 RF(Radio Frequency) 칩(4240)을 더 포함할 수 있다. RF 칩(4240)은 물리 계층(4242), DigRF 슬레이브(4244), 및 안테나(4246)를 포함할 수 있다. 예로서, RF 칩(4240)의 물리 계층(4242) 및 어플리케이션 프로세서(4100)의 물리 계층(4140)은 MIPI 연합에 의해 제안된 DigRF 인터페이스에 의해 서로 데이터를 교환할 수 있다.
전자 장치(4000)는 워킹 메모리(4250) 및 임베디드/카드 스토리지 장치(4255)를 더 포함할 수 있다. 워킹 메모리(4250)는 어플리케이션 프로세서(4100)에 의해 처리된 또는 처리될 데이터를 일시적으로 저장할 수 있다. 워킹 메모리(4250)는 SRAM, DRAM, SDRAM 등과 같은 휘발성 메모리, 및/또는 플래시 메모리, PRAM, MRAM, ReRAM, FRAM 등과 같은 불휘발성 메모리를 포함할 수 있다.
임베디드/카드 스토리지 장치(4255)는 어플리케이션 프로세서(4100)로부터 제공받은 데이터를 저장하거나, 저장된 데이터를 어플리케이션 프로세서(4100)로 제공할 수 있다. 임베디드/카드 스토리지 장치(4255)는 전력 공급 여부에 관계없이 데이터를 저장할 수 있다. 예로서, 임베디드/카드 스토리지 장치(4255)는 어플리케이션 프로세서(4100)의 부팅 동작에 이용되는 부트 업 명령어(BUI)를 저장할 수 있다.
예로서, 임베디드/카드 스토리지 장치(4255)는 UFS 통신 규약에 따라 어플리케이션 프로세서(4100)와 통신할 수 있다. 이 예에서, 어플리케이션 프로세서(4100)는 UFS HCI(4150)를 통해 임베디드/카드 스토리지 장치(4255)와의 통신을 처리할 수 있다. 예로서, UFS HCI(4150)는 UFS 통신 규약에 정의된 링크 스타트업(Link Startup) 프로세스에 따라 임베디드/카드 스토리지 장치(4255)를 인식할 수 있다.
링크 스타트업 프로세스가 완료되기 전에, UFS HCI(4150)는 임베디드/카드 스토리지 장치(4255)와 통신하지 못할 수 있다. 따라서, 본 발명의 실시 예에서, 임베디드/카드 스토리지 장치(4255)는 링크 스타트업 프로세스가 개시되기 전에 부트 업 명령어(BUI)의 데이터를 어플리케이션 프로세서(4100)로 제공하기 위해, 자가 구성 동작을 수행할 수 있다. 자가 구성 동작은 도 2 내지 도 13을 참조하여 설명된 것과 유사하게 수행될 수 있다. 설명의 편의를 위해, 중복되는 설명들은 이하 생략될 것이다.
전자 장치(4000)는 WiMax(4260), WLAN(Wireless Local Area Network, 4262), UWB(Ultra Wideband, 4264) 등과 같은 통신 모듈을 통해 외부 장치/시스템과 통신할 수 있다. 이 외에도, 전자 장치(4000)는 LTE, GSM, CDMA, Bluetooth, NFC, WiFi, RFID 등의 다양한 무선 통신 규약 중 적어도 하나, 및/또는 TCP/IP, USB, SCSI, M-PCIe(Mobile PCIe), Firewire 등의 다양한 유선 통신 규약 중 적어도 하나에 따라 외부 장치/시스템과 통신할 수 있다.
전자 장치(4000)는 음성 정보를 처리하기 위한 스피커(4270) 및 마이크(4275)를 더 포함할 수 있다. 나아가, 전자 장치(4000)는 위치 정보를 처리하기 위한 GPS(Global Positioning System) 장치(4280)를 더 포함할 수 있다. 전자 장치(4000)는 주변 장치들과의 연결을 관리하기 위한 브릿지(Bridge) 칩(4290)을 더 포함할 수 있다.
위에서 설명된 내용은 본 발명의 기술 사상을 구현하기 위한 구체적인 예들이다. 본 발명의 기술 사상은 위에서 설명된 실시 예들뿐만 아니라, 단순하게 설계 변경하거나 용이하게 변경하여 얻어질 수 있는 실시 예들도 포함할 것이다. 또한, 본 발명의 기술 사상에는 위에서 설명된 실시 예들에 기초하여 앞으로 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다.
1000 : 컴퓨팅 장치 1700 : 버스
2000a, 2000c, 2000d : PCI/PCIe 패브릭
3000 : 연결 구조 4000 : 전자 장치

Claims (20)

  1. 부트 업 명령어(Boot-up Instruction)의 데이터를 저장하도록 구성되는 제 1 메모리;
    외부 장치와의 통신이 수행되는 환경에 관한 설정 정보를 저장하도록 구성되는 제 2 메모리; 및
    상기 제 2 메모리가 상기 외부 장치로부터의 커맨드에 기초하여 상기 설정 정보를 저장하기 전에 자가 설정 값(Self-setting Value)을 갖는 상기 설정 정보를 상기 제 2 메모리에 저장하고, 상기 자가 설정 값에 의해 정의되는 환경 하에서 상기 외부 장치로부터 수신되는 메모리 읽기 요청에 응답하여 상기 부트 업 명령어의 상기 데이터를 상기 외부 장치로 제공하도록 구성되는 컨트롤러를 포함하는 전자 장치.
  2. 제 1 항에 있어서,
    상기 부트 업 명령어는 BIOS(Basic Input/Output System), EFI(Extensible Firmware Interface), 및 UEFI(Unified EFI) 중 적어도 하나와 관련되는 전자 장치.
  3. 제 1 항에 있어서,
    상기 컨트롤러는, 상기 부트 업 명령어의 상기 데이터가 상기 외부 장치로 완전히 제공된 것으로 판별한 경우, 상기 자가 설정 값을 갖는 상기 설정 정보를 해제하고 상기 제 2 메모리를 초기화하도록 더 구성되는 전자 장치.
  4. 제 3 항에 있어서,
    상기 컨트롤러는 상기 부트 업 명령어의 상기 데이터의 전부가 상기 외부 장치로 출력된 것에 응답하여 상기 부트 업 명령어의 상기 데이터가 상기 외부 장치로 완전히 제공된 것으로 판별하도록 더 구성되는 전자 장치.
  5. 제 3 항에 있어서,
    상기 컨트롤러는 상기 외부 장치로부터의 완료 응답 또는 상기 커맨드에 응답하여 상기 부트 업 명령어의 상기 데이터가 상기 외부 장치로 완전히 제공된 것으로 판별하도록 더 구성되는 전자 장치.
  6. 제 3 항에 있어서,
    상기 컨트롤러는, 상기 설정 정보를 해제하고 상기 제 2 메모리를 초기화한 후, 상기 외부 장치로부터의 상기 커맨드에 기초하여 상기 제 2 메모리에 상기 설정 정보를 새로 저장하도록 더 구성되는 전자 장치.
  7. 부트 업 명령어(Boot-up Instruction)의 데이터를 저장하도록 구성되는 제 1 메모리;
    외부 장치와의 통신이 수행되는 환경에 관한 설정 정보를 저장하도록 구성되는 제 2 메모리;
    상기 제 2 메모리가 상기 외부 장치로부터의 커맨드에 기초하여 상기 설정 정보를 저장하기 전에, 자가 설정 값(Self-setting Value)을 갖는 상기 설정 정보를 상기 제 2 메모리에 저장하도록 구성되는 로직 회로; 및
    상기 자가 설정 값에 의해 정의되는 환경 하에서, 상기 외부 장치로부터 수신되는 메모리 읽기 요청에 응답하여 상기 부트 업 명령어의 상기 데이터를 상기 외부 장치로 제공하도록 구성되는 컨트롤러를 포함하는 전자 장치.
  8. 제 7 항에 있어서,
    상기 설정 정보는 적어도 신호 어드레스 범위의 정보를 포함하고,
    상기 자가 설정 값은 상기 신호 어드레스 범위를 정의하는 상한 값 및 하한 값을 포함하는 전자 장치.
  9. 제 8 항에 있어서,
    상기 로직 회로는:
    상기 외부 장치로부터 출력되는 신호들의 신호 어드레스들의 최대 값을 상기 상한 값으로서 상기 제 2 메모리에 저장하고;
    상기 신호 어드레스들의 최소 값을 상기 하한 값으로서 상기 제 2 메모리에 저장하도록 더 구성되는 전자 장치.
  10. 제 8 항에 있어서,
    상기 로직 회로는:
    상기 수신된 메모리 읽기 요청에 대응하는 신호 어드레스를 추출하고;
    상기 추출된 신호 어드레스에 기초하여 상기 상한 값 및 상기 하한 값 중 적어도 하나를 상기 제 2 메모리에 저장하도록 더 구성되는 전자 장치.
  11. 호스트로 연결되는 호스트 포트, 복수의 종단(Endpoint) 장치로 각각 연결되는 복수의 종단 포트, 및 상기 호스트 포트 및 상기 복수의 종단 포트를 통해 상기 호스트와의 통신이 수행되는 환경에 관한 설정 정보를 각각 저장하도록 구성되는 제 1 메모리들을 포함하는 스위치 장치; 및
    상기 복수의 종단 포트 중 대상 종단 포트로 연결되고, 부트 업 명령어(Boot -up Instruction)의 데이터를 저장하도록 구성되는 대상 종단 장치를 포함하되,
    상기 스위치 장치는:
    상기 제 1 메모리들이 상기 호스트로부터의 커맨드에 기초하여 상기 설정 정보를 저장하기 전에, 상기 대상 종단 장치의 제어에 따라, 자가 설정 값(Self-setting Value)을 갖는 상기 설정 정보를, 상기 제 1 메모리들 중 상기 호스트 포트 및 상기 대상 종단 포트에 대응하는 대상 메모리들에 저장하고;
    상기 자가 설정 값에 의해 정의되는 환경 하에서, 상기 호스트로부터 수신되는 메모리 읽기 요청을 상기 대상 종단 장치로 전달하고;
    상기 메모리 읽기 요청에 응답하여 상기 대상 종단 장치로부터 출력되는 상기 부트 업 명령어의 상기 데이터를 상기 호스트로 전달하도록 구성되는 전자 장치.
  12. 제 11 항에 있어서,
    상기 스위치 장치는:
    상기 자가 설정 값을 갖는 상기 설정 정보를 상기 대상 메모리들에만 저장하고;
    상기 메모리 읽기 요청을 상기 대상 종단 장치로 전달하고;
    상기 대상 종단 장치를 제외한 다른 종단 장치들로 상기 메모리 읽기 요청을 전달하지 않도록 구성되는 전자 장치.
  13. 제 11 항에 있어서,
    상기 스위치 장치는:
    상기 자가 설정 값을 갖는 상기 설정 정보를, 상기 대상 메모리들 및 다른 제 1 메모리들에 저장하고;
    상기 대상 종단 장치를 포함하여 상기 복수의 종단 장치 모두로 상기 메모리 읽기 요청을 전달하고;
    상기 대상 장치를 제외한 다른 종단 장치들로부터 상기 메모리 읽기 요청에 대응하는 응답을 수신하지 않도록 더 구성되는 전자 장치.
  14. 부트 업 명령어(Boot-up Instruction)에 기초하여 부팅 동작을 수행하도록 구성되는 프로세서 장치; 및
    상기 부트 업 명령어의 데이터, 및 상기 프로세서 장치와의 통신이 수행되는 환경에 관한 설정 정보를 저장하도록 구성되는 종단(Endpoint) 장치를 포함하되,
    상기 종단 장치는:
    상기 프로세서 장치로부터의 커맨드에 기초하여 상기 설정 정보를 저장하기 전에, 자가 설정 값(Self-setting Value)을 갖는 상기 설정 정보를 저장하고;
    상기 자가 설정 값에 의해 정의되는 환경 하에서, 상기 프로세서 장치로부터 수신되는 메모리 읽기 요청에 응답하여 상기 부트 업 명령어의 상기 데이터를 상기 프로세서 장치로 제공하도록 구성되는 전자 장치.
  15. 제 14 항에 있어서,
    상기 프로세서 장치는 전력 공급의 시작에 응답하여 상기 메모리 읽기 요청을 상기 종단 장치로 제공하도록 더 구성되는 전자 장치.
  16. 제 14 항에 있어서,
    상기 종단 장치는 전력 공급의 시작 또는 상기 메모리 읽기 요청에 응답하여, 상기 자가 설정 값을 갖는 상기 설정 정보를 저장하도록 더 구성되는 전자 장치.
  17. 제 14 항에 있어서,
    상기 프로세서 장치와 상기 종단 장치 사이의 통신은 메인 인터페이스 규약을 따르는 제 1 통신 및 사이드밴드 인터페이스 규약을 따르는 제 2 통신을 포함하는 전자 장치.
  18. 제 17 항에 있어서,
    상기 프로세서 장치는 상기 제 1 통신에 따라 상기 메모리 읽기 요청을 상기 종단 장치로 제공하기 전에, 상기 제 2 통신에 따라 선행 요청을 상기 종단 장치로 제공하도록 더 구성되고,
    상기 종단 장치는 상기 선행 요청에 응답하여, 상기 자가 설정 값을 갖는 상기 설정 정보를 저장하도록 더 구성되는 전자 장치.
  19. 제 14 항에 있어서,
    상기 종단 장치는, 상기 부트 업 명령어의 상기 데이터가 상기 프로세서 장치로 완전히 제공된 것으로 판별한 경우, 상기 자가 설정 값을 갖는 상기 설정 정보를 해제 및 초기화하도록 더 구성되는 전자 장치.
  20. 제 19 항에 있어서,
    상기 프로세서 장치와 상기 종단 장치 사이의 통신은 메인 인터페이스 규약을 따르는 제 1 통신 및 사이드밴드 인터페이스 규약을 따르는 제 2 통신을 포함하고,
    상기 종단 장치는 상기 제 2 통신에 따라 상기 프로세서 장치로부터 수신되는 완료 응답에 응답하여, 상기 부트 업 명령어의 상기 데이터가 상기 프로세서 장치로 완전히 제공된 것으로 판별하도록 더 구성되는 전자 장치.
KR1020160103793A 2016-08-16 2016-08-16 종단 장치로부터 제공되는 부트 업 명령어에 기초하여 부팅 동작을 수행하도록 구성되는 전자 장치 KR102669219B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020160103793A KR102669219B1 (ko) 2016-08-16 종단 장치로부터 제공되는 부트 업 명령어에 기초하여 부팅 동작을 수행하도록 구성되는 전자 장치
US15/671,866 US10635450B2 (en) 2016-08-16 2017-08-08 Electronic device performing booting operation based on boot-up instruction provided from endpoint device
CN201710701593.8A CN107766097B (zh) 2016-08-16 2017-08-16 基于端点装置提供的启动指令执行启动操作的电子装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160103793A KR102669219B1 (ko) 2016-08-16 종단 장치로부터 제공되는 부트 업 명령어에 기초하여 부팅 동작을 수행하도록 구성되는 전자 장치

Publications (2)

Publication Number Publication Date
KR20180019806A true KR20180019806A (ko) 2018-02-27
KR102669219B1 KR102669219B1 (ko) 2024-05-28

Family

ID=

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022260728A1 (en) * 2021-06-07 2022-12-15 Intel Corporation Systems, apparatus and methods for rapid peripheral component interconnect express (pcie) system boot

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022260728A1 (en) * 2021-06-07 2022-12-15 Intel Corporation Systems, apparatus and methods for rapid peripheral component interconnect express (pcie) system boot

Also Published As

Publication number Publication date
CN107766097A (zh) 2018-03-06
CN107766097B (zh) 2021-08-13
US10635450B2 (en) 2020-04-28
US20180052694A1 (en) 2018-02-22

Similar Documents

Publication Publication Date Title
US10152443B2 (en) System and method for providing personality switching in a solid state drive device
US8645594B2 (en) Driver-assisted base address register mapping
US10372460B2 (en) System and method for baseboard management controller assisted dynamic early host video on systems with a security co-processor
US10606677B2 (en) Method of retrieving debugging data in UEFI and computer system thereof
US9026687B1 (en) Host based enumeration and configuration for computer expansion bus controllers
WO2016074127A1 (zh) 计算机设备及计算机设备内存启动的方法
JP2015062131A (ja) Mmc/sdデバイスからホストデバイスをブートする方法,mmc/sdデバイスからブート可能なホストデバイス及びホストデバイスをブートできるmmc/sdデバイス
US20100064036A1 (en) Peripheral device operation method, peripheral device and host
KR20180012181A (ko) 호스트 없는 환경에서 멀티 프로토콜을 지원하는 셀프-구성 에스에스디
US9880858B2 (en) Systems and methods for reducing BIOS reboots
US9940275B2 (en) System and method to avoid SMBus address conflicts via a baseboard management controller
KR101698707B1 (ko) 가상 pci 장치 및 가상 mmio 장치를 형성하기 위한 일반적인 방법
US10360043B2 (en) Installation of device drivers from virtual media
CN108023762B (zh) 数据交换器的服务器数据端口学习
US10635450B2 (en) Electronic device performing booting operation based on boot-up instruction provided from endpoint device
US20180341497A1 (en) System and Method to Configure Communication Lanes of a Central Processing Unit
US20200252302A1 (en) System and Method for Remote Hardware Support Using Augmented Reality and Available Sensor Data
US20230222471A1 (en) System and method for subscription based solution implementation
CN109426527B (zh) 在uefi固件及作业***间分享蓝牙数据的电脑***及其方法
WO2013101086A1 (en) Boot strap processor assignment for a multi-core processing unit
US10616944B2 (en) Computer system and method thereof for sharing of wireless connection information between UEFI firmware and OS
US20100017588A1 (en) System, method, and computer program product for providing an extended capability to a system
US20110072168A1 (en) Data transfer system with different operating modes
US9304779B2 (en) Optimizing boot time of a storage system
KR102669219B1 (ko) 종단 장치로부터 제공되는 부트 업 명령어에 기초하여 부팅 동작을 수행하도록 구성되는 전자 장치

Legal Events

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