KR20230078683A - 가속기 카드 보안 모드들의 정적 구성 - Google Patents

가속기 카드 보안 모드들의 정적 구성 Download PDF

Info

Publication number
KR20230078683A
KR20230078683A KR1020237010834A KR20237010834A KR20230078683A KR 20230078683 A KR20230078683 A KR 20230078683A KR 1020237010834 A KR1020237010834 A KR 1020237010834A KR 20237010834 A KR20237010834 A KR 20237010834A KR 20230078683 A KR20230078683 A KR 20230078683A
Authority
KR
South Korea
Prior art keywords
accelerator card
security
configuration memory
satellite controller
programmable
Prior art date
Application number
KR1020237010834A
Other languages
English (en)
Inventor
드미트리 슈탈렌코프
크리슈나쿠마르 수구마란
모리스 팬너스
Original Assignee
자일링크스 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 자일링크스 인코포레이티드 filed Critical 자일링크스 인코포레이티드
Publication of KR20230078683A publication Critical patent/KR20230078683A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • G06F21/34User authentication involving the use of external additional devices, e.g. dongles or smart cards
    • G06F21/35User authentication involving the use of external additional devices, e.g. dongles or smart cards communicating wirelessly
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)
  • Time Recorders, Dirve Recorders, Access Control (AREA)

Abstract

가속기 카드는 내부에 지정된 필드에 보안 식별자를 저장하도록 구성된 판독-전용 메모리, 및 리셋 이벤트에 응답하여 보안 식별자를 판독하도록 구성된 위성 제어기를 포함할 수 있다. 위성 제어기는, 보안 식별자에 기반하여, 복수의 보안 모드들로부터 보안 모드를 선택하고, 선택된 보안 모드를 가속기 카드에서 구현하도록 구성된다.

Description

가속기 카드 보안 모드들의 정적 구성
[0001] 본 개시내용은 컴퓨터 시스템과 함께 주변 디바이스(peripheral device)들을 사용하는 것에 관한 것으로, 특히 가속기 카드(accelerator card) 유형 주변 디바이스들에 대한 보안 모드(security mode)들의 구성에 관한 것이다.
[0002] 하드웨어 가속은 컴퓨팅 시스템의 태스크(task)들이 중앙 처리 장치(CPU)에서 시스템의 다른 하드웨어로 오프로드(offload)되는 기술을 지칭한다. 다른 하드웨어는 오프로드되는 태스크들을 수행하기 위해 특별히 조정되거나 적합하게 될 수 있다. 태스크들이 오프로드되는 하드웨어는 가속기 카드라고 지칭될 수 있다.
[0003] 가속기 카드는 통신 버스(communication bus)를 통해 컴퓨터 시스템에 통신적으로 링크(link)된다. 흔히 가속기 카드에는 컴퓨터 시스템의 사용 가능한 버스 슬롯(bus slot)에 들어맞는 에지 커넥터(edge connector)가 있다. 그럼에도 불구하고, 가속기 카드들은 다양한 상이한 통신 버스들 또는 다른 통신 기술들 중 임의의 것에 의해 컴퓨터 시스템에 통신적으로 링크될 수 있다.
[0004] 가속기 카드는 내부에 지정된 필드(designated field)에 보안 식별자를 저장하도록 구성된 판독-전용 메모리 및 리셋 이벤트(reset event)에 응답하여 보안 식별자를 판독하도록 구성된 위성 제어기(satellite controller)를 포함할 수 있다. 위성 제어기는, 보안 식별자에 기반하여, 복수의 보안 모드들로부터 보안 모드를 선택하고, 선택된 보안 모드를 가속기 카드에서 구현할 수 있다.
[0005] 가속기 카드에 대한 보안 모드를 구성하는 방법은 리셋 이벤트에 응답하여, 가속기 카드의 위성 제어기를 사용하여, 가속기 카드의 판독-전용 메모리의 지정된 필드로부터 보안 식별자를 판독하는 단계, 보안 식별자에 기반하여 그리고 위성 제어기를 사용하여, 가속기 카드에 대한 복수의 보안 모드들로부터 보안 모드를 선택하는 단계, 및 선택된 보안 모드를 가속기 카드 내에서 구현하는 단계를 포함할 수 있다.
[0006] 이 개요 섹션은 단지 특정 개념들을 소개하기 위해 제공되며 청구된 주제의 핵심 또는 본질적인 피처(feature)들을 식별하기 위해 제공되는 것이 아니다. 본 발명의 어레인지먼트(arrangement)들의 다른 피처들은 첨부된 도면들 및 다음의 상세한 설명으로부터 명백해질 것이다.
[0007] 본 발명의 어레인지먼트들이 첨부된 도면들에 예로서 예시되어 있다. 그러나 도면들은 본 발명의 어레인지먼트들을 도시된 특정 구현들로만 제한하는 것으로 해석되어서는 안된다. 다음의 상세한 설명을 검토하고 도면들을 참조하면 다양한 양상들 및 이점들이 명백해질 것이다.
[0008] 도 1은 본 개시내용 내에서 설명된 본 발명의 어레인지먼트들과 함께 사용하기 위한 예시적인 컴퓨팅 환경을 예시한다.
[0009] 도 2는 도 1의 컴퓨팅 환경의 또 다른 예를 예시한다.
[0010] 도 3은 가속기 카드에서의 보안 모드들의 정적 구성의 예시적인 방법을 예시한다.
[0011] 도 4는 가속기 카드에서의 보안 모드들의 정적 구성의 또 다른 예시적인 방법을 예시한다.
[0012] 도 5는 집적 회로(IC)에 대한 예시적인 아키텍처(architecture)를 예시한다.
[0013] 본 개시내용은 신규한 피처들을 정의하는 청구항들로 종결되지만, 본 개시내용 내에서 설명된 다양한 피처들은 도면들과 함께 설명을 고려함으로써 더 잘 이해될 것이라고 여겨진다. 본 명세서에 설명된 프로세스(process)(들), 기계(들), 제조(들) 및 이들의 임의의 변형들은 예시의 목적으로 제공된다. 본 개시내용 내에서 설명된 특정한 구조적 및 기능적 세부사항들은 제한하는 것으로 해석되어서는 안 되며, 청구항들에 대한 기초로서 그리고 사실상 임의의 적절하게 상세한 구조로 설명된 피처들을 다양하게 채용하도록 이 기술분야의 기술자에게 교시하기 위한 대표적인 기초로서만 해석되어야 한다. 추가로, 본 개시내용 내에서 사용된 용어들 및 문구들은 제한하려는 것이 아니라 설명되는 피처들에 대한 이해 가능한 설명을 제공하기 위한 것이다.
[0014] 본 개시내용은 컴퓨터 시스템들과 함께 주변 디바이스들을 사용하는 것에 관한 것으로, 특히 가속기 카드 유형 주변 디바이스들에 대한 보안 모드들의 구성에 관한 것이다. 현대의 컴퓨터 시스템은 컴퓨터 시스템의 중앙 처리 장치(CPU)에만 의존하여 얻을 수 없는 하나 이상의 이점들을 얻기 위해 흔히 가속기 카드라고 지칭되는 주변 디바이스를 이용할 수 있다. 이러한 이점들에는 더 빠른 작업, 감소된 전력 소비 및 리던던시(redundancy)가 포함될 수 있다(그러나 이에 제한되지 않음).
[0015] 루트 오브 트러스트(Root of Trust)는 컴퓨터 시스템의 운영 체제에 의해 항상 신뢰되는 컴퓨터 시스템의 신뢰된 구성요소에 의해 제공되는 기능들의 세트(set)를 지칭한다. 컴퓨터 시스템은 루트 오브 트러스트를 가속기 카드들과 같은 특정 주변 디바이스들로 확장할 수 있다. 그러나 상이한 컴퓨터 시스템들은 상이한 루트 오브 트러스트들을 이용할 수 있으며, 각각의 상이한 루트 오브 트러스트는 주변 디바이스로 루트 오브 트러스트를 확장하기 위해 서로 다른 경로를 가질 수 있다.
[0016] 본 개시내용 내에서 설명된 본 발명의 어레인지먼트들에 따르면, 가속기 카드와 같은 주변 디바이스가 주변 디바이스에 대해 필요한 보안 역할을 자동으로 검출할 수 있다. 예를 들어, 리셋 이벤트에 응답하여, 주변 디바이스는 주변 디바이스에서 구현될 보안 모드를 자동으로 결정할 수 있다. 구현되는 보안 모드는 주변 디바이스가 함께 사용되는 특정 호스트 컴퓨터에 대한 루트 오브 트러스트에 따라 달라질 수 있다.
[0017] 일 양상에서, 주변 디바이스는 주변 디바이스의 메모리 내에 저장된 보안 식별자에 기반하여 복수의 보안 모드들로부터 보안 모드를 선택할 수 있다. 보안 식별자는 호스트 컴퓨터에 대한 루트 오브 트러스트를 표시한다. 주변 디바이스는 선택된 보안 모드를 구현하여 그 자신을 자동으로 구성할 수 있다. 선택된 보안 모드를 구현함으로써, 주변 디바이스는 올바른 경로를 통해 호스트 컴퓨터에 대한 루트 오브 트러스트에 응답하고, 임의의 필요한 보안 프로토콜(security protocol)들을 실행하고, 임의의 그러한 보안 프로토콜들을 실행한 후, 하나 이상의 애플리케이션 워크로드(application workload)들을 시작할 수 있다.
[0018] 예시적인 구현에서, 주변 디바이스는 선택된 보안 모드가 정적으로(statically) 구성된다. 보안 모드의 정적 구성은 주변 디바이스가 리셋 이벤트에 응답하여 보안 모드를 선택하고 구현함을 의미한다. 예를 들어, 리셋 이벤트는 주변 디바이스가 부팅 프로세스(boot process)를 수행하는 것을 포함할 수 있다. 예를 들어, 전원을 켜거나 리셋되는 것에 응답하여, 주변 디바이스는 보안 모드를 선택하고 해당 보안 모드를 구현할 수 있다.
[0019] 본 발명의 어레인지먼트들의 추가 양상들이 도면들을 참조하여 하기에서 더욱 상세히 설명된다. 예시의 단순성과 명확성을 위해, 도면들에 도시된 요소들은 반드시 일정한 비율로 그려지지는 않았다. 예를 들어, 일부 요소들의 치수들은 명확성을 위해 다른 요소들에 비해 과장될 수 있다. 추가로, 적절한 것으로 고려되는 경우, 참조 번호들은 대응하거나, 유사하거나, 같은 피처들을 표시하기 위해 도면들 간에 반복된다.
[0020] 도 1은 본 개시내용 내에서 설명되는 본 발명의 어레인지먼트들과 함께 사용하기 위한 예시적인 컴퓨팅 환경(100)을 예시한다. 컴퓨팅 환경은 가속기 카드(104)에 결합된 호스트 컴퓨터(host computer)(102)를 포함한다. 가속기 카드(104)는 호스트 컴퓨터(102)의 주변 디바이스의 예이다.
[0021] 컴퓨터(102)의 구성요소들은 호스트 프로세서(host processor)(106)(예를 들어, 하나 이상의 CPU들), 메모리(108), 및 메모리(108)를 포함하는 다양한 시스템 구성요소들을 호스트 프로세서(106)에 결합하는 버스(110)를 포함할 수 있다(그러나 이에 제한되지 않음). 호스트 프로세서(106)는 프로그램 코드(program code)를 실행할 수 있는 다양한 프로세서들 중 임의의 것으로 구현될 수 있다. 예시적인 프로세서 유형들은 x86 유형의 아키텍처(IA-32, IA-64 등)를 갖는 프로세서들, Power Architecture, ARM 프로세서들 등을 포함한다(그러나 이에 제한되지 않음).
[0022] 프로세서(106)는 버스(110)를 통해 메모리(108)와 통신한다. 예를 들어, 버스(110)는 메모리 버스로 구현될 수 있다. 컴퓨터(102)는 전형적으로 다양한 컴퓨터 판독가능 매체들을 포함한다. 그러한 매체들은 호스트 컴퓨터(102)에 의해 액세스될 수 있는 다양한 매체들 중 임의의 매체일 수 있고, 휘발성 매체들, 비휘발성 매체들, 착탈식 매체들 및/또는 비착탈식(non-removable) 매체들의 임의의 조합을 포함할 수 있다.
[0023] 메모리(108)는 호스트 프로세서(106)와 관련하여 본 개시내용 내에서 설명되는 기능들 및/또는 작업들을 수행하도록 구성된 프로그램 모듈(program module)들(예를 들어, 프로그램 코드)의 세트(예를 들어, 적어도 하나)를 갖는 적어도 하나의 컴퓨터 프로그램 제품의 예이다. 예를 들어, 메모리(108)는 랜덤 액세스 메모리(random-access memory, RAM)(112) 및/또는 캐시 메모리(cache memory)(114)와 같은 휘발성 메모리 형태의 컴퓨터 판독가능 매체들을 포함할 수 있다. 컴퓨터(102)는 또한 다른 착탈식/비착탈식, 휘발성/비휘발성 컴퓨터 시스템 저장 매체들을 포함할 수 있다. 예를 들어, 저장 시스템(116)은 그 안에 포함된 비착탈식, 비휘발성 자기(magnetic) 및/또는 솔리드-스테이트(solid-state) 매체들로부터 판독하고 이들에 기록할 수 있는 디스크 드라이브(disk drive)(예를 들어, "하드 드라이브(hard drive)")를 포함할 수 있다. 저장 시스템(116)은 또한 자기, 솔리드 스테이트, 및/또는 광학 매체들일 수 있는 착탈식, 비휘발성 매체들로부터 판독하고 이들에 기록하기 위한 하나 이상의 디스크 드라이브들을 포함할 수 있다. 디스크 드라이브들은 하나 이상의 데이터 매체 인터페이스(data media interface)들에 의해 버스(110)에 연결될 수 있다.
[0024] 프로그램/유틸리티(program/utility)(118)는 하나 이상의 프로그램 모듈들(120)을 포함할 수 있다. 메모리(108)에 저장되는 프로그램 모듈들(120)은 운영 체제, 하나 이상의 애플리케이션 프로그램들(예를 들어, 사용자 애플리케이션들), 기타 프로그램 모듈 및/또는 프로그램 데이터를 포함할 수 있다(그러나 이에 제한되지 않음). 프로그램 모듈들(120)은 대체로 적어도 호스트 프로세서(106)에 의해 수행되는 작업들과 관련하여 본 명세서에 설명된 바와 같은 기능들 및/또는 방법론들을 수행한다.
[0025] 프로그램/유틸리티(118)는 호스트 프로세서(106)에 의해 실행 가능하다. 프로그램/유틸리티(118) 및 호스트 프로세서(106)에 의해 사용, 생성 및/또는 운용되는 임의의 데이터 아이템(item)들은 호스트 프로세서(106)에 의해 채용될 때 기능성(functionality)을 부여하는 기능적 데이터 구조들이다. 본 개시내용 내에서 정의된 "데이터 구조(data structure)"는 물리적 메모리 내의 데이터의 데이터 모델의 조직(organization)에 대한 물리적 구현이다. 따라서, 데이터 구조는 메모리의 특정 전기 또는 자기 구조 요소들로 형성된다. 데이터 구조는 프로세서를 사용하여 실행되는 애플리케이션 프로그램에 의해 사용되는 것과 같은 메모리에 저장된 데이터에 물리적 조직을 도입한다.
[0026] 호스트 컴퓨터(102)는 버스(124)를 통해 호스트 프로세서(106)에 통신적으로 링크된 하나 이상의 입력/출력(I/O) 인터페이스들(122)을 포함할 수 있다. 버스(124)는 확장 버스(expansion bus) 또는 I/O 버스일 수 있다. I/O 인터페이스(들)(122)는 컴퓨터(102)가 가속기 카드(104)와 같은 다양한 주변 디바이스들에 결합되어 이들과 통신하도록 허용한다. 호스트 컴퓨터(102)는 다른 I/O 인터페이스들을 통해 키보드, 포인팅 디바이스(pointing device), 및/또는 디스플레이와 같은 다른 디바이스들(도시되지 않음)에 결합될 수 있다. I/O 인터페이스(122)의 예들은 네트워크 카드(network card)들, 모뎀(modem)들, 네트워크 어댑터(network adapter)들, 하드웨어 제어기(hardware controller)들 등을 포함할 수 있다(그러나 이에 제한되지 않음).
[0027] 버스(124)는 다양한 통신 버스 구조들 중 임의의 통신 버스 구조로 구현될 수 있다. 제한이 아닌 예로서, 그러한 버스 구조들은 산업 표준 아키텍처(Industry Standard Architecture, ISA) 버스, 마이크로 채널 아키텍처(Micro Channel Architecture, MCA) 버스, 강화된(enhanced) ISA(EISA) 버스, 비디오 전자공학 표준위원회(Video Electronics Standards Association, VESA) 로컬 버스, 주변 구성요소 상호연결(Peripheral Component Interconnect, PCI) 버스, 또는 PCI 익스프레스(PCI Express, PCIe) 버스를 포함할 수 있다.
[0028] 도 1의 예에서, 호스트 컴퓨터(102)는 통신 채널(126)을 통해 가속기 카드(104)에 결합된다. 통신 채널(126)은 버스(124) 상의 I/O 인터페이스(122)에 의해 확립될 수 있다. 예시적인 구현에서, 호스트 컴퓨터(102)가 가속기 카드(104)와 통신하는 I/O 인터페이스(122)는 PCIe 어댑터이다. 가속기 카드(104)는 호스트 컴퓨터(102)에 결합되는 회로 기판으로 구현될 수 있다. 예를 들어, 가속기 카드(104)는 호스트 컴퓨터(102)의 사용 가능한 카드 슬롯, 예를 들어 사용 가능한 버스 및/또는 PCIe 슬롯에 삽입될 수 있다. 도 1의 예에서, 통신 채널(126)은 "인밴드(in-band)" 통신 채널이다.
[0029] 호스트 컴퓨터(102)가 베이스보드 관리 제어기(Baseboard Management Controller, BMC)(도시되지 않음)를 포함하는 하나 이상의 예시적인 구현들에서, 호스트 컴퓨터(102)는 또한 통신 채널(128)을 통해 가속기 카드(104)에 통신적으로 링크될 수 있다. 통신 채널(128)은 BMC를 가속기 카드(104)와 통신적으로 링크시키는 아웃오브밴드(out-of-band, OOB) 통신 채널로서 구현될 수 있다. 일 양상에서, 통신 채널(128)은 통신 채널(126)과 동일한 물리적 커넥터를 통해 구현될 수 있다. 그럼에도 불구하고, 통신 채널(128)은 통신 채널(126)과 물리적으로 구별되며 분리되어 있다.
[0030] 도 1의 예에서, 가속기 카드(104)는 프로그램 가능 IC(132)를 포함한다. 프로그램 가능 IC(132)는 프로그램 가능 회로부(예를 들어, 프로그램 가능 로직(programmable logic))를 포함한다. 명시적으로 도시되지는 않았지만, 프로그램 가능 IC(132)는 프로그램 가능 회로부와 협력하여 사용될 수 있는 하나 이상의 하드와이어드 회로 블록(hardwired circuit block)들을 포함할 수 있음을 이해해야 한다. 예로서, 프로그램 가능 IC(132)는 필드 프로그램 가능 게이트 어레이(field programmable gate array, FPGA)로 구현될 수 있다. 일 양상에서, 프로그램 가능 IC(132)는 서로 협력하여 동작할 수 있는 상이한 서브시스템(subsystem)들을 포함하는 시스템-온-칩(System-on-Chip, SoC)으로서 구현될 수 있다. 예를 들어, 프로그램 가능 IC(132)는 프로세서 및/또는 프로세서 어레이 서브시스템(processor array subsystem), 프로그램 가능 로직 서브시스템, 및/또는 하나 이상의 다른 특수 하드와이어드 회로 블록들을 포함할 수 있다. 가속기 카드(104)는 또한 휘발성 메모리 및/또는 비휘발성 메모리와 같은 프로그램 가능 IC(132)에 결합된 도 1에 예시되지 않은 다른 구성요소들을 포함할 수 있다.
[0031] 도 1은 본 명세서에 셜명된 예들의 사용 또는 기능성의 범위에 대한 어떠한 제한도 시사하려는 의도가 아니다. 호스트 컴퓨터(102)는 가속기 카드(104) 및/또는 프로그램 가능 IC(132)와 관련하여 본 개시내용 내에서 설명되는 다양한 작업들을 수행할 수 있는 컴퓨터 하드웨어(예를 들어, 시스템)의 예이다. 가속기 카드(104)는 예시의 목적으로 제공되며, 본 발명의 어레인지먼트들을 제한하려는 의도가 아니다. 가속기 카드(104)의 보다 상세한 예는 도 2와 관련하여 설명된다.
[0032] 일 양상에서, 호스트 컴퓨터(102)는 서버(server)를 나타낸다. 예를 들어, 호스트 컴퓨터(102)는 독립형 디바이스로서, 베어 메탈 서버(bare metal server)로서, 또는 컴퓨팅 디바이스들의 클러스터(cluster)의 부분으로서 실시될 수 있다. 다른 양상에서, 컴퓨팅 환경(100)은 호스트 컴퓨터(102)가 그 안에서 실시되고 있는 데이터 센터(datacenter)를 나타낼 수 있다. 데이터 센터는, 예를 들어 서버들, 라우터(router)들, 스위치(switch)들, 방화벽들, 통신 장비 및/또는 저장 시스템(storage system)들과 같은 컴퓨팅 시설들을 수용하는 방 또는 건물과 같은 전용 공간을 지칭한다. 데이터 센터는 흔히 백업(backup) 장비, 화재 진압 시설들 및 에어 컨디셔닝(air conditioning)과 같은 지원 구성요소들을 포함한다. 데이터 센터는 프라이빗(private)이거나 공유될 수 있다. 전형적으로, 데이터 센터는 컴퓨팅 하드웨어에 대한 액세스를 승인된 직원으로만 제한한다. 하나의 예시적인 구현에서, 컴퓨팅 환경(100)은 하이퍼스케일(hyperscale) 데이터 센터를 나타낼 수 있다.
[0033] 예시적인 구현에서, 컴퓨팅 환경(100)은 호스트 컴퓨터(102)가 그 안에서 실시되고 있는 분산 클라우드 컴퓨팅(cloud computing) 환경을 나타낼 수 있다. 분산 클라우드 컴퓨팅 환경에서 태스크들은 통신 네트워크를 통해 링크된 원격 프로세싱 디바이스들에 의해 수행된다. 분산 클라우드 컴퓨팅 환경에서 프로그램 모듈들은 메모리 저장 디바이스들을 포함하는 로컬 및 원격 컴퓨터 시스템 저장 매체들 모두에 위치될 수 있다.
[0034] 본 명세서에서 사용되는 용어 "클라우드 컴퓨팅"은 네트워크들, 서버들, 스토리지(storage), 애플리케이션들, IC들(예를 들어, 프로그램 가능 IC들) 및/또는 서비스들과 같은 구성 가능한 컴퓨팅 리소스(resource)들의 공유 풀(shared pool)에 대한 편리한 온디맨드(on-demand) 네트워크 액세스를 용이하게 하는 컴퓨팅 모델을 지칭한다. 이러한 컴퓨팅 리소스들은 최소한의 관리 노력이나 서비스 공급자와의 상호 작용으로 신속하게 공급되거나 및 릴리스(release)될 수 있다. 클라우드 컴퓨팅은 이용 가능성을 촉진하며 온디맨드 셀프-서비스(self-service), 광범위한 네트워크 액세스, 리소스 풀링(resource pooling), 신속한 탄력성 및 측정된 서비스로 특징지을 수 있다.
[0035] 일부 컴퓨팅 환경들, 예를 들어 클라우드 컴퓨팅 환경들, 에지 컴퓨팅 환경들, 및/또는 데이터 센터들은 대체로 서비스로서의 FPGA(FPGA-as-a-Service, FaaS) 모델을 지원한다. FaaS 모델에서 사용자 기능들은 호스트 컴퓨터의 제어하에 동작하는 프로그램 가능 IC들 내에서 구현된 회로 설계들로 하드웨어 가속된다. 클라우드 컴퓨팅 모델들의 다른 예들은 미국표준기술연구소(National Institute of Standards and Technology, NIST), 특히 NIST의 정보기술연구실(Information Technology Laboratory)에 설명되어 있다.
[0036] 실제 데이터 센터 및/또는 분산 클라우드 컴퓨팅 환경은 도시된 것보다 더 많은 컴퓨터들을 포함할 수 있으며, 컴퓨터들 중 하나 이상 또는 모두는 그에 결합된 하나 이상 가속기 카드들을 가질 수 있음을 이해해야 한다.
[0037] 예시적인 구현에서, 가속기 카드(104)는 내부에 보안 모드를 자동으로(automatically) 정적으로 구성할 수 있다. 가속기 카드(104)는 호스트 컴퓨터(102)에 의해 제공되는 루트 오브 트러스트와 양립될 수 있는 보안 모드를 구현할 수 있다. 이것은 가속기 카드(104)가 올바른 신호 경로를 통해 호스트 컴퓨터(102)의 루트 오브 트러스트와 상호 작용할 수 있게 허용한다.
[0038] 도 2는 호스트 컴퓨터(102) 및 가속기 카드(104)를 포함하는 컴퓨팅 환경(100)의 다른 예를 예시한다. 프로그램 가능 IC(132)에 부가하여, 가속기 카드(104)는 스위치(204), 프로그램 가능 판독-전용 메모리(PROM)(206), 제어 회로(208)에 결합된 위성 제어기(202)를 포함한다. 일 예에서, 위성 제어기(202)는 프로그램 코드를 실행할 수 있는 프로세서로서 구현될 수 있다. 다른 예에서, 위성 제어기(202)는 전용 회로부로서 구현될 수 있다.
[0039] 가속기 카드(104)는 또한 프로그램 가능 IC(132)에 결합된 랜덤 액세스 메모리(도시되지 않음)를 포함할 수 있다. 위성 제어기(202)는 내부에 포함된 직렬 주변기기 인터페이스(Serial Peripheral Interface, SPI)를 통해 스위치(204)의 포트(port)에 결합될 수 있다. 위성 제어기(202)는 또한 제어 회로(208)와 통신하고 이에 제어 신호들을 제공할 수 있으며, 내부에 포함된 I2C(Inter-Integrated Circuit) 인터페이스를 통해 PROM(206)으로부터 판독할 수 있다. 가속기 카드(104)의 구성요소들에 의해 사용되는 본 명세서에서 설명되는 특정 버스들, 통신 채널들 및/또는 인터페이스들은 제한이 아니라 설명의 목적으로 제공된다는 것을 이해해야 한다. 설명된 것들과 다른 동등한 및/또는 적합한 인터페이스들이 사용될 수 있다.
[0040] 도 2의 예에서, 호스트 컴퓨터(102)는 BMC(210)를 포함한다. 예를 들어, 도 2는 호스트 컴퓨터(102)의 마더보드(motherboard), 또는 마더보드의 부분을 예시할 수 있다. 예에서, BMC(210)는 호스트 프로세서(106)와 동일한 호스트 컴퓨터(102)의 마더보드 상에 구현될 수 있다. 예시를 위해, 도 1과 관련하여 이전에 설명된 호스트 컴퓨터(102)의 다른 구성요소들은 도 2에는 예시되어 있지 않다. 호스트 프로세서(106)는 통신 채널(126)을 통해 프로그램 가능 IC(132)에 결합된다. 통신 채널(126)은 커넥터(212)를 통해 연장된다. 커넥터(212)는 PCIe 커넥터일 수 있다. BMC(210)는 통신 채널(128)을 통해 위성 제어기(202)에 결합된다. 통신 채널(128)은 또한 커넥터(212)를 통해 연장된다. 일 양상에서, 통신 채널(128)은 시스템 관리 버스(System Management Bus, SMBus)로서 구현된다.
[0041] 예시적인 구현에서, PROM(206)은 전기적으로 소거 가능한 PROM으로 구현될 수 있다. PROM(206)은 가속기 카드(104)가 제조된 때 그리고 필드에 릴리스되기 전에, 내부에 저장된 다양한 데이터를 포함할 수 있다. 이 데이터는 필드 교체가능 유닛(Field Replaceable Unit, FRU) 데이터를 포함할 수 있다. FRU 데이터는 OEM(Other Equipment Manufacturer) 데이터를 포함할 수 있다. 예시적인 구현에서, 보안 식별자(ID)는 FRU OEM 데이터, 예를 들어 FRU EOM 필드에 저장될 수 있다.
[0042] 예시적인 구현에서, 보안 ID는 가속기 카드에 대한 루트 오브 트러스트를 명시하고, 따라서 루트 오브 트러스트를 확장하기 위한 특정 경로를 명시한다. 예시를 위해, 보안 ID는 가속기 카드(104)에서 구현될 제1 또는 인밴드(IB) 보안 모드를 표시하는 제1 값을 명시할 수 있다. IB 보안 모드에서 루트 오브 트러스트는 호스트 프로세서(106)이다. IB 보안 모드에서 루트 오브 트러스트를 확장하기 위해 인에이블(enable)되는 경로는 IB 통신 채널인 통신 채널(126)이다. 대안적으로, 보안 ID는 가속기 카드(104)에서 구현될 제2 또는 OOB 보안 모드를 표시하는 하나 이상의 다른 값들을 지정할 수 있다. OOB 보안 모드에서 루트 오브 트러스트는 BMC(210)이다. OOB 보안 모드에서 루트 오브 트러스트를 확장하기 위해 인에이블되는 경로는 OOB 통신 채널인 통신 채널(128)이다. 본 명세서에 설명되는 예들에서, IB 채널은 호스트 컴퓨터(102)로부터 가속 카드(104)로 태스크들을 오프로드하기 위한 목적에서, 예를 들어 워크로드들을 수행하기 위해서, 가속기 카드(104)와 통신하기 위해 호스트 프로세서(106)에 의해 사용된다. OOB 통신 채널은 호스트 컴퓨터(102)로부터의 워크로드들을 수행하기 위해 가속기 카드(104)에 의해 사용되지 않는다.
[0043] 스위치(204)는 메모리들(214)에 결합된다. 메모리들(214)은 비휘발성 메모리들로 구현될 수 있다. 도 2의 예에서, 메모리들(214)은 구성 메모리(216) 및 복구 구성 메모리(218)를 포함한다. 구성 메모리(216)는 프로그램 가능 IC(132)가 구성 메모리(216)로부터 부팅된다는 점에서 기본 구성 메모리일 수 있다. 복구 구성 메모리(218)는 특정 상황에서 구성 메모리(216)의 백업으로서 사용될 수 있다. 일 양상에서, 구성 메모리(216) 및 복구 구성 메모리(218)는 각각 플래시 메모리(flash memory)로 구현될 수 있다. 예를 들어, 메모리들(214)은 프로그램 가능 IC(132)에 대한 구성 데이터를 저장할 수 있다. 스위치(204)는 가속기 카드(104)에서 구현되는 보안 모드에 기반하여, 구성 메모리(216)에 대한 판독-전용 액세스 또는 구성 메모리(216)에 대한 판독 및 기록 액세스를 프로그램 가능 IC(132)에 제공하도록 제어 회로(208)로부터 제공되는 제어 신호들에 의해 구성 가능하다. 스위치(204)가 프로그램 가능 IC(132)에 구성 메모리(216)에 대한 판독 및 기록 액세스를 제공하는 경우, 스위치(204)는 메모리들(214)에 대한 위성 제어기(202)의 액세스를 금지하거나 턴 오프(turn off)한다.
[0044] 이 예에서, 프로그램 가능 IC(132)는, 스위치(204)의 포트에 연결되어 프로그램 가능 IC(132)가 메모리들(214)로부터 판독하거나 구성 메모리(216)를 판독 및 기록하도록 허용하는 인터페이스(222)를 포함한다. 예시적인 구현에서, 인터페이스(222)는 쿼드 직렬 주변기기 인터페이스(Quad Serial Peripheral Interface, QSPI)이다. 스위치(204)는 프로그램 가능 IC(132)가 가속기 카드(104)에 구현된 특정 보안 모드에 관계없이 복구 구성 메모리(218)로부터 판독할 수 있도록 구성될 수 있다. 하나 이상의 예시적인 구현들에서, 제어 회로(208)를 통한 스위치(204)의 구성에 따라, 프로그램 가능 IC(132)는 메모리들(214) 중 하나 또는 둘 모두에 대해 판독 및/또는 기록할 수 있다.
[0045] 가속기 카드(104)에 대한 리셋 이벤트에 응답하여, 위성 제어기(202)는 PROM(206)으로부터 보안 ID를 판독한다. 리셋 이벤트는 가속기 카드 및 그 안의 위성 제어기가 재시작 및/또는 부팅하는 것의 임의의 발생일 수 있다. 리셋 이벤트의 예들은 가속기 카드(104)의 전원이 꺼졌다가 켜지는 하드 리셋(hard reset), 가속기 카드(104)의 소프트 리셋(soft reset), 및 가속기 카드(104)의 초기 전원 켜기를 포함할 수 있다.
[0046] 보안 ID의 값에 기반하여, 위성 제어기(202)는 커맨드(command)들을 제어 회로(208)로 전송하여 제어 회로(208)가 특정 구성으로 스위치(204)를 구성하도록 한다. 예를 들어, 보안 ID가 루트 오브 트러스트가 호스트 프로세서(106)인 IB 보안 모드를 표시하는 경우에, 위성 제어기(202)는 프로그램 가능 IC(132)에 구성 메모리(216)에 대한 판독 및 기록 액세스를 제공하도록 스위치(204)를 구성하도록 제어 회로(208)에 명령한다. 위성 제어기(202)는 추가로 위성 제어기(202)가 메모리들(214)에 액세스하는 것을 방지하도록 스위치(204)를 구성하도록 제어 회로(208)에 명령한다. 그 경우에, 스위치(204)는 위성 제어기(202)를 메모리들(214)로부터 유효하게 연결 해제(disconnect)한다. 위성 제어기(202)로부터의 명령들을 수신하는 것에 응답하여, 제어 회로(208)는 설명된 바와 같이 스위치(204)를 구성하는데 필요한 제어 신호들을 생성한다.
[0047] IB 보안 모드에서, 프로그램 가능 IC(132)에는 구성 메모리(216)에 대한 판독 및 기록 액세스가 제공된다. 이에 따라, 프로그램 가능 IC(132)는 적어도 초기에 구성 메모리(216)로부터 판독된 부트 이미지(boot image)를 사용하여 부팅할 수 있다. 본 개시내용 내에서 때때로, 프로그램 가능 IC(132)의 부트 이미지는 프로그램 가능 IC(132)의 "펌웨어(firmware)"로 지칭될 수 있다. 일단 프로그램 가능 IC(132)에 로드(load)되면, 부트 이미지는 프로그램 가능 IC(132)에서 보안 회로 설계(secure circuit design)(220)를 구현할 수 있다. 보안 회로 설계(220)는 통신 채널(126)을 통해 호스트 프로세서(106)와 통신할 수 있다. 예를 들어, 보안 회로 설계(220)는 프로그램 가능 IC(132)에서 PCIe 엔드포인트(endpoint)와 같은 통신 인터페이스를 구현할 수 있다. 보안 회로 설계(220)는 프로그램 가능 IC(132) 및/또는 가속기 카드(104) 내의 보안 프로토콜들의 구현과 관련하여 호스트 프로세서(106)로부터 수신되는 추가 명령들에 응답할 수 있다.
[0048] IB 보안 모드의 경우에, 보안 회로 설계(220)는 호스트 프로세서(106)에서 실행되는 사용자 애플리케이션들의 액세스 권한들과 호스트 프로세서(106)에서 실행되는 루트 오브 트러스트(운영 체제)를 구별할 수 있다. 보안 회로 설계(220)는, 예를 들어, 루트 오브 트러스트로서 행동하는 호스트 프로세서(106)로부터 수신될 수 있는 추가 구성 데이터를 인증(authenticate)할 수 있다. 예를 들어, 보안 회로 설계(220)는 루트 오브 트러스트로서 행동하는 호스트 프로세서(106)로부터의 또 다른 부트 이미지를 수신할 수 있다. 프로그램 가능 IC(132)를 구성하기 위한 부트 이미지를 수신하는 것에 응답하여, 보안 회로 설계(220)는 부트 이미지를 인증할 수 있다. 예를 들어, 보안 회로 설계(220)는 수신된 부트 이미지의 해시 값(hash value)을 생성하고 그 해시 값을 알려진 또는 미리 결정된 해시 값과 비교할 수 있다. 보안 회로 설계(220)는 인증된 구성 데이터 또는 부트 이미지를 구성 메모리(216)에 기록할 수 있다. 따라서, 호스트 프로세서(106)의 제어하에 동작하는 보안 회로 설계(220)는 호스트 프로세서(106)로부터 수신된 구성 데이터로 구성 메모리(216)를 업데이트할 수 있다. 보안 회로 설계(220)에 구성 메모리(216)에 기록할 권한을 부여함으로써, 루트 오브 트러스트는 호스트 프로세서(106)로부터 보안 회로 설계(220)로 확장된다.
[0049] IB 보안 모드에서, 위성 제어기(202)는 통신 채널(128)을 통해 BMC(210)와 통신하지 않는다. 즉, 위성 제어기(202)는 위성 제어기(202)가 통신 채널(128)을 통해 BMC(210)로부터 수신된 커맨드들 또는 통신들에 응답하지 않는 모드에 놓일 수 있다. IB 보안 모드에서, 위성 제어기(202)는 적어도 가속기 카드(104)에 대한 다음 리셋 이벤트까지 프로그램 가능 IC(132) 및/또는 메모리들(214)로부터 유효하게 연결 해제된다.
[0050] 보안 ID가 루트 오브 트러스트가 BMC(210)인 OOB 보안 모드를 표시하는 경우, 위성 제어기(202)는 프로그램 가능 IC(132)에 구성 메모리(216)에 대한 판독-전용 액세스를 제공하도록 스위치(204)를 구성하도록 제어 회로(208)에 명령한다. 위성 제어기(202)는 추가로 위성 제어기(202)에 구성 메모리(216)에 대한 판독 및 기록 액세스를 제공하도록 스위치(204)를 구성하도록 제어 회로(208)에 명령한다. 위성 제어기(202)로부터의 명령들을 수신하는 것에 응답하여, 제어 회로(208)는 설명된 바와 같이 스위치(204)를 구성하는데 필요한 제어 신호들을 생성한다. 하나 이상의 예시적인 구현들에서, 제어 회로(208)를 통한 스위치(204)의 구성에 따라, 위성 제어기(202)는 메모리들(214) 중 하나 또는 둘 모두에 판독 및/또는 기록할 수 있다.
[0051] OOB 보안 모드에서, 프로그램 가능 IC(132)에는 구성 메모리(216)에 대한 판독-전용 액세스가 제공된다. 이에 따라, 프로그램 가능 IC(132)는 적어도 초기에는 구성 메모리(216)로부터 판독된 부트 이미지를 사용하여 부팅할 수 있다. 부트 이미지는 일단 프로그램 가능 IC(132)에 로드되면, 프로그램 가능 IC(132)에서 보안 회로 설계(220)를 구현할 수 있다. 보안 회로 설계(220)의 특정 구현은 IB 보안 모드와 OOB 보안 모드에 대해 상이할 수 있음을 인식해야 한다. 즉, OOB 보안 모드에 대한 경우와 상이한 보안 회로 설계가, IB 보안 모드에 대해 구성 메모리(216)에 저장되고, 그로부터 판독되고, 프로그램 가능 IC(132)에서 구현될 수 있다. 예로서, IB 보안 모드의 경우에, 보안 회로 설계(220)는 호스트 프로세서(106)로부터 수신되는 특정 구성 데이터의 인증을 수행하고 인증된 구성 데이터를 구성 메모리(216)에 기록할 수 있는 반면, OOB 보안 모드의 경우 보안 회로 설계(220)는 그러한 기능들을 수행할 수 없을 수 있다.
[0052] OOB 보안 모드에서, 위성 제어기(202)는 통신 채널(128)을 통해 BMC(210)와 통신한다. 즉, 위성 제어기(202)는 위성 제어기(202)가 통신 채널(128)을 통해, 루트 오브 트러스트인 BMC(210)로부터 수신되는 커맨드들 또는 통신들에 응답하는 모드에 놓인다. 위성 제어기(202)는 프로그램 가능 IC(132) 및/또는 가속기 카드(104) 내의 보안 프로토콜들의 구현과 관련하여 BMC(210)로부터 수신되는 추가 명령들에 응답할 수 있다.
[0053] 일 양상에서, OOB 보안 모드는 위성 제어기(202)가 먼저 BMC(210)에 의해 인증되는 것을 의미한다. 일단 BMC(210)에 의해 인증되면, 위성 제어기(202)는 루트 오브 트러스트로서 행동하는 BMC(210)로부터 수신될 수 있는 추가 구성 데이터를 인증할 수 있다. 예를 들어, 위성 제어기(202)는 루트 오브 트러스트로서 행동하는 BMC(210)로부터 프로그램 가능 IC(132)에 대한 또 다른 부트 이미지를 수신할 수 있다. 부트 이미지를 수신하는 것에 응답하여, 위성 제어기(202)는 부트 이미지를 인증할 수 있다. 예를 들어, 위성 제어기(202)는 수신된 부트 이미지로부터 해시 값을 생성하고 그 해시 값을 알려지거나 미리 결정된 해시 값과 비교할 수 있다. 위성 제어기(202)는 인증된 구성 데이터, 또는 부트 이미지를 구성 메모리(216)에 기록할 수 있다. 따라서, 프로그램 가능 IC(132)는 부트 이미지의 인증을 수행하지 않거나 임의의 그러한 데이터를 구성 메모리(216)에 기록하지 않는다. 보안 위성 제어기(202)에게 구성 메모리(216)에 기록할 수 있는 권한을 부여함으로써, 루트 오브 트러스트는 BMC(210)로부터 위성 제어기(202)로 확장된다.
[0054] 하나 이상의 예시적인 구현들에서, OOB 보안 모드는 가속기 카드(104)를 사용하는 특정 고객 또는 사용자에 기반하여 가속기 카드(104)를 구성하기 위해 특정 루틴(routine)들을 구현할 수 있다. 예를 들어, 보안 ID는 특정 보안 모드를 명시할 수 있으며, 또한 위성 제어기(202)에 의해 실행될 루틴들의 특정 세트를 명시할 수 있다. 예로서, 보안 ID는 가속기 카드(104)를 사용할 특정 엔티티(entity)를 표시하는 하나 이상의 최하위 비트(least significant bit)들을 포함할 수 있다. 실행되는 루틴들은 가속기 카드(104)의 특정 사용자에게 특수할 수 있다.
[0055] 예로서, 위성 제어기(202)는 가속기 카드(104)를 사용하는 특정 하이퍼스케일 벤더(vendor)에 특수한 특정 루틴들을 실행할 수 있다. 위성 제어기(202)는 복수의 상이한 하이퍼스케일 벤더들에 대응하는 복수의 루틴들을 포함할 수 있다. 복수의 상이한 보안 ID들은 OOB 보안 모드를 표시할 수 있으며, 각각의 그러한 상이한 보안 ID는 상이한 벤더에 대응한다. 보안 ID를 판독하고 OOB 보안 모드를 구현하면, 위성 제어기(202)는 그러한 보안 루틴들, 예를 들어 보안 ID와 연관된 복수의 루틴들 중 선택된 루틴들만을 실행할 수 있다. 예를 들어, 보안 ID에 의해 표시된 하이퍼스케일 벤더에 대응하는 그러한 보안 루틴들만이 위성 제어기(202)에 의해 실행되거나 구현된다.
[0056] 도 2의 예에서, 보안 회로 설계(220)는 프로그램 가능 IC(132)를 부팅하는 데 사용되는 "골든(golden)" 또는 신뢰된 회로 설계로 간주될 수 있다. 보안 회로 설계(220)는 호스트 프로세서(106) 또는 BMC(210)가 구성의 나머지를 수행하도록 허용한다. 언급된 바와 같이, 보안 회로 설계(220)의 특정 버전(version) 또는 구현은 가속기 카드(104)에 의해 구현되는 특정 보안 모드에 기반하여 달라질 수 있다. 보안 회로 설계(220)는 일단 가속기 카드(104)가 필드에 있으면 루트 오브 트러스트에 의해 업데이트될 수 있다.
[0057] 프로그램 가능 IC(132)가 보안 회로 설계(220)가 내부에 구현되고 루트 오브 트러스트로부터의 임의의 보안 관련 명령들이 실행된 상태로 부팅되면, 프로그램 가능 IC(132)는 알려진 양호한 상태에 있다. 그 시점에서 프로그램 가능 IC(132)는 구현된 특정 보안 모드에 관계없이 사용자-지정 회로부(224)를 구현하는 애플리케이션 구성 데이터가 로드될 수 있다. 애플리케이션 구성 데이터는 루트 오브 트러스트로부터 수신된 부트 이미지와 구분되어야 한다. 일단 사용자-지정 회로부(224)가 프로그램 가능 IC(132)에서 구현되면, 애플리케이션 구성 데이터 및 워크로드를 수행하는 것의 부분으로서 운용될 데이터가 호스트 프로세서(106)로부터 통신 채널(126)을 통해 제공된다.
[0058] 본 개시내용 내에서 설명된 예들은 동일한 가속기 카드가 상이한 컴퓨팅 환경들에서 사용될 수 있게 허용한다. 예를 들어, 가속기 카드(104)는 IB 보안 모드를 사용하는 OEM 유형의 프레임워크(framework) 또는 OOB 보안 모드를 사용하는 하이퍼스케일 유형의 프레임워크를 지원하기 위해 제조 시 특정 보안 ID가 로드되기만 하면 된다. IB 보안 모드가 구현되는 경우 호스트 컴퓨터는 예를 들어 BMC를 가질 수 있거나 또는 갖지 않을 수도 있다. 명세서에 설명되는 본 발명의 어레인지먼트들은 가속기 카드의 하나의 모델이 두 개의 상이한 루트 오브 트러스트 프레임워크들을 지원할 수 있게 허용한다. 설명된 상이한 루트 오브 트러스트 프레임워크들을 지원하기 위해 가속기 카드(104)에 대한 두 개의 상이한 물리적 구현들이 생성될 필요는 없다.
[0059] 도 3은 가속기 카드에서 보안 모드들의 정적 구성의 예시적인 방법(300)을 예시한다. 가속기 카드는 도 1 및 도 2와 관련하여 설명된 바와 같이 구현될 수 있다.
[0060] 블록(302)에서, 가속기 카드(104)는 리셋 이벤트에 응답하여 전원이 켜지거나 리셋된다. 가속기 카드(104)의 전원이 켜지거나 리셋되는 것에 응답하여 위성 제어기(202)가 부팅된다. 블록(304)에서, 위성 제어기(202)는 PROM(206)의 지정된 또는 미리 결정된 메모리 위치로부터 보안 ID를 판독한다. 보안 ID는 가속기 카드(104) 제조 시에 PROM(206)에 저장될 수 있다.
[0061] 언급된 바와 같이, 보안 ID는 가속기 카드(104)에 의해 IB 보안 모드 또는 OOB 보안 모드가 구현될지 여부를 표시한다. IB 보안 모드는 하나의 엔티티, 예를 들어 호스트 프로세서(106)를 루트 오브 트러스트로서 인식한다. OOB 보안 모드는 또 다른 엔티티, 예를 들어 BMC(210)를 루트 오브 트러스트로서 인식한다. 각각의 상이한 루트 오브 트러스트는 루트 오브 트러스트를 확장하기 위해 상이한 신호 경로 또는 프레임워크를 이용한다.
[0062] 블록(306)에서, 위성 제어기(202)는 PROM(206)으로부터 판독된 보안 ID에 기반하여 가속기 카드(104)에서 구현될 특정 보안 모드를 결정한다. 보안 ID는 예를 들어 IB 보안 모드 또는 OOB 보안 모드를 표시한다. 언급된 바와 같이, 보안 ID는 또한 OOB 보안 모드의 경우에 보안 프로토콜들의 특정 세트 또는 위성 제어기(202)에 의해 수행될 작업들을 명시할 수 있다. 블록(308)에서 보안 ID가 IB 보안 모드를 표시한다고 결정하는 것에 응답하여, 방법(300)은 블록(310)으로 계속된다. 블록(308)에서 보안 ID가 OOB 보안 모드를 표시한다고 결정하는 것에 응답하여, 방법(300)은 블록(320)으로 계속된다.
[0063] 블록(310)으로 계속해서, 위성 제어기(202)는 스위치(204)를 구성하기 위해 제어 회로(208)에 명령들을 제공한다. 블록(312)에서, 제어 회로(208)는 위성 제어기(202)로부터의 명령들에 응답하여, 구성 메모리(216)에 대한 판독 및 기록 액세스를 프로그램 가능 IC(132)에 제공하고 구성 메모리(216) 및 백업 구성 메모리(218)로부터 위성 제어기(202)를 연결 해제하도록, 스위치(204)를 구성하도록 스위치(204)에 제어 신호들을 제공한다. 예를 들어, 스위치(204)는 위성 제어기(202)가 연결되는 포트를 디스에이블(disable)하도록 구성될 수 있다.
[0064] 블록(314)에서, 프로그램 가능 IC(132)는 구성 메모리(216)로부터 판독되는 바와 같이, 보안 회로 설계(220)로 부팅한다. 즉, 프로그램 가능 IC(132)는 구성 메모리(216)로부터 보안 회로 설계(220)에 대한 부트 이미지를 판독하고 부트 이미지를 프로그램 가능 IC(132)에 로드하며, 이에 의해 내부에 보안 회로 설계(220)를 구현한다. 블록(316)에서, 보안 회로 설계(220)는 루트 오브 트러스트로서 호스트 프로세서(106)로부터 수신된 커맨드들에 응답하기 위한 모드에 들어간다. 예를 들어, 보안 회로 설계(220)는 통신 채널(126)을 통해 호스트 프로세서(106)와 통신하기 위한 통신 엔드포인트를 구현할 수 있다. 채널(126)을 통해 보안 회로 설계(220)는 부트 이미지, 부트 이미지를 인증하기 위한 명령들 및 인증된 부트 이미지를 구성 메모리(216)에 저장하기 위한 명령들을 제공하는 호스트 프로세서(106)로부터의 커맨드들을 수신할 수 있다. 보안 회로 설계(220)는 통신 채널(126)을 통해 호스트 프로세서(106)로부터 수신된 커맨드들에 응답하여 내부에 다른 보안 조치들 및/또는 프로토콜들을 구현하기 위해 프로그램 가능 IC(132) 및/또는 가속기 카드(104)의 다른 구성요소들을 추가로 구성할 수 있다.
[0065] 블록(318)에서, 호스트 프로세서(106)는 통신 채널(126)을 통해 애플리케이션 구성 데이터를 프로그램 가능 IC(132)에 로드할 수 있다. 일단 로드된 애플리케이션 구성 데이터는 프로그램 가능 IC(132) 내에 사용자-지정 회로부(224)를 구현한다. 예를 들어, 프로그램 가능 IC(132) 내에서 임의의 보안 프로토콜들 및/또는 조치들의 구현 이후에, 보안 구성이 일단 완료되면 애플리케이션 구성 데이터가 프로그램 가능 IC(132)에 로드된다. 프로그램 가능 IC(132)에 사용자-지정 회로부(224)가 구현된 상태에서, 호스트 프로세서(106)는 사용자-지정 회로부(224)에 의해 수행되는 워크로드의 부분으로서 운용될 데이터를 프로그램 가능 IC(132)에 전송할 수 있다.
[0066] 블록(320)으로 계속해서, 위성 제어기(202)는 스위치(204)를 구성하기 위해 제어 회로(208)에 명령들을 제공한다. 블록(322)에서, 제어 회로(208)는 위성 제어기(202)로부터의 명령들에 응답하여, 구성 메모리(216)에 대한 판독-전용 액세스를 프로그램 가능 IC(132)에 제공하고 구성 메모리(216)에 대한 판독 및 기록 액세스를 위성 제어기(202)에 제공하도록, 스위치(204)를 구성하도록 스위치(204)에 제어 신호들을 제공한다.
[0067] 블록(324)에서, 위성 제어기(202)는 BMC(210)로부터 수신된 커맨드들에 응답하기 위한 모드에 들어간다. 예를 들어, BMC(210)는 통신 채널(128)을 통해 위성 제어기(202)와 통신할 수 있다. 채널(128)을 통해 위성 제어기(202)는 부트 이미지, 부트 이미지를 인증하기 위한 명령들, 및 인증된 부트 이미지를 구성 메모리(216)에 저장하기 위한 명령들을 제공하는 BMC(210)로부터의 커맨드들을 수신할 수 있다. 위성 제어기(202)는 추가로 통신 채널(128)을 통해 BMC(210)로부터 수신된 커맨드들에 응답하여 내부에 다른 보안 조치들 및/또는 프로토콜들을 구현할 수 있다.
[0068] 블록(326)에서, 프로그램 가능 IC(132)는 구성 메모리(216)로부터 판독된 바와 같이, 보안 회로 설계(220)로 부팅한다. 즉, 프로그램 가능 IC(132)는 구성 메모리(216)로부터 보안 회로 설계(220)에 대한 부트 이미지를 판독하고 부트 이미지를 프로그램 가능 IC(132)로 로드하며, 이에 의해 내부에 보안 회로 설계(220)를 구현한다.
[0069] 블록(326) 이후에, 방법(300)은 사용자-지정 회로부(224)가 호스트 프로세서(106)의 제어하에 프로그램 가능 IC(132)에서 구현될 수 있고 사용자-지정 회로부(224)가 설명된 바와 같이 워크로드를 수행할 수 있는 블록(318)으로 계속될 수 있다.
[0070] 도 4는 가속기 카드에서 보안 모드들의 정적 구성에 대한 또 다른 예시적인 방법(400)을 예시한다. 가속기 카드는 도 1 및 도 2와 관련하여 설명된 바와 같이 구현될 수 있다.
[0071] 블록(402)에서, 위성 제어기는 리셋 이벤트에 응답하여 가속기 카드의 판독-전용 메모리의 지정된 필드로부터 보안 식별자를 판독한다. 블록(404)에서, 보안 식별자에 기반하여, 위성 제어기는 가속기 카드에 대해 복수의 보안 모드들로부터 보안 모드를 선택한다. 블록(406)에서 선택된 보안 모드가 가속기 카드 내에서 구현된다.
[0072] 전술한 구현 및 다른 구현들은 각각 선택적으로 다음 피처들 중 하나 이상을 단독으로 또는 조합하여 포함할 수 있다. 일부 예시적인 구현들은 다음 피처들을 모두 조합하여 포함한다.
[0073] 일 양상에서, 복수의 보안 모드들은 IB 보안 모드 및 OOB 보안 모드를 포함한다.
[0074] 방법은 IB 보안 모드를 구현하는 것에 응답하여, 가속기 카드에 대한 루트 오브 트러스트로서 가속기 카드와 통신하는 호스트 컴퓨터의 호스트 프로세서를 지정하는 단계를 포함할 수 있다.
[0075] 가속기 카드는 프로그램 가능 IC 및 프로그램 가능 IC에 대한 구성 메모리를 포함할 수 있다.
[0076] 방법은 IB 보안 모드를 구현하는 것에 응답하여, 부트 이미지의 수신을 위하여 호스트 프로세서와 프로그램 가능 IC 간의 IB 통신 채널을 인에이블하는 단계를 포함할 수 있다. 프로그램 가능 IC는 부트 이미지를 인증하고 부트 이미지를 구성 메모리에 저장하도록 구성된다.
[0077] 방법은 OOB 보안 모드를 구현하는 것에 응답하여, 가속기 카드에 대한 루트 오브 트러스트로서 호스트 컴퓨터의 BMC를 지정하는 단계를 포함할 수 있다.
[0078] 방법은 OOB 보안 모드를 구현하는 것에 응답하여, 부트 이미지의 수신을 위하여 위성 제어기와 BMC 간의 OOB 통신 채널을 인에이블하는 단계를 포함할 수 있다. 위성 제어기는 부트 이미지를 인증하고 구성 메모리에 부트 이미지를 저장하도록 구성될 수 있다.
[0079] 가속기 카드는 구성 메모리, 프로그램 가능 IC 및 위성 제어기에 결합된 스위치를 포함할 수 있으며, 스위치는 위성 제어기에 의해, 선택된 보안 모드에 기반하여 프로그램 가능 IC 또는 위성 제어기에 구성 메모리에 대한 기록 액세스를 제공하도록 구성된다.
[0080] 방법은 IB 보안 모드를 구현하는 것에 응답하여, 구성 메모리에 대한 판독 및 기록 액세스를 프로그램 가능 IC에 제공하고 구성 메모리로부터 위성 제어기를 연결 해제하도록 스위치를 구성하는 단계를 포함할 수 있다.
[0081] 방법은 OOB 보안 모드를 구현하는 것에 응답하여, 구성 메모리에 대한 판독-전용 액세스를 프로그램 가능 IC에 제공하고 구성 메모리에 대한 판독 및 기록 액세스를 위성 제어기에 제공하도록 스위치를 구성하는 단계를 포함할 수 있다.
[0082] 또 다른 양상에서, 판독-전용 메모리에는 보안 식별자가 미리 로드될 수 있고, 판독-전용 메모리는 위성 제어기에 의해서만 판독 가능하다.
[0083] 하나 이상의 예시적인 구현들에서, IB 보안 모드는 서버들이 온 프레미스(on-premise)인 OEM 서버 인프라스트럭처(infrastructure)들과 함께 사용될 수 있다. OEM 서버 인프라스트럭처가, 가속기 카드가 라이브 비디오 스트리밍(live video streaming)과 같은 특정 기능을 수행할 수 있게 하는 예를 고려한다. 그러한 경우, IB 보안 모드는 루트 오브 트러스트가 서버(예를 들어, 호스트 프로세서)에서 운영 체제의 수두(sudo) 역할로 확장되는 경우에 사용될 수 있다. 수두 역할은 사용자가 또 다른 사용자에 대한 보안 특권들을 가지고 프로그램을 실행하도록 허용하는 컴퓨터 운영 체제 피처를 지칭한다.
[0084] 퍼블릭(public) 클라우드 컴퓨팅 환경, 예를 들어 하이퍼스케일 컴퓨팅 환경에서 가속기 카드가 라이브 비디오 스트리밍을 제공하는 경우 OOB 보안 모드가 사용될 수 있다. 그러한 경우, 루트 오브 트러스트는 호스트 프로세서가 아니라 서버에 위치된 BMC이다. 퍼블릭 클라우드 컴퓨팅 환경에서 루트 오브 트러스트로서 호스트 프로세서를 사용하는 것은 외부 사용자들이 퍼블릭 클라우드의 서버 호스트에서의 라이브 비디오 스트리밍 서비스에 대한 액세스를 제공받을 수 있기 때문에 안전하지 않을 수 있다.
[0085] 본 명세서에 설명된 본 발명의 어레인지먼트들에 따르면, OOB 보안 모드는 BMC로부터 발행될 수 있는 다양한 커맨드들을 지원할 수 있다. 예를 들어, 위성 제어기는 OOB 보안 모드가 가속기 카드에서 구현되면 BMC로부터의 그러한 커맨드들에 응답할 수 있다. 이러한 커맨드들은 보안 펌웨어 업데이트들(예를 들어, 상이한 부트 이미지로 구성 메모리를 업데이트함)을 지원한다.
[0086] 다음은 위성 제어기에 의해 지원될 수 있는 커맨드들의 예이다.
Figure pct00001
가속기 카드 보안 상태 정보 판독. 이 커맨드는 위성 제어기에 의해 실행될 때 각각의 구성 디바이스(예를 들어, 구성 메모리(216) 및/또는 복구 구성 메모리(218))에 대한 기록 방지 상태, 액세스 모드, 및 부트 이미지 인증 상태에 대한 정보를 제공하는 판독 커맨드이다.
Figure pct00002
디폴트 부트 디바이스(default boot device) 선택. 이 커맨드는 전원이 켜질 때마다 프로그램 가능 IC(132)가 그로부터 부팅되는 디폴트 부트 디바이스로서의 하나의 구성 디바이스를 선택하는 옵션(option)을 제공하는 기록 커맨드이다. 예를 들어, 디폴트 부트 디바이스는 이 커맨드를 사용하여 구성 메모리(216) 또는 복구 구성 메모리(218)로 설정될 수 있다.
Figure pct00003
선택한 구성 디바이스에 보안 설정들을 구성. 이 커맨드는 가속기 카드에서 사용 가능한 보안 설정들 중 임의의 설정을 선택된 구성 디바이스에 적용하는 옵션을 제공하는 기록 커맨드이다. 보안 설정들 옵션들은 구성 메모리(216) 및/또는 복구 구성 메모리(218)에 대한 기록 인에이블/디스에이블 및 SPI 액세스의 상이한 모드들을 포함한다.
Figure pct00004
위성 제어기 펌웨어의 인증 및 위성 제어기에 대한 보안 펌웨어 업데이트 실행. 이것은 OOB 통신 채널을 통한 위성 제어기에 대한 펌웨어의 인증 및 위성 제어기에 대한 펌웨어의 업데이트를 가능하게 하는 판독 및 기록 커맨드들의 모음을 지칭한다. 예로서, 인증은 디폴트 AES 또는 암호화/복호화 선택 및 펌웨어 업데이트 중 CRC 검사들을 포함할 수 있다.
Figure pct00005
주 구성 디바이스의 보안 펌웨어 업데이트. 이것은 구성 메모리(216) 및/또는 복구 구성 메모리(218)의 보안 펌웨어 업데이트를 가능하게 하는 판독 및 기록 커맨드들의 모음을 지칭한다. 그러한 커맨드(들)을 수신하는 것에 응답하여, 위성 제어기는 PROM으로부터 보안 ID를 확인하고 구성 메모리의 업데이트가 허용되는지를 확인한다. 보안 ID의 성공적인 검증 시에만 이 범주의 기록 커맨드들이 인에이블된다. 이 범주 내의 커맨드들은 상태 판독들, 부트 이미지 페이로드(payload) 전송, 및 CRC 검사들을 포함한다. 위성 제어기 내에서 내부적으로, 이러한 커맨드들은 위성 제어기가 구성 메모리의 올바른 섹터(sector)에 부트 이미지를 기록하고, 부트 이미지에 대해 CRC 비교를 수행하고, 실패 시 재시도하도록 수행하는 대응하는 액션(action)들을 트리거(trigger)한다.
Figure pct00006
주 구성 디바이스 내용(content)의 인증. 이것은 구성 메모리(216) 및/또는 복구 구성 메모리(218)에서 부트 이미지들의 완전한 인증을 가능하게 하는 판독 및 기록 커맨드들의 모음을 지칭한다. 하나 이상의 예시적인 구현들에서, 사용되는 특정 인증 체계나 프로토콜은 PROM에서 판독되는 특정 보안 ID에 따라 달라질 수 있다. 예를 들어, 복수의 상이한 보안 ID들 중 임의의 것이 PROM(206)에 명시될 수 있으며, 여기서 복수의 보안 ID들 각각은 OOB 보안 모드를 명시하고 각각의 보안 ID는 위성 제어기에 의해 구현되는 상이한 미리 정의된 인증 체계를 명시한다. 위성 제어기는 다수의 상이한 인증 체계들을 지원할 수 있지만 보안 ID에 기초한 런타임(runtime)에 하나의 인증 체계를 구현한다. 인증 상태는 상태 커맨드에 의해 제공될 수 있다. 인증 실패의 경우 위성 제어기는 인증되지 않은 내용을 완전히 지울 수 있다.
Figure pct00007
주 구성 디바이스로부터 보조 구성 디바이스로 인증된 내용을 전송. 이 커맨드는 구성 메모리(216)와 같은 주 구성 디바이스로부터 복구 구성 디바이스(218)와 같은 복구 디바이스로의 내용 복제를 가능하게 한다. 이 커맨드는 하드웨어에 공급되고 펌웨어에 의해 지원되어 결함 허용성(fault tolerance)을 달성할 수 있다. 구성 메모리(216)의 데이터 손상(corruption) 또는 손실의 경우, 프로그램 가능 IC(132)는 복구 구성 메모리(218)로부터 구성될 수 있다. 이 리던던시 피처를 인에이블하기 위해, 위성 제어기는 구성 데이터 또는 부트 이미지를 구성 메모리(216)로부터 복구 구성 메모리(218)로 복사하고, 이에 의해 IB 통신 채널보다 느린 속도로 동작하는 OOB 통신 채널을 통해 개별적으로 각각의 구성 메모리에 대해 상대적으로 더 느린 업데이트들을 수행할 필요를 제거한다. 내용 복제는 구성 메모리(218)에 저장된 구성 데이터의 위성 제어기에 의한 성공적인 인증에 응답하여서만 인에이블된다. 일 양상에서, 각각의 구성 디바이스의 인증 정보는 각각의 커맨드 작업 중에 교차 검증을 위해 위성 제어기의 내부 비휘발성 메모리에 저장될 수 있다.
[0087] 하나 이상의 예시적인 구현들에서, 위에 설명된 커맨드들은 백그라운드(background)에서 실행될 수 있다. 즉, 프로그램 가능 IC(132)는 위에서 설명된 커맨드들 중 하나 이상이 백그라운드에서 실행될 수 있는 동안 계속해서 동작할 수 있다. 예를 들어, 프로그램 가능 IC(132)는 주 구성 디바이스에 저장된 인증된 내용으로부터 부팅할 수 있고 워크로드 실행을 시작한다(예를 들어, 내부에 구현된 사용자-지정 회로부를 사용하여 호스트 컴퓨터에 의해 오프로드된 태스크들을 수행). 프로그램가능 IC(132)가 워크로드 실행을 수행하는 동안, 위성 제어기는 주 구성 디바이스에 대한 기록 액세스를 획득하고 백그라운드 작업으로서 주 구성 디바이스에 저장된 데이터의 보안 업데이트를 수행할 수 있다. 예를 들어, 프로그램 가능 IC(132)에 대한 인증된 부트 이미지의 저장과 같은 성공적인 업데이트 후에, 가속기 카드는 새로운 펌웨어로 재부팅될 수 있다. 재부팅 시, 프로그램 가능 IC(132)는 새로운 부트 이미지를 로드하고 이에 의해 프로그램 가능 IC(132)에서 구현되는 보안 회로 설계의 업데이트를 허용한다.
[0088] 위성 제어기에 대한 펌웨어는 PROM(206)으로부터 판독된 보안 ID에 기반하여 보안 피처들을 인에이블 또는 디스에이블한다. 보안 레벨들 및 각각의 보안 레벨의 구현 세부 사항은 미리 정의되고 보안 ID들 중 개개의 것들에 할당될 수 있다. 전술한 커맨드들은 보안 ID의 필요 조건들에 따라서만 인에이블될 수 있다. 커맨드들 각각은 PROM(206)에 기록된 보안 ID에 기반하여 사용되는 맞춤형 구성 또는 구현을 가질 수 있다.
[0089] 도 5는 IC에 대한 예시적인 아키텍처(500)를 예시한다. 일 양상에서, 아키텍처(500)는 프로그램 가능 IC 내에서 구현될 수 있다. 예를 들어, 아키텍처(500)는 필드 프로그램 가능 게이트 어레이(FPGA)를 구현하는 데 사용될 수 있다. 아키텍처(500)는 또한 시스템-온-칩(SoC) 유형의 IC를 나타낼 수 있다. SoC는 프로그램 코드 및 하나 이상의 다른 회로들을 실행하는 프로세서를 포함하는 IC이다. 다른 회로들은 하드와이어드 회로부, 프로그램 가능 회로부 및/또는 이들의 조합으로 구현될 수 있다. 회로들은 서로 및/또는 프로세서와 협력하여 동작할 수 있다.
[0090] 도시된 바와 같이, 아키텍처(500)는 여러 상이한 유형들의 프로그램 가능 회로, 예를 들어 로직(logic), 블록(block)들을 포함한다. 예를 들어, 아키텍처(500)는 멀티-기가비트 트랜시버(multi-gigabit transceiver, MGT)들(501), 구성가능 로직 블록(configurable logic block, CLB)들(502), 랜덤 액세스 메모리 블록(random access memory block, BRAM)들(503), 입력/출력 블록(IOB)들(504), 구성 및 클로킹 로직(CONFIG/CLOCKS)(505), 디지털 신호 프로세싱 블록(digital signal processing block, DSP)들(506), 특수 I/O 블록들(507)(예를 들어, 구성 포트들 및 클록 포트들), 및 디지털 클록 관리자들, 아날로그-디지털 컨버터(analog-to-digital converter)들, 시스템 모니터링 로직(system monitoring logic) 등과 같은 기타 프로그램 가능 로직(508)을 포함하는 많은 수의 상이한 프로그램 가능 타일(tile)들을 포함할 수 있다.
[0091] 일부 IC들에서, 각각의 프로그램 가능 타일은 프로그램 가능 상호연결 요소(INT)(511)를 포함하고, 이는 각각의 인접 타일에서의 대응하는 INT(511)로 그리고 이로부터 표준화된 연결들을 갖는다. 따라서, INT들(511)은 함께 취해져서 예시된 IC를 위한 프로그램 가능 상호연결 구조를 구현한다. 각각의 INT(511)는 또한 도 5의 우측에 포함된 예들로 도시된 바와 같이, 동일한 타일 내의 프로그램 가능 로직 요소로 그리고 이로부터의 연결들을 포함한다.
[0092] 예를 들어, CLB(502)는 사용자 로직과 단일 INT(511)를 구현하도록 프로그래밍될 수 있는 구성가능 로직 요소(configurable logic element, CLE)(512)를 포함할 수 있다. BRAM(503)은 하나 이상의 INT들(511)에 부가하여 BRAM 로직 요소(BRL)(513)를 포함할 수 있다. 전형적으로 타일에 포함되는 INT들(511)의 수는 타일의 높이에 따라 달라진다. 도시된 바와 같이, BRAM 타일은 5 개의 CLB들과 동일한 높이를 가지지만 다른 개수들(예를 들어, 4 개)도 사용될 수 있다. DSP 타일(506)은 적절한 수의 INT들(511)에 부가하여 DSP 로직 요소(DSPL)(514)를 포함할 수 있다. IOB(504)는 예를 들어, INT(511)의 하나의 인스턴스(instance)에 부가하여 I/O 로직 요소(IOL)(515)의 두 개의 인스턴스들을 포함할 수 있다. IOL(515)에 연결된 실제 I/O 패드(pad)들은 IOL(515) 에어리어(area)에 국한되지 않을 수 있다.
[0093] 도 5에 도시된 예에서, 예를 들어 영역들(505, 507, 508)로 형성된 다이(die)의 중심 근처의 수평 에어리어는 구성, 클록 및 기타 제어 로직을 위해 사용될 수 있다. 이 수평 에어리어로부터 연장되는 수직 에어리어들(509)은 프로그램 가능 IC의 폭에 걸쳐 클록들 및 구성 신호들을 분배하는 데 사용될 수 있다.
[0094] 도 5에 예시된 아키텍처를 이용하는 일부 IC들은 IC의 많은 부분을 구성하는 규칙적인 컬럼 구조(columnar structure)를 방해하는 추가적인 로직 블록들을 포함한다. 추가적인 로직 블록들은 프로그램 가능 블록들 및/또는 전용 회로부일 수 있다. 예를 들어, PROC(510)로 묘사된 프로세서 블록은 CLB들 및 BRAM들의 여러 컬럼들에 걸쳐 있다.
[0095] 일 양상에서, PROC(510)는 IC의 프로그램 가능 회로부를 구현하는 다이의 부분으로서 제조되는 하드와이어드 프로세서와 같은, 전용 회로부로서 구현될 수 있다. PROC(510)는 개별 프로세서, 예를 들어 프로그램 코드를 실행할 수 있는 단일 코어(core)에서 하나 이상의 코어들, 모듈들, 공동-프로세서들, 인터페이스들 등을 갖는 전체 프로세서 시스템에 이르기까지 복잡도 범위의 다양한 상이한 프로세서 유형들 및/또는 시스템들 중 임의의 것을 나타낼 수 있다.
[0096] 다른 양상에서, PROC(510)는 아키텍처(500)에서 생략될 수 있고 설명된 프로그램 가능 블록들의 다른 종류들 중 하나 이상으로 대체될 수 있다. 추가로, 그러한 블록들은 PROC(510)의 경우와 같이 프로그램 코드를 실행할 수 있는 프로세서를 형성하기 위해 프로그램 가능 회로부의 다양한 블록들이 사용될 수 있다는 점에서 "소프트 프로세서"를 형성하는 데 이용될 수 있다.
[0097] "프로그램 가능 회로부"라는 문구는 IC 내의 프로그램 가능 회로 요소들, 예를 들어 다양한 회로 블록들, 타일들 및/또는 IC에 로드된 구성 데이터에 따른 요소들을 선택적으로 결합하는 상호연결 회로부뿐만 아니라, 여기에 설명된 다양한 프로그램 가능하거나 구성 가능한 회로 블록들 또는 타일들을 지칭한다. 예를 들어, CLB들(502) 및 BRAM들(503)과 같이 PROC(510) 외부에 있는 도 5에 도시된 회로 블록들은 IC의 프로그램 가능 회로부로 간주된다.
[0098] 대체로, 프로그램 가능 회로부의 기능성은 구성 데이터가 IC에 로드될 때까지 확립되지 않는다. 구성 비트(configuration bit)들의 세트가 FPGA와 같은 IC의 프로그램 가능 회로부를 프로그래밍하는 데 사용될 수 있다. 구성 비트(들)는 전형적으로 "구성 비트스트림(configuration bitstream)"이라고 지칭된다. 대체로, 프로그램 가능 회로부는 IC에 구성 비트스트림을 먼저 로드함이 없이는 동작하거나 기능하지 않는다. 구성 비트스트림은 프로그램 가능 회로부 내에서 특정 회로 설계를 유효하게 구현한다. 회로 설계는, 예를 들어 프로그램 가능 회로 블록들의 기능적 측면들과 다양한 프로그램 가능 회로 블록들 간의 물리적 연결성을 명시한다.
[0099] "하드와이어드" 또는 "경화된(hardened)", 즉 프로그램 가능하지 않은 회로부가 IC의 부분으로서 제조된다. 프로그램 가능 회로부와 달리 하드와이어드 회로부 또는 회로 블록들은 IC 제조 후에 구성 비트스트림의 로드를 통해 구현되지 않는다. 하드와이어드 회로부는 대체로, 예를 들어 구성 비트스트림을 PROC(510)과 같은 IC에 먼저 로드하지 않고서 기능하는, 전용 회로 블록들 및 상호연결부들을 갖는 것으로 간주된다.
[00100] 일부 인스턴스들에서, 하드와이어드 회로부는 IC 내의 하나 이상의 메모리 요소들에 저장된 값들 또는 레지스터 설정(register setting)들에 따라 설정되거나 선택될 수 있는 하나 이상의 동작 모드들을 가질 수 있다. 동작 모드들은, 예를 들어 구성 비트스트림을 IC로 로드하는 것을 통해 설정될 수 있다. 이러한 능력에도 불구하고, 하드와이어드 회로부는 IC의 부분으로 제조될 때 동작가능하고 특정 기능을 갖기 때문에 프로그램 가능 회로부로 간주되지 않는다.
[00101] SoC의 경우에, 구성 비트스트림은 프로그램 가능 회로부 내에서 구현될 회로부 및 PROC(510) 또는 소프트 프로세서에 의해 실행될 프로그램 코드를 명시할 수 있다. 일부 경우들에서, 아키텍처(500)는 구성 비트스트림을 적절한 구성 메모리 및/또는 프로세서 메모리에 로드하는 전용 구성 프로세서를 포함한다. 전용 구성 프로세서는 사용자-지정 프로그램 코드를 실행하지 않는다. 다른 경우들에서, 아키텍처(500)는 구성 비트스트림을 수신하고, 구성 비트스트림을 적절한 구성 메모리에 로드하고/하거나 실행을 위한 프로그램 코드를 추출하기 위해 PROC(510)를 이용할 수 있다.
[00102] 도 5는 프로그램 가능 회로부, 예를 들어 프로그램 가능 패브릭(programmable fabric)을 포함하는 IC를 구현하는 데 사용될 수 있는 예시적인 아키텍처를 예시하기 위한 것이다. 예를 들어, 한 컬럼의 로직 블록들의 수, 컬럼들의 상대적 폭, 컬럼들의 수와 순서, 컬럼들에 포함된 로직 블록들의 유형들, 로직 블록들의 상대적 크기들, 및 도 5의 우측에 포함된 상호연결/로직 구현들은 순전히 예시적이다. 실제 IC에서는, 예를 들어, 사용자 회로 설계의 효율적인 구현을 용이하게 하기 위해 CLB들이 나타나는 곳마다 CLB들의 하나보다 많은 인접한 컬럼이 전형적으로 포함된다. 그러나 인접한 CLB 컬럼들의 수는 IC의 전체 크기에 따라 달라질 수 있다. 추가로, IC 내의 PROC(510)과 같은 블록들의 크기 및/또는 포지셔닝은 단지 예시를 위한 것이며 제한들로 의도되지 않는다.
[00103] 도 5는 프로그램 가능 IC(132)의 예시적인 구현으로서 제공되며 본 명세서에 설명된 본 발명의 어레인지먼트들의 목적들을 위해 가속기 카드에 구현될 수 있는 IC들의 유형들에 대한 제한으로 의도되지 않는다. 다른 유형들의 프로그램 가능 IC들이 사용될 수 있다. 일부 경우들에서, 프로그램 가능 IC(132)는 호스트 컴퓨터와 통신하기 위해 경화된 버스 엔드포인트, 예를 들어 PCIe 엔드포인트를 포함할 수 있다. 다른 경우들에서, 버스 엔드포인트는 프로그램 가능 회로부에서 구현될 수 있다. 이와 관련하여, 보안 회로 설계는 부트 이미지 로드에 응답하여 전적으로 프로그램 가능 로직으로 구현되거나, 부트 이미지의 로드에 응답하여 부분적으로는 프로그램 가능 로직으로 구현되고 부분적으로는 하나 이상의 하드와이어드 회로 블록들로 구현될 수 있다. 일부 경우들에서, 프로그램 가능 IC는 프로그램 가능 IC의 다른 프로세서들 및/또는 서브시스템들(예를 들어, 프로그램 가능 로직)과 협력하여 동작할 수 있는 프로세서 어레이를 포함할 수 있다.
[00104] 설명의 목적들을 위해, 본 명세서에 개시된 다양한 발명적 개념의 완전한 이해를 제공하기 위해 특정 명명법이 제시되어 있다. 그러나, 본 명세서에서 사용된 용어들은 본 발명의 어레인지먼트들의 특정 양상들을 설명하기 위한 목적일 뿐 제한으로 의도되지 않는다.
[00105] 여기에서 정의된 바와 같이, 단수 형태들("a", "an" 및 "the")은 문맥상 명백하게 달리 나타내지 않는 한, 복수 형태들도 포함하는 것으로 의도된다.
[00106] 여기에서 정의된 바와 같이, 용어 "적어도 하나", "하나 이상" 및 "및/또는"은 달리 명시적으로 언급되지 않는 한, 결합된 형태 및 분리된 형태 모두로 운용되는 개방형 표현들이다. 예를 들어, "A, B 및 C 중 적어도 하나", "A, B 또는 C 중 적어도 하나", "A, B 및 C 중 하나 이상", "A, B 또는 C 중 하나 이상", 및 "A, B 및/또는 C"의 표현들 각각은, A 단독, B 단독, C 단독, A와 B 함께, A와 C 함께, B와 C 함께, 또는 A, B 및 C 함께를 의미한다.
[00107] 여기에서 정의된 바와 같이, 용어 "자동으로(automatically)"는 사람의 개입이 없음을 의미한다. 일부 문맥들에서 용어 "사용자"는 사람을 의미한다.
[00108] 여기에서 정의된 바와 같이, 용어 "컴퓨터 판독가능 저장 매체"는 명령 실행 시스템, 장치 또는 디바이스에 의해 또는 이들과 관련하여 사용하기 위한 프로그램 코드를 포함하거나 저장하는 저장 매체를 의미한다. 여기에서 정의된 바와 같이, "컴퓨터 판독가능 저장 매체"는 그 자체로 일시적인, 전파하는 신호가 아니다. 컴퓨터 판독가능 저장 매체는 전자 저장 디바이스, 자기 저장 디바이스, 광 저장 디바이스, 전자기 저장 디바이스, 반도체 저장 디바이스, 또는 전술한 것들의 임의의 적합한 조합일 수 있다(그러나 이에 제한되지 않음). 본 명세서에 설명된 메모리의 다양한 형태들은 컴퓨터 판독가능 저장 매체들의 예들이다. 컴퓨터 판독가능 저장 매체의 보다 구체적인 예들의 비제한적인 목록은 휴대용 컴퓨터 디스켓(computer diskette), 하드 디스크(hard disk), RAM, 판독-전용 메모리(read-only memory, ROM), 소거가능 프로그램 가능 판독-전용 메모리(erasable programmable read-only memory)(EPROM 또는 플래시 메모리(Flash memory)), 전기적 소거가능 프로그램 가능 판독-전용 메모리(electronically erasable programmable read-only memory, EEPROM), 정적 랜덤 액세스 메모리(static random access memory, SRAM), 휴대용 컴팩트 디스크 판독-전용 메모리(compact disc read-only memory, CD-ROM), 디지털 다목적 디스크(digital versatile disk, DVD), 메모리 스틱(memory stick), 플로피 디스크(floppy disk) 등을 포함할 수 있다.
[00109] 여기에서 정의된 바와 같이, 용어 "~이면", "~할 때" 또는 "~ 시에"는 문맥에 따라 "~에 응답하여" 또는 "~에 반응하여"를 의미한다. 여기에서 정의된 바와 같이, 용어들 "~에 반응하여" 및 "~에 응답하여"는 액션 또는 이벤트에 쉽게 응답하거나 반응하는 것을 의미한다. 응답 또는 반응은 자동으로 수행된다. 따라서, 제2 액션이 제1 액션에 "~에 반응하여" 수행된다면, 제1 액션의 발생과 제2 액션의 발생 사이에는 인과관계가 존재한다. 용어 "에 반응하여"는 인과 관계를 표시한다.
[00110] 여기에서 정의된 바와 같이, 용어 "프로세서"는 프로그램 코드에 포함된 명령들을 수행할 수 있는 적어도 하나의 회로를 의미한다. 회로는 집적 회로이거나 집적 회로에 내장될 수 있다. 프로세서는 하드와이어드되거나 프로그램 가능 로직을 사용하여 구현될 수 있다.
[00111] 여기에서 정의된 바와 같이, 용어 "실질적으로"는 기재된 특징, 매개변수 또는 값이 정확히 달성될 필요는 없지만, 예를 들어 허용 오차들, 측정 오차, 측정 정확도 한계들 및 이 기술분야의 기술자들에게 알려진 기타 요인들을 포함하는 편차들 또는 변동들이 그 특징이 제공하려는 효과를 배제하지 않는 양으로 발생할 수 있음을 의미한다.
[00112] 용어들 제1, 제2 등은 다양한 요소들을 설명하기 위해 여기에서 사용될 수 있다. 이러한 요소들은 이러한 용어들에 의해 제한되어서는 안 되며, 이러한 용어들은 달리 언급되지 않거나 문맥이 명확하게 달리 표시하지 않는 한, 한 요소를 다른 요소와 구분하기 위해서만 사용되기 때문이다.
[00113] 컴퓨터 프로그램 제품은 프로세서로 하여금 본 명세서에 설명된 본 발명의 어레인지먼트들의 양상들을 수행하게 하기 위한 컴퓨터 판독가능 프로그램 명령들을 갖는 컴퓨터 판독가능 저장 매체(또는 매체들)를 포함할 수 있다. 본 개시내용 내에서, 용어 "프로그램 코드"는 용어 "컴퓨터 판독가능 프로그램 명령들"과 상호 교환적으로 사용된다. 본 명세서에 설명된 컴퓨터 판독가능 프로그램 명령들은 컴퓨터 판독가능 저장 매체로부터 개개의 컴퓨팅/프로세싱 디바이스들로 또는 네트워크, 예를 들어 인터넷, LAN, WAN 및/또는 무선 네트워크를 통해 외부 컴퓨터 또는 외부 저장 디바이스로 다운로드될 수 있다. 네트워크는 구리 전송 케이블(cable)들, 광 전송 섬유들, 무선 전송, 라우터들, 방화벽들, 스위치들, 게이트웨이 컴퓨터들 및/또는 에지 서버들을 포함하는 에지 디바이스들을 포함할 수 있다. 각각의 컴퓨팅/프로세싱 디바이스의 네트워크 어댑터 카드(network adapter card) 또는 네트워크 인터페이스는 네트워크로부터 컴퓨터 판독가능 프로그램 명령들을 수신하고 개개의 컴퓨팅/프로세싱 디바이스 내의 컴퓨터 판독가능 저장 매체에 저장하기 위해 컴퓨터 판독가능 프로그램 명령들을 전달한다.
[00114] 본 명세서에 설명된 본 발명의 어레인지먼트들에 대한 작업들을 수행하기 위한 컴퓨터 판독가능 프로그램 명령들은 어셈블러(assembler) 명령어들, 명령어 세트 아키텍처(instruction-set-architecture, ISA) 명령어들, 기계 명령어, 기계 의존적 명령어들, 마이크로코드(microcode), 펌웨어 명령어들, 또는 객체 지향 프로그래밍 언어 및/또는 절차적 프로그래밍 언어들을 포함하여 하나 이상의 프로그래밍 언어들의 임의의 조합으로 작성된 소스 코드(source code) 또는 목적 코드(object code)일 수 있다. 컴퓨터 판독가능 프로그램 명령들은 스테이트-설정 데이터(state-setting data)를 포함할 수 있다. 컴퓨터 판독가능 프로그램 명령들은 독립형 소프트웨어 패키지로서, 전적으로 사용자 컴퓨터에서, 부분적으로 사용자 컴퓨터에서, 부분적으로는 사용자 컴퓨터에서 부분적으로는 원격 컴퓨터에서, 또는 전적으로 원격 컴퓨터 또는 서버에서 실행될 수 있다. 후자의 시나리오에서 원격 컴퓨터는 LAN 또는 WAN을 포함하는 임의의 유형의 네트워크를 통해 사용자의 컴퓨터에 연결될 수 있거나, (예를 들어, 인터넷 서비스 공급자(Internet Service Provider)를 사용하여 인터넷을 통해) 외부 컴퓨터에 대한 연결이 이루어질 수 있다.
[00115] 본 발명의 어레인지먼트들의 특정 양상들이 방법들, 장치들(시스템들) 및 컴퓨터 프로그램 제품들의 흐름도 예시들 및/또는 블록도들을 참조하여 본 명세서에 설명된다. 흐름도 예시들 및/또는 블록도들의 각각의 블록, 및 흐름도 예시들 및/또는 블록도들에서 블록들의 조합들은 컴퓨터 판독가능 프로그램 명령들, 예를 들어 프로그램 코드에 의해 구현될 수 있음을 이해할 것이다.
[00116] 이러한 컴퓨터 판독가능 프로그램 명령들은 기계를 생산하기 위해 범용 컴퓨터, 특수 목적 컴퓨터의 프로세서, 또는 다른 프로그램 가능 데이터 프로세싱 장치에 제공되어, 컴퓨터의 프로세서 또는 다른 프로그램 가능 데이터 프로세싱 장치를 통해 실행되는 명령들이 흐름도 및/또는 블록도 블록 또는 블록들에서 명시된 기능들/동작들을 구현하기 위한 수단을 창조할 수 있다. 이러한 컴퓨터 판독가능 프로그램 명령들은 또한 컴퓨터, 프로그램 가능 데이터 프로세싱 장치, 및/또는 기타 디바이스들이 특정 방식으로 기능하도록 지시할 수 있는 컴퓨터 판독가능 저장 매체에 저장될 수 있으므로, 내부에 저장된 명령들을 갖는 컴퓨터 판독가능 저장 매체는 흐름도 및/또는 블록도 블록 또는 블록들에 명시된 작업들의 양상들을 구현하는 명령들을 포함하는 제조 물품을 포함한다.
[00117] 컴퓨터 판독가능 프로그램 명령들은 또한 컴퓨터 구현 프로세스를 생성하기 위해, 일련의 작업들이 컴퓨터, 다른 프로그램 가능 장치 또는 다른 디바이스에서 수행되게 하기 위해, 컴퓨터, 다른 프로그램 가능 데이터 프로세싱 장치, 또는 다른 디바이스에 로드되어, 컴퓨터, 다른 프로그램 가능 장치, 또는 다른 디바이스에서 실행되는 명령들이 흐름도 및/또는 블록도 블록 또는 블록들에 명시된 기능들/동작들을 구현할 수 있다.
[00118] 도면들에서 흐름도 및 블록도들은 본 발명의 어레인지먼트들의 다양한 양상들에 따른 시스템들, 방법들 및 컴퓨터 프로그램 제품들에 대한 가능한 구현들의 아키텍처, 기능성 및 작업을 예시한다. 이와 관련하여, 흐름도 또는 블록도에서 각각의 블록은 명시된 작업들을 구현하기 위한 하나 이상의 실행 가능한 명령들을 포함하는 모듈, 세그먼트(segment) 또는 명령들의 부분을 나타낼 수 있다.
[00119] 일부 대안적인 구현들에서, 블록들에 언급된 작업들은 도면들에서 언급된 순서와 다르게 발생할 수 있다. 예를 들어, 연속적으로 도시된 두 개의 블록들은 관여된 기능성에 따라 실질적으로 동시에 실행될 수 있거나 블록들은 때때로 역순으로 실행될 수 있다. 다른 예들에서, 블록들은 대체로 증가하는 숫자 순서로 수행될 수 있는 반면, 또 다른 예들에서는 하나 이상의 블록들이 다양한 순서로 수행될 수 있으며 결과들은 저장되고 후속의 또는 바로 뒤따르지 않는 다른 블록들에서 이용될 수 있다. 블록도들 및/또는 흐름도 예시의 각각의 블록, 및 블록도들 및/또는 흐름도 예시에서 블록들의 조합들은 명시된 기능들 또는 동작들을 수행하거나 특수 목적 하드웨어와 컴퓨터 명령들의 조합을 수행하는 특수 목적 하드웨어 기반 시스템들에 의해 구현될 수 있음이 또한 언급된다.
[00120] 하기의 청구항들에서 발견될 수 있는 모든 수단 또는 단계와 기능 요소들의 대응하는 구조들, 재료들, 동작들 및 등가물들은 특별히 청구된 다른 청구된 요소들과 조합하여 그 기능을 수행하기 위한 임의의 구조, 재료, 또는 동작을 포함하도록 의도된다.
[00121] 가속기 카드는 내부에 지정된 필드에 보안 ID를 저장하도록 구성된 판독-전용 메모리 및 리셋 이벤트에 응답하여 보안 ID를 판독하도록 구성된 위성 제어기를 포함할 수 있다. 위성 제어기는 보안 식별자에 기반하여 복수의 보안 모드들로부터 보안 모드를 선택하고, 선택된 보안 모드를 가속기 카드에서 구현하도록 구성될 수 있다.
[00122] 전술한 구현 및 다른 구현들은 각각 선택적으로 다음 피처들 중 하나 이상을 단독으로 또는 조합하여 포함할 수 있다. 일부 예시적인 구현들은 다음 피처들을 모두 조합하여 포함한다.
[00123] 일 양상에서, 복수의 보안 모드들은 IB 보안 모드 및 OOB 보안 모드를 포함한다.
[00124] IB 보안 모드는 가속기 카드에 대한 루트 오브 트러스트로서 가속기 카드와 통신하는 호스트 컴퓨터의 호스트 프로세서를 지정할 수 있다. OOB 보안 모드는 가속기 카드에 대한 루트 오브 트러스트로서 호스트 컴퓨터의 BMC를 지정할 수 있다.
[00125] 다른 양상에서, 가속기 카드는 프로그램 가능 IC 및 프로그램 가능 IC에 대한 구성 메모리를 포함한다.
[00126] IB 보안 모드는 부트 이미지의 수신을 위해 호스트 프로세서와 프로그램 가능 IC 사이에 IB 통신 채널을 인에이블할 수 있다. 프로그램 가능 IC는 부트 이미지를 인증하고 부트 이미지를 구성 메모리에 저장하도록 구성된다.
[00127] OOB 보안 모드는 부트 이미지의 수신을 위해 위성 제어기와 BMC 사이에 OOB 통신 채널을 인에이블할 수 있다. 위성 제어기는 부트 이미지를 인증하고 구성 메모리에 부트 이미지를 저장하도록 구성된다.
[00128] 다른 양상에서, 가속기 카드는 구성 메모리, 프로그램 가능 IC 및 위성 제어기에 결합된 스위치를 포함한다. 스위치는 선택된 보안 모드에 기반하여 프로그램 가능 IC 또는 위성 제어기에 구성 메모리에 대한 기록 액세스를 제공하도록 위성 제어기에 의해 구성된다.
[00129] 예를 들어, IB 보안 모드에서, 스위치는 프로그램 가능 IC에 구성 메모리에 대한 판독 및 기록 액세스를 제공하고 구성 메모리로부터 위성 제어기를 연결 해제하도록 구성된다. OOB 보안 모드에서, 스위치는 프로그램 가능 IC에 구성 메모리에 대한 판독-전용 액세스 제공하고 위성 제어기에 구성 메모리에 대한 판독 및 기록 액세스를 제공하도록 구성된다.
[00130] 가속기 카드는 위성 제어기로부터의 제어 신호에 응답하여 선택 신호들을 스위치에 제공하도록 구성된 제어 회로를 포함할 수 있다.
[00131] 다른 양상에서, 판독-전용 메모리에는 보안 식별자가 미리 로드되고, 판독-전용 메모리는 위성 제어기에 의해서만 판독 가능하다.
[00132] 본 명세서에 제공된 본 발명의 어레인지먼트들에 대한 설명은 예시를 위한 것이며 완전하거나 개시된 형태 및 예들에 제한되는 것으로 의도되지 않는다. 본 명세서에서 사용된 용어들은 본 발명의 어레인지먼트들의 원리들, 시장에서 발견되는 기술들에 대한 실제 적용 또는 기술적 개선을 설명하고/하거나 이 기술분야에서 통상의 기술자가 본 명세서에 개시된 본 발명의 어레인지먼트들을 이해할 수 있도록 하기 위해 선택되었다. 수정들 및 변형들이 설명된 본 발명의 어레인지먼트들의 범위 및 사상을 벗어나지 않고 이 기술분야의 통상의 기술자들에게 명백할 수 있다. 따라서, 그러한 피처들 및 구현들의 범위를 표시하는 것으로서 전술한 개시내용보다는 다음의 청구항들을 참조해야 한다.

Claims (15)

  1. 가속기 카드(accelerator card)로서,
    내부에 지정된 필드(field)에 보안 식별자(security identifier)를 저장하도록 구성된 판독-전용 메모리; 및
    리셋 이벤트(reset event)에 응답하여 상기 보안 식별자를 판독하도록 구성된 위성 제어기(satellite controller)를 포함하고;
    상기 위성 제어기는, 상기 보안 식별자에 기반하여, 복수의 보안 모드(security mode)들로부터 보안 모드를 선택하고, 상기 선택된 보안 모드를 상기 가속기 카드에서 구현하도록 구성되는,
    가속기 카드.
  2. 제1 항에 있어서,
    상기 복수의 보안 모드들은:
    상기 가속기 카드와 통신하는 호스트 컴퓨터의 호스트 프로세서를 상기 가속기 카드에 대한 루트 오브 트러스트(Root of Trust)로서 지정하는 인밴드 보안 모드(in-band security mode); 및
    상기 호스트 컴퓨터의 베이스보드 관리 제어기(baseboard management controller)를 상기 가속기 카드에 대한 루트 오브 트러스트로서 지정하는 아웃오브밴드 보안 모드(out-of-band security mode)를 포함하는,
    가속기 카드.
  3. 제2 항에 있어서,
    프로그램 가능 집적 회로; 및
    상기 프로그램 가능 집적 회로에 대한 구성 메모리(configuration memory)를 더 포함하고;
    상기 인밴드 보안 모드는 부트 이미지(boot image)의 수신을 위해 상기 호스트 프로세서와 상기 프로그램 가능 집적 회로 사이에 인밴드 통신 채널(in-band communication channel)을 인에이블(enable)하고;
    상기 프로그램 가능 집적 회로는 상기 부트 이미지를 인증(authenticate)하고 상기 구성 메모리에 상기 부트 이미지를 저장하도록 구성되는,
    가속기 카드.
  4. 제2 항에 있어서,
    프로그램 가능 집적 회로; 및
    상기 프로그램 가능 집적 회로에 대한 구성 메모리를 더 포함하고;
    상기 아웃오브밴드 보안 모드는 부트 이미지의 수신을 위해 상기 위성 제어기와 상기 베이스보드 관리 제어기 사이에 아웃오브밴드 통신 채널(out-of-band communication channel)을 인에이블하고;
    상기 위성 제어기는 상기 부트 이미지를 인증하고 상기 구성 메모리에 상기 부트 이미지를 저장하도록 구성되는,
    가속기 카드.
  5. 제2 항에 있어서,
    프로그램 가능 집적 회로;
    상기 프로그램 가능 집적 회로에 대한 구성 메모리; 및
    상기 구성 메모리, 상기 프로그램 가능 집적 회로, 및 상기 위성 제어기에 결합된 스위치를 더 포함하고,
    상기 스위치는, 상기 위성 제어기에 의해, 상기 선택된 보안 모드에 기반하여 상기 프로그램 가능 집적 회로 또는 상기 위성 제어기에 상기 구성 메모리에 대한 기록 액세스(write access)를 제공하도록 구성되는,
    가속기 카드.
  6. 제5 항에 있어서,
    상기 인밴드 보안 모드에서, 상기 스위치는 상기 프로그램 가능 집적 회로에 상기 구성 메모리에 대한 판독 및 기록 액세스를 제공하고 그리고 상기 구성 메모리로부터 상기 위성 제어기를 연결 해제(disconnect)하도록 구성되는,
    가속기 카드.
  7. 제5 항에 있어서,
    상기 아웃오브밴드 보안 모드에서, 상기 스위치는 상기 프로그램 가능 집적 회로에 상기 구성 메모리에 대한 판독-전용 액세스를 제공하고 그리고 상기 위성 제어기에 상기 구성 메모리에 대한 판독 및 기록 액세스를 제공하도록 구성되는,
    가속기 카드.
  8. 제5 항에 있어서,
    상기 위성 제어기로부터의 제어 신호에 응답하여 상기 스위치에 선택 신호들을 제공하도록 구성된 제어 회로를 더 포함하는,
    가속기 카드.
  9. 제1 항에 있어서,
    상기 판독-전용 메모리에는 상기 보안 식별자가 미리 로드되고(pre-loaded), 상기 판독-전용 메모리는 상기 위성 제어기에 의해서만 판독 가능한,
    가속기 카드.
  10. 가속기 카드에 대한 보안 모드를 구성하는 방법으로서,
    상기 가속기 카드의 위성 제어기를 사용하여, 리셋 이벤트에 응답하여 상기 가속기 카드의 판독-전용 메모리의 지정된 필드로부터 보안 식별자를 판독하는 단계;
    상기 보안 식별자에 기반하여 그리고 상기 위성 제어기를 사용하여, 상기 가속기 카드에 대한 복수의 보안 모드들로부터 보안 모드를 선택하는 단계; 및
    상기 선택된 보안 모드를 상기 가속기 카드 내에서 구현하는 단계를 포함하는,
    가속기 카드에 대한 보안 모드를 구성하는 방법.
  11. 제10 항에 있어서,
    상기 가속기 카드는 프로그램 가능 집적 회로 및 상기 프로그램 가능 집적 회로에 대한 구성 메모리를 포함하고,
    상기 방법은,
    인밴드 보안 모드를 구현하는 것에 응답하여, 상기 가속기 카드와 통신하는 호스트 컴퓨터의 호스트 프로세서를 상기 가속기 카드에 대한 루트 오브 트러스트로서 지정하는 단계; 및
    상기 인밴드 보안 모드를 구현하는 것에 응답하여, 부트 이미지의 수신을 위해 상기 호스트 프로세서와 상기 프로그램 가능 집적 회로 사이에 인밴드 통신 채널을 인에이블하는 단계를 더 포함하고;
    상기 프로그램 가능 집적 회로는 상기 부트 이미지를 인증하고 상기 구성 메모리에 상기 부트 이미지를 저장하도록 구성되는,
    가속기 카드에 대한 보안 모드를 구성하는 방법.
  12. 제10 항에 있어서,
    상기 가속기 카드는 프로그램 가능 집적 회로 및 상기 프로그램 가능 집적 회로에 대한 구성 메모리를 포함하고,
    상기 방법은,
    아웃오브밴드 보안 모드를 구현하는 것에 응답하여, 호스트 컴퓨터의 베이스보드 관리 제어기를 상기 가속기 카드에 대한 루트 오브 트러스트로서 지정하는 단계; 및
    상기 아웃오브밴드 보안 모드를 구현하는 것에 응답하여, 부트 이미지의 수신을 위해 상기 위성 제어기와 상기 베이스보드 관리 제어기 사이에 아웃오브밴드 통신 채널을 인에이블하는 단계를 더 포함하고;
    상기 위성 제어기는 상기 부트 이미지를 인증하고 상기 구성 메모리에 상기 부트 이미지를 저장하도록 구성되는,
    가속기 카드에 대한 보안 모드를 구성하는 방법.
  13. 제10 항에 있어서,
    상기 가속기 카드는,
    프로그램 가능 집적 회로;
    상기 프로그램 가능 집적 회로에 대한 구성 메모리; 및
    상기 구성 메모리, 상기 프로그램 가능 집적 회로, 및 상기 위성 제어기에 결합된 스위치를 포함하고,
    상기 스위치는, 상기 위성 제어기에 의해, 상기 선택된 보안 모드에 기반하여 상기 프로그램 가능 집적 회로 또는 상기 위성 제어기에 상기 구성 메모리에 대한 기록 액세스를 제공하도록 구성되는,
    가속기 카드에 대한 보안 모드를 구성하는 방법.
  14. 제13 항에 있어서,
    인밴드 보안 모드를 구현하는 것에 응답하여, 상기 프로그램 가능 집적 회로에 상기 구성 메모리에 대한 판독 및 기록 액세스를 제공하도록 그리고 상기 구성 메모리로부터 상기 위성 제어기를 연결 해제하도록 상기 스위치를 구성하는 단계를 더 포함하는,
    가속기 카드에 대한 보안 모드를 구성하는 방법.
  15. 제13 항에 있어서,
    아웃오브밴드 보안 모드를 구현하는 것에 응답하여, 상기 프로그램 가능 집적 회로에 상기 구성 메모리에 대한 판독-전용 액세스를 제공하도록 그리고 상기 위성 제어기에 상기 구성 메모리에 대한 판독 및 기록 액세스를 제공하도록 상기 스위치를 구성하는 단계를 더 포함하는,
    가속기 카드에 대한 보안 모드를 구성하는 방법.
KR1020237010834A 2020-09-28 2021-09-14 가속기 카드 보안 모드들의 정적 구성 KR20230078683A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/034,868 2020-09-28
US17/034,868 US11295000B1 (en) 2020-09-28 2020-09-28 Static configuration of accelerator card security modes
PCT/US2021/050336 WO2022066475A1 (en) 2020-09-28 2021-09-14 Static configuration of accelerator card security modes

Publications (1)

Publication Number Publication Date
KR20230078683A true KR20230078683A (ko) 2023-06-02

Family

ID=78086081

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237010834A KR20230078683A (ko) 2020-09-28 2021-09-14 가속기 카드 보안 모드들의 정적 구성

Country Status (6)

Country Link
US (1) US11295000B1 (ko)
EP (1) EP4172828B1 (ko)
JP (1) JP2023544001A (ko)
KR (1) KR20230078683A (ko)
CN (1) CN116235175A (ko)
WO (1) WO2022066475A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11861010B2 (en) * 2022-02-14 2024-01-02 Xilinx, Inc. Extensible device hosted root of trust architecture for integrated circuits

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5689195A (en) 1995-05-17 1997-11-18 Altera Corporation Programmable logic array integrated circuit devices
US5986465A (en) 1996-04-09 1999-11-16 Altera Corporation Programmable logic integrated circuit architecture incorporating a global shareable expander
US6025737A (en) 1996-11-27 2000-02-15 Altera Corporation Circuitry for a low internal voltage integrated circuit
US20070288765A1 (en) 1999-12-22 2007-12-13 Kean Thomas A Method and Apparatus for Secure Configuration of a Field Programmable Gate Array
US7240218B2 (en) 2000-02-08 2007-07-03 Algotronix, Ltd. Method of using a mask programmed key to securely configure a field programmable gate array
US6493862B1 (en) 2000-07-25 2002-12-10 Xilinx Inc. Method for compressing an FPGA bitsream
US6526557B1 (en) 2000-07-25 2003-02-25 Xilinx, Inc. Architecture and method for partially reconfiguring an FPGA
US6957340B1 (en) 2000-11-28 2005-10-18 Xilinx, Inc. Encryption key for multi-key encryption in programmable logic device
US7117373B1 (en) 2000-11-28 2006-10-03 Xilinx, Inc. Bitstream for configuring a PLD with encrypted design data
US7058177B1 (en) 2000-11-28 2006-06-06 Xilinx, Inc. Partially encrypted bitstream method
US8650409B1 (en) 2004-09-15 2014-02-11 Altera Corporation FPGA configuration data scrambling using input multiplexers
GB0114317D0 (en) 2001-06-13 2001-08-01 Kean Thomas A Method of protecting intellectual property cores on field programmable gate array
US7424658B1 (en) 2002-07-01 2008-09-09 Altera Corporation Method and apparatus for testing integrated circuits
US8503437B2 (en) 2003-03-13 2013-08-06 Verizon Business Global Llc Integrated customer premises equipment device
US8484671B1 (en) * 2003-10-07 2013-07-09 The Directv Group, Inc. Receiver interface with multiple access cards
US7143384B1 (en) 2003-11-18 2006-11-28 Xilinx, Inc. Methods of routing programmable logic devices to minimize programming time
US7725738B1 (en) 2005-01-25 2010-05-25 Altera Corporation FPGA configuration bitstream protection using multiple keys
US7606362B1 (en) 2005-01-25 2009-10-20 Altera Corporation FPGA configuration bitstream encryption using modified key
US7788502B1 (en) 2005-03-10 2010-08-31 Xilinx, Inc. Method and system for secure exchange of IP cores
US7747025B1 (en) 2005-11-22 2010-06-29 Xilinx, Inc. Method and apparatus for maintaining privacy of data decryption keys in configuration bitstream decryption
US7856546B2 (en) 2006-07-28 2010-12-21 Drc Computer Corporation Configurable processor module accelerator using a programmable logic device
US7385532B1 (en) 2007-02-16 2008-06-10 Xilinx, Inc. Extended bitstream and generation thereof for dynamically configuring a decoder
US9256728B2 (en) * 2008-11-26 2016-02-09 Nokia Technologies Oy Method, apparatus, and computer program product for managing software versions
US8022724B1 (en) 2009-11-25 2011-09-20 Xilinx, Inc. Method and integrated circuit for secure reconfiguration of programmable logic
US8576641B1 (en) 2010-02-26 2013-11-05 Xilinx, Inc. Method of and circuit for providing non-volatile memory in an integrated circuit
US8539254B1 (en) 2010-06-01 2013-09-17 Xilinx, Inc. Method and integrated circuit for protecting against differential power analysis attacks
US8966253B1 (en) 2010-06-01 2015-02-24 Xilinx, Inc. Method and apparatus for authenticating a programmable device bitstream
US8438436B1 (en) 2010-06-04 2013-05-07 Xilinx, Inc. Secure design-for-test scan chains
US8479017B2 (en) 2010-06-21 2013-07-02 Intel Corporation System and method for N-ary locality in a security co-processor
KR101303278B1 (ko) 2011-12-14 2013-09-04 한국전자통신연구원 비트스트림 보호를 위한 fpga 장치 및 그 방법
US8983073B1 (en) 2012-02-10 2015-03-17 Xilinx, Inc. Method and apparatus for restricting the use of integrated circuits
US9218505B1 (en) 2013-01-31 2015-12-22 Xilinx, Inc. Programmable integrated circuit with DPA-resistant decryption
US20170155510A1 (en) 2014-06-27 2017-06-01 Koninklijke Philips N.V. Device for determining a shared key
US10044514B1 (en) 2015-09-25 2018-08-07 Xilinx, Inc. Secure external key storage for programmable ICS
US9722613B1 (en) 2015-09-28 2017-08-01 Xilinx, Inc. Circuit arrangement for and a method of enabling a partial reconfiguration of a circuit implemented in an integrated circuit device
US10031760B1 (en) 2016-05-20 2018-07-24 Xilinx, Inc. Boot and configuration management for accelerators
US10528765B2 (en) 2016-09-16 2020-01-07 Intel Corporation Technologies for secure boot provisioning and management of field-programmable gate array images
US10740146B2 (en) 2017-02-10 2020-08-11 Xilinx, Inc. Migrating virtual machines between compute systems by transmitting programmable logic accelerator state
US10489609B1 (en) 2017-06-06 2019-11-26 Xilinx, Inc. Restricting programmable integrated circuits to specific applications
US10997092B2 (en) 2017-08-10 2021-05-04 Seagate Technology Llc Enabling out-of-band hardware management via an in-band communications channel
US10305511B1 (en) 2018-05-25 2019-05-28 Xilinx, Inc. Run length compression and decompression using an alternative value for single occurrences of a run value
US11126757B2 (en) 2018-10-19 2021-09-21 Microsoft Technology Licensing, Llc Peripheral device
US11038678B2 (en) 2018-11-09 2021-06-15 Microsoft Technology Licensing, Llc Trusted key diversity on cloud edge devices
US10924430B2 (en) * 2018-11-09 2021-02-16 Xilinx, Inc. Streaming platform flow and architecture for an integrated circuit
US10990547B2 (en) 2019-08-11 2021-04-27 Xilinx, Inc. Dynamically reconfigurable networking using a programmable integrated circuit

Also Published As

Publication number Publication date
JP2023544001A (ja) 2023-10-19
US20220100840A1 (en) 2022-03-31
US11295000B1 (en) 2022-04-05
EP4172828A1 (en) 2023-05-03
CN116235175A (zh) 2023-06-06
WO2022066475A1 (en) 2022-03-31
EP4172828B1 (en) 2024-03-27

Similar Documents

Publication Publication Date Title
US10318736B2 (en) Validating operating firmware of a periperhal device
US10754955B2 (en) Authenticating a boot path update
TWI534708B (zh) 用於管理電腦系統中之基本輸入輸出系統組態之方法、管理裝置、及電腦可讀取媒體
KR101453266B1 (ko) 서비스 프로세서 컴플렉스 내의 데이터 저장을 위한 요구 기반 usb 프록시
TWI537748B (zh) 用於網路基本輸入輸出系統管理之設備、方法與非暫態電腦可讀取媒體
US11579893B2 (en) Systems and methods for separate storage and use of system BIOS components
US9916205B2 (en) Secure live virtual machine guest based snapshot recovery
US9075994B2 (en) Processing attestation data associated with a plurality of data processing systems
US11188407B1 (en) Obtaining computer crash analysis data
US10831897B2 (en) Selective enforcement of secure boot database entries in an information handling system
US10936300B1 (en) Live system updates
EP3319283B1 (en) Server data port learning at data switch
US11416446B2 (en) Systems and methods for remote management of non-standard devices
US20170154184A1 (en) Operating system agnostic validation of firmware images
US11321077B1 (en) Live updating of firmware behavior
US10289423B2 (en) Management controller
US9979799B2 (en) Impersonating a specific physical hardware configuration on a standard server
TWI791913B (zh) 經由邊帶介面恢復場域可程式閘陣列韌體之系統及方法
EP4172828B1 (en) Static configuration of accelerator card security modes
US10564218B2 (en) Systems and methods for debugging access
JP2018181305A (ja) プールされた物理リソースのローカルディスク消去メカニズム
CN117667465B (zh) 代码共享方法、装置、交换机、多主机***、设备和介质
US20240104214A1 (en) Systems and methods for updates during firmware authentication
US11625338B1 (en) Extending supervisory services into trusted cloud operator domains
US20240104215A1 (en) Systems and methods for secure firmware updates