KR20220061828A - Computing system including accelerator and operation method thereof - Google Patents
Computing system including accelerator and operation method thereof Download PDFInfo
- Publication number
- KR20220061828A KR20220061828A KR1020210057850A KR20210057850A KR20220061828A KR 20220061828 A KR20220061828 A KR 20220061828A KR 1020210057850 A KR1020210057850 A KR 1020210057850A KR 20210057850 A KR20210057850 A KR 20210057850A KR 20220061828 A KR20220061828 A KR 20220061828A
- Authority
- KR
- South Korea
- Prior art keywords
- accelerator
- program
- host
- update
- binary file
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/22—Microcontrol or microprogram arrangements
- G06F9/28—Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4403—Processor initialisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44568—Immediately runnable code
- G06F9/44578—Preparing or optimising for loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Advance Control (AREA)
Abstract
Description
본 개시는 컴퓨팅 시스템에 관한 것으로서 좀 더 상세하게는 가속기를 포함하는 컴퓨팅 시스템 및 그 동작 방법에 관한 것이다. The present disclosure relates to a computing system, and more particularly, to a computing system including an accelerator and an operating method thereof.
컴퓨팅 시스템은 PCIe 카드 형태의 딥러닝 가속기를 포함할 수 있다. 컴퓨팅 시스템에 포함된 호스트는 운영 체제 프로그램을 사용하고, 가속기는 운영 체제 프로그램 없이 가속기 프로그램을 실행할 수 있다. 호스트는 가속기 프로그램을 컴파일 하여 가속기에게 전송할 수 있다. 가속기의 프로세서 동작 중에 가속기 프로그램 업데이트가 요구된다. The computing system may include a deep learning accelerator in the form of a PCIe card. A host included in the computing system may use an operating system program, and the accelerator may execute the accelerator program without the operating system program. The host can compile the accelerator program and send it to the accelerator. The accelerator program update is required during the processor operation of the accelerator.
본 개시의 목적은 가속기 동작 중 프로그램 업데이트 수행이 가능한 가속기를 포함하는 컴퓨팅 시스템 및 그 동작 방법을 제공하는데 있다. SUMMARY OF THE INVENTION An object of the present disclosure is to provide a computing system including an accelerator capable of performing program update while the accelerator is in operation, and a method of operating the same.
본 개시의 실시 예에 따른 가속기의 동작 방법은 제1 인터럽트에 응답하여, 캐시 플러시 동작을 수행하는 단계, 캐시 플러시 동작 수행 후에, 프로그램 카운터를 업데이트 섹션으로 점프하도록 업데이트 섹션 점프 동작을 수행하는 단계, 업데이트 섹션 점프 동작 이후에, 호스트에서 컴파일된 바이너리 파일을 가속기와 연결된 메모리 모듈에 기입하도록 프로그램 업데이트 동작을 수행하는 단계, 및 프로그램 업데이트 동작 후에, 제2 인터럽트에 응답하여, 프로그램 카운터를 시작 섹션으로 점프하도록 시작 섹션 점프 동작을 수행하는 단계를 포함한다.A method of operating an accelerator according to an embodiment of the present disclosure includes performing a cache flush operation in response to a first interrupt, performing an update section jump operation to jump a program counter to an update section after performing the cache flush operation; After the update section jump operation, the host performs a program update operation to write the compiled binary file to a memory module associated with the accelerator, and after the program update operation, in response to a second interrupt, jumps the program counter to the start section and performing the starting section jump action to do so.
일 실시 예에서, 가속기는 PCI-express(Peripheral Component Interconnect express) 인터페이스를 통해 호스트와 통신한다.In one embodiment, the accelerator communicates with the host via a Peripheral Component Interconnect express (PCI-express) interface.
일 실시 예에서, 가속기의 동작 방법은 캐시 플러시 동작 이전에, 호스트로부터 제1 인터럽트를 수신하는 단계, 및 프로그램 업데이트 동작 이후에, 호스트로부터 제2 인터럽트를 수신하는 단계를 더 포함한다.In an embodiment, the method of operating the accelerator further includes receiving a first interrupt from the host before the cache flush operation, and receiving a second interrupt from the host after the program update operation.
일 실시 예에서, 바이너리 파일은 링커 스크립트에 의해 시작 섹션을 포함하는 일반 프로그램용 섹션 및 업데이트 섹션을 포함한다.In one embodiment, the binary file includes an update section and a section for general programs including a start section by a linker script.
일 실시 예에서, 바이너리 파일은 호스트에 의해 가속기 프로그램을 컴파일하여 생성된다.In one embodiment, the binary file is generated by compiling the accelerator program by the host.
일 실시 예에서, 프로그램 업데이트 동작을 수행하는 단계는, 가속기에 포함된 DMA 엔진에 의해, 호스트로부터 바이너리 파일을 독출하는 단계, 및 DMA 엔진에 의해, 바이너리 파일을 메모리 모듈에 기입하는 단계를 포함한다.In an embodiment, performing the program update operation includes reading a binary file from a host by a DMA engine included in the accelerator, and writing the binary file into a memory module by the DMA engine do.
일 실시 예에서, 바이너리 파일을 메모리 모듈에 기입하는 단계는 커맨드/어드레스 라인을 통해 쓰기 커맨드 및 어드레스를 메모리 모듈로 전송하는 단계, 및 데이터 라인을 통해 바이너리 파일을 메모리 모듈로 전송하는 단계를 포함한다. In one embodiment, writing the binary file to the memory module includes sending a write command and an address to the memory module via a command/address line, and sending the binary file to the memory module via a data line. .
일 실시 예에서, 캐시 플러시 동작을 수행하는 단계는, 가속기에 포함된 캐시 메모리 장치에 저장된 더티 상태에 대응하는 데이터를 메모리 모듈에 기입하는 단계를 포함한다.In an embodiment, performing the cache flush operation includes writing data corresponding to a dirty state stored in a cache memory device included in the accelerator into the memory module.
일 실시 예에서, 제1 및 제2 인터럽트는 호스트에 의해 메모리 매핑된 입출력 레지스터(MMIO; memory mapped I/O register) 쓰기 동작을 가리킨다.In one embodiment, the first and second interrupts indicate memory mapped I/O register (MMIO) write operations by the host.
일 실시 예에서, 가속기는 FPGA(field-programmable gate array), MPPA(massively parallel processor array), GPU(graphics processing unit), ASIC(Application-Specific Integrated Circuit), NPU(neural processing unit), TPU(Tensor Processing Unit) 및 MPSoC(Multi-Processor System-on-Chip) 중에서 어느 하나를 포함한다.In one embodiment, the accelerator is a field-programmable gate array (FPGA), a massively parallel processor array (MPPA), a graphics processing unit (GPU), an application-specific integrated circuit (ASIC), a neural processing unit (NPU), a tensor (TPU) Processing Unit) and MPSoC (Multi-Processor System-on-Chip).
일 실시 예에서, 가속기의 동작 방법은 프로그램 업데이트 동작 수행하는 동안에, 프로그램 카운터는 무한 루프를 돌며 대기하는 단계를 더 포함한다.In an embodiment, the method of operating the accelerator further includes waiting while the program update operation is performed while the program counter runs in an infinite loop.
본 개시의 실시 예에 따른 컴퓨팅 장치는 가속기 프로그램에 대한 컴파일 동작을 수행하여 업데이트 섹션 및 시작 섹션을 포함하는 바이너리 파일을 생성하고, 제1 및 제2 인터럽트를 전송하도록 구성된 호스트, 및 제1 인터럽트에 응답하여, 프로그램 카운터를 업데이트 섹션으로 점프하고, 제2 인터럽트에 응답하여, 프로그램 카운터를 시작 섹션으로 점프하도록 구성된 가속기를 포함하고, 제1 인터럽트는 가속기 프로그램 업데이트 시작을 가리키고, 제2 인터럽트는 가속기 프로그램 업데이트 종료를 가리킨다. A computing device according to an embodiment of the present disclosure generates a binary file including an update section and a start section by performing a compile operation on an accelerator program, a host configured to transmit first and second interrupts, and a first interrupt in response to jump the program counter to the update section, and in response to a second interrupt, an accelerator configured to jump the program counter to the start section, wherein the first interrupt indicates an accelerator program update start, and the second interrupt is an accelerator program Indicates the end of the update.
일 실시 예에서, 컴퓨팅 시스템은 가속기와 연결되고, 가속기에서 실행되는 바이너리 파일을 저장하도록 구성된 메모리 모듈을 더 포함한다.In one embodiment, the computing system further includes a memory module coupled to the accelerator and configured to store a binary file executed in the accelerator.
일 실시 예에서, 가속기는 바이너리 파일을 호스트에서 독출하고, 바이너리 파일을 메모리 모듈에 기입하도록 구성된 DMA 엔진을 포함한다. In one embodiment, the accelerator includes a DMA engine configured to read a binary file from a host and write the binary file to a memory module.
일 실시 예에서, 가속기는 바이너리 파일을 실행하도록 구성된 프로세서, 및 프로세서에서 사용되는 데이터를 저장하고, 제1 인터럽트에 응답하여, 더티 상태에 대응하는 데이터를 메모리 모듈로 플러시 하도록 구성된 캐시 메모리 장치를 더 포함한다.In one embodiment, the accelerator further includes a processor configured to execute a binary file, and a cache memory device configured to store data used by the processor and, in response to the first interrupt, flush data corresponding to the dirty condition to the memory module. include
일 실시 예에서, 가속기는 CNN(Convolutional Neural Network), RNN(Recurrent Neural Network) 등과 같은 머신 러닝 알고리즘 등을 수행하도록 구성된 재구성 로직 회로를 더 포함한다.In one embodiment, the accelerator further comprises a reconstruction logic circuit configured to perform a machine learning algorithm, such as a Convolutional Neural Network (CNN), a Recurrent Neural Network (RNN), or the like.
본 개시의 실시 예에 따른 컴퓨팅 시스템은 가속기 동작 중에 프로그램 업데이트 동작을 수행할 수 있다. 따라서, 향상된 가속기를 포함하는 컴퓨팅 시스템 및 그 동작 방법이 제공된다. The computing system according to an embodiment of the present disclosure may perform a program update operation during an accelerator operation. Accordingly, a computing system including an improved accelerator and a method of operating the same are provided.
도 1은 본 개시의 실시 예에 따른 컴퓨팅 시스템을 보여주는 블록도이다.
도 2는 도 1의 가속기를 보여주는 블록도이다.
도 3은 본 개시의 실시 예에 따른 가속기 프로그램의 바이너리 파일을 나타내는 도면이다.
도 4는 도 1의 가속기의 동작을 보여주는 순서도이다.
도 5는 도 1의 가속기의 프로그램 업데이트 동작을 설명하기 위한 도면이다.
도 6은 도 1의 컴퓨팅 시스템의 동작을 보여주는 순서도이다.
도 7은 본 개시의 실시 예에 따른 컴퓨팅 시스템을 보여주는 블록도이다.
도 8은 본 개시의 실시 예에 따른 컴퓨팅 시스템이 적용된 데이터 센터를 보여주는 블록도이다.1 is a block diagram illustrating a computing system according to an embodiment of the present disclosure.
FIG. 2 is a block diagram showing the accelerator of FIG. 1 .
3 is a diagram illustrating a binary file of an accelerator program according to an embodiment of the present disclosure.
4 is a flowchart illustrating an operation of the accelerator of FIG. 1 .
FIG. 5 is a diagram for explaining a program update operation of the accelerator of FIG. 1 .
6 is a flowchart illustrating an operation of the computing system of FIG. 1 .
7 is a block diagram illustrating a computing system according to an embodiment of the present disclosure.
8 is a block diagram illustrating a data center to which a computing system according to an embodiment of the present disclosure is applied.
이하에서, 본 개시의 기술 분야에서 통상의 지식을 가진 자가 본 개시를 용이하게 실시할 수 있을 정도로, 본 개시의 실시 예들이 명확하고 상세하게 기재될 것이다.Hereinafter, embodiments of the present disclosure will be described clearly and in detail to the extent that those of ordinary skill in the art can easily practice the present disclosure.
이하에서, 상세한 설명에서 사용되는 부(unit), 모듈(module), 레이어(layer), 또는 도면에 도시된 기능 블록들은 소프트웨어, 또는 하드웨어, 또는 그것들의 조합의 형태로 구현될 수 있다. 예를 들어, 소프트웨어는 기계 코드, 펌웨어, 임베디드 코드, 및 애플리케이션 소프트웨어일 수 있다. 예를 들어, 하드웨어는 전기 회로, 전자 회로, 프로세서, 컴퓨터, 집적 회로, 집적 회로 코어들, 압력 센서, 관성 센서, 멤즈(MEMS; microelectromechanical system), 수동 소자, 또는 그것들의 조합을 포함할 수 있다. Hereinafter, units, modules, layers, or functional blocks shown in the drawings used in the detailed description may be implemented in the form of software, hardware, or a combination thereof. For example, the software may be machine code, firmware, embedded code, and application software. For example, the hardware may include an electrical circuit, an electronic circuit, a processor, a computer, an integrated circuit, integrated circuit cores, a pressure sensor, an inertial sensor, a microelectromechanical system (MEMS), a passive element, or a combination thereof. .
또한, 다르게 정의되지 않는 한, 본문에서 사용되는 기술적 또는 과학적인 의미를 포함하는 모든 용어들은 본 개시가 속하는 기술 분야에서의 당업자에 의해 이해될 수 있는 의미를 갖는다. 일반적으로 사전에서 정의된 용어들은 관련된 기술 분야에서의 맥락적 의미와 동등한 의미를 갖도록 해석되며, 본문에서 명확하게 정의되지 않는 한, 이상적 또는 과도하게 형식적인 의미를 갖도록 해석되지 않는다.In addition, unless otherwise defined, all terms including technical or scientific meanings used herein have the meanings understood by those skilled in the art to which this disclosure belongs. In general, terms defined in the dictionary are interpreted to have the same meaning as the contextual meaning in the related technical field, and unless clearly defined in the text, they are not interpreted to have an ideal or excessively formal meaning.
도 1은 본 개시의 실시 예에 따른 컴퓨팅 시스템을 보여주는 블록도이다. 도 1을 참조하면, 컴퓨팅 시스템(100)은 호스트(110), 가속기(120) 및 메모리 모듈(130)을 포함할 수 있다. 컴퓨팅 시스템(100)은 데이터를 처리하여 메모리 모듈(130)에 기록하거나, 메모리 모듈(130)부터 독출된 데이터를 처리하는 다양한 종류의 시스템일 수 있다. 1 is a block diagram illustrating a computing system according to an embodiment of the present disclosure. Referring to FIG. 1 , a
일 실시 예에서, 컴퓨팅 시스템(100)은 PC(personal computer), 데이터 서버, 클라우드 시스템, 인공 지능 서버, 네트워크-결합 스토리지(network-attached storage, NAS), IoT(Internet of Things) 장치, 또는 휴대용 전자 기기로 구현될 수 있다. 또한, 컴퓨팅 시스템(100)이 휴대용 전자 기기인 경우, 컴퓨팅 시스템(100)은 랩탑 컴퓨터, 이동 전화기, 스마트폰, 태블릿 PC, PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라, 디지털 비디오 카메라, 오디오 장치, PMP(portable multimedia player), PND(personal navigation device), MP3 플레이어, 휴대용 게임 콘솔(handheld game console), e-북(e-book), 웨어러블 기기 등일 수 있다. In one embodiment, the
호스트(110)는 컴퓨팅 시스템(100)의 전반적인 동작을 제어할 수 있다. 예를 들어, 호스트(110)는 커맨드 및 데이터를 제공하여 가속기(120)를 제어할 수 있다. 일 실시 예에서, 호스트(110)는 수행할 처리 동작을 가속기(120)에게 오프로드 할 수 있다. 호스트(110)는 특정 연산 동작을 직접 수행하지 않고, 가속기(120)가 특정 연산 동작을 수행하도록 커맨드 및 데이터를 가속기(120)에게 전송할 수 있다. The
가속기(120)는 다양한 종류의 보조 프로세서에 해당할 수 있다. 일 실시 예에서 가속기(120)는 FPGA(Field-programmable gate array), MPPA(Massively parallel processorarray), GPU(Graphics processing unit), ASIC(Application-Specific Integrated Circuit), NPU(Neural processing unit), TPU(Tensor Processing Unit) 및 MPSoC(Multi-Processor System-on-Chip) 등의 다양한 종류의 가속기일 수 있다. 예를 들어, 가속기(120)는 딥러닝 동작을 수행하는 가속기 일 수 있다. The
메모리 모듈(130)은 가속기(120)의 제어에 따라 데이터를 기록하거나 데이터를 독출할 수 있다. 예를 들어, 메모리 모듈(130)은 가속기(120)로부터 제공된 커맨드 및 어드레스에 응답하여 데이터를 기록하거나, 독출된 데이터를 가속기(120)로 제공할 수 있다. The
일 실시 예에서, 컴퓨팅 시스템(100)은 가속기(120) 및 메모리 모듈(130)을 보드(또는, 메인 보드) 상에 삽입되는 카드 형태로서 포함할 수 있다. 예컨대, 하나 이상의 가속기 및 하나 이상의 메모리 모듈을 포함하는 애드-인 형태의 카드가 보드 상의 확장 슬롯에 장착될 수 있다. 예를 들어, 확장 슬롯에 장착되는 카드는 하나의 가속기 및 하나 이상의 메모리 모듈을 포함할 수 있다. 변형 가능한 실시예로서, 카드는 하나의 가속기와 다수의 메모리 모듈들을 포함할 수 있다. 또는, 카드는 다수 개의 가속기들과 다수 개의 메모리 모듈들을 포함할 수 있다. In an embodiment, the
호스트(110) 및 가속기(120)는 버스를 통해 서로 통신할 수 있다. 일 실시 예에서, 버스는 PCI(peripheral Component Interconnect), PCIe(PCI Express), BlueLink, QPI(Quick Path Interconnect) 등 다양한 종류의 프로토콜을 통해 버스(BUS)에 접속된 컴포넌트들 사이의 통신을 지원할 수 있다.The
일 실시 예에서, 버스가 PCI 프로토콜에 따른 통신을 지원하는 경우, 상기 카드는 PCI 카드에 해당할 수 있으며, 또한 카드가 가속기를 포함하는 경우 상기 카드는 그래픽 카드 또는 가속기 카드로 지칭될 수 있다. In one embodiment, if the bus supports communication according to the PCI protocol, the card may correspond to a PCI card, and if the card includes an accelerator, the card may be referred to as a graphics card or an accelerator card.
일 실시 예에서, 메모리 모듈(130)은 DDR SDRAM(Double Data Rate Synchronous Dynamic Random Access Memory), LPDDR(Low Power Double Data Rate) SDRAM, GDDR(Graphics Double Data Rate) SDRAM, RDRAM(Rambus Dynamic Random Access Memory) 등과 같은 DRAM 일 수 있다. 그러나, 본 개시의 실시예들은 이에 국한될 필요가 없으며, 일 예로서 메모리 모듈(130)은 플래시(flash) 메모리, MRAM(Magnetic RAM), FeRAM(Ferroelectric RAM), PRAM(Phase change RAM) 및 ReRAM(Resistive RAM) 등의 불휘발성 메모리로 구현되어도 무방하다.In one embodiment, the
일 실시 예에서, 호스트(110)는 가속기(120)의 프로세서가 처리할 프로그램(즉, 가속기 프로그램)을 업데이트할 수 있다. 호스트(110)는 가속기(120)에 대한 초기화 동작을 수행하여, 가속기 프로그램을 업데이트 할 수 있다. 즉, 호스트(110)는 가속기 프로그램 업데이트 시, 업데이트된 가속기 프로그램을 가속기(120)의 불휘발성 메모리(예를 들어, 플래시 메모리 또는 SD 카드(Secure Digital Card))에 기록할 수 있다. In an embodiment, the
그러나, 본 개시의 실시 예에 따른 호스트(110)는 가속기(120)에 대한 초기화 동작 없이, 가속기(120)의 동작 수행 중에 가속기 프로그램을 업데이트할 수 있다. 예를 들어, 호스트(110)는 업데이트된 가속기 프로그램을 컴파일할 수 있다. 호스트(110)는 컴파일된 가속기 프로그램을 가속기(120)에게 제공할 수 있다. 가속기(120)는 호스트(110)의 제어에 따라, 프로그램을 업데이트할 수 있다. 본 개시의 실시 예에 따른 가속기(120)의 업데이트 동작은 이하의 도면들을 참조하여 더욱 상세하게 설명된다. However, the
도 2는 도 1의 가속기를 보여주는 블록도이다. 도 1 및 도 2를 참조하면, 가속기(120)는 프로세서(121), 캐시 메모리 장치(122), ROM(123), DMA 엔진(Direct Memory Access engine)(124), 호스트 인터페이스 회로(125), 재구성 로직 회로(126), 및 메모리 컨트롤러(127)를 포함할 수 있다. 가속기(120)는 딥러닝 동작을 수행할 수 있다. 일 실시 예에서, 가속기(120)는 YOLO, ResNet, ResNeXt, DenseNet, GCN(Graph Convolutional Network) 등과 같은 다양한 심층 신경망(DNN; Deep Neural Network)을 구동하도록 구성될 수 있다.FIG. 2 is a block diagram showing the accelerator of FIG. 1 . 1 and 2 , the
프로세서(121)는 가속기(120)의 제반 동작을 제어할 수 있다. 캐시 메모리 장치(120)는 프로세서(121)로부터 수신된 신호들에 응답하여, 데이터를 저장하거나 또는 저장된 데이터를 프로세서(121)로 제공할 수 있다. 캐시 메모리 장치(122)는 메모리 모듈(130)보다 빠른 액세스 속도를 가질 수 있다. 즉, 메모리 모듈(130)에 저장된 데이터 중 일부가 캐시 메모리 장치(122)에 저장됨으로써, 프로세서(121)의 요청에 따른 액세스 속도가 향상될 수 있다. 일 실시 예에서, 캐시 메모리 장치(122)는 SRAM(Static Random Access Memory) 장치 일 수 있으나, 본 개시의 범위가 이에 한정되는 것은 아니다. The
ROM(123)은 가속기(120)가 동작하는데 요구되는 다양한 정보를 펌웨어 형태로 저장할 수 있다. DMA 엔진(124)은 프로세서(121)의 개입 없이 호스트(110) 및 메모리 모듈(130) 사이의 직접 메모리 접근(DMA; Direct Memory Access) 동작을 제어하는 하드웨어 장치일 수 있다. The
예를 들어, 가속기(120)는 데이터 전송 속도를 향상시키기 위하여, DMA 모드로 동작할 수 있다. DMA 모드는 가속기(120)에 포함된 프로세서(121) 또는 코어의 개입 또는 없이, DMA 엔진(124)의 제어에 따라 데이터가 전달되는 동작 모드를 가리킨다. 즉, 데이터가 전달되는 동안, 프로세서 또는 코어로부터의 제어 또는 처리가 요구되지 않기 때문에, 데이터 전달 속도가 향상될 수 있다.For example, the
일 실시 예에서, DMA 엔진(124)은 호스트(110) 및 메모리 모듈(130) 사이의 데이터 전달을 제어 또는 관장할 수 있다. 예를 들어, DMA 엔진(124)은 호스트(110)에서 컴파일된 바이너리 파일(즉, 새로운 가속기 프로그램)을 독출하여, 메모리 모듈(130)에 바이너리 파일을 기입할 수 있다. DMA 엔진(124)은 커맨드/어드레스 라인을 통해 쓰기 커맨드 및 어드레스를 메모리 모듈(130)로 전송할 수 있다. DMA 엔진(124)은 데이터 라인을 통해 데이터(또는 바이너리 파일)을 메모리 모듈(130)로 전송할 수 있다. In an embodiment, the
가속기(120)는 호스트 인터페이스 회로(125)를 통해 호스트(110)와 통신할 수 있다. 앞서 설명된 바와 같이, 호스트 인터페이스 회로(125)는 PCIe 인터페이스일 수 있다. 그러나 본 개시의 범위가 이에 한정되는 것은 아니며, 호스트 인터페이스(133)는 USB (Universal Serial Bus), MMC(multimedia card), eMMC(embedded MMC), ATA (Advanced Technology Attachment), Serial-ATA, Parallel-ATA, SCSI (small computer small interface), ESDI (enhanced small disk interface), IDE (Integrated Drive Electronics), 파이어와이어(Firewire), UFS(Universal Flash Storage) 등과 같은 다양한 인터페이스들 중 적어도 하나를 포함할 수 있다. The
재구성 로직 회로(126)는 호스트(110)가 수행하는 연산들 중 일부를 수행하여 호스트(110)의 연산을 보조하도록 구성될 수 있다. 예를 들어, 재구성 로직 회로(126)는 FPGA(Field-programmable gate array)일 수 있다. 그러나, 본 개시는 이에 한정되지 않으며, 재구성 로직 회로(126)는 PLD(Programmable Logic Device) 또는 CPLD(Complex PLD) 등일 수도 있다. The
일 실시 예에서, 재구성 로직 회로(126)는 CNN(Convolutional Neural Network), RNN(Recurrent Neural Network) 등과 같은 머신 러닝 알고리즘 등을 수행할 수 있다. 예를 들어, 재구성 로직 회로(126)는 비디오 트랜스코딩을 수행하도록 구성될 수 있고, 호스트(110) 또는 프로세서(121)의 제어에 따라 CNN을 수행하도록 구성될 수 있다. In an embodiment, the
예를 들어, 재구성 로직 회로(126)는 인라인(inline) 프로세싱, 프리(pre)-프로세싱, 프리-필터링(prefiltering), 암호화(cryptography), 압축, 프로토콜 브릿징(bridging) 등을 수행할 수 있다. 재구성 로직 회로(126)는 소팅(sorting) 연산, 서칭(searching) 연산, 로직 연산 또는 사칙 연산 중 하나 이상의 연산을 수행할 수 있다. For example, the
예를 들어, 로직 연산은 AND 게이트, OR 게이트, XOR 게이트, NOR 게이트, NAND 게이트 등 다양한 로직 게이트가 수행하는 연산 또는 이러한 연산을 둘 이상 결합한 연산 동작을 나타낼 수 있다. 재구성 로직 회로(126)가 수행하는 연산 동작은 위에 설명한 예에 한정되지 않으며, 호스트(200)가 수행하는 연산들 중 일부에 대응하는 임의의 연산일 수 있다.For example, the logic operation may represent an operation performed by various logic gates, such as an AND gate, an OR gate, an XOR gate, a NOR gate, and a NAND gate, or an operation operation combining two or more of these operations. The arithmetic operation performed by the
가속기(120)는 메모리 컨트롤러(127)를 통해 메모리 모듈(130)과 통신할 수 있다. 메모리 컨트롤러(127)는 메모리 모듈(130)을 제어할 수 있다. 예를 들어, 메모리 컨트롤러(127)는 메모리 모듈(130)을 제어하기 위한 어드레스(ADDR), 커맨드(CMD), 제어 신호(CTRL)를 메모리 모듈(130)로 전송할 수 있고, 메모리 모듈(130)과 데이터 라인(DQ)을 통해 데이터(DATA)를 송수신할 수 있다. 예를 들어, 메모리 컨트롤러(127)는 커맨드/어드레스 라인을 통해 커맨드 및 어드레스를 메모리 모듈(130)로 전송할 수 있다. The
도 3은 본 개시의 실시 예에 따른 가속기 프로그램의 바이너리 파일을 나타내는 도면이다. 도 3을 참조하면, 가속기 프로그램의 바이너리 파일(BF)은 ELF(Executable And Linking Format)일 수 있다. 바이너리 파일(BF)은 메모리 모듈(130)에 로딩될 수 있다. 바이너리 파일(BF)은 메모리 모듈(130)의 제1 주소(A1)부터 제4 주소(A4) 내에 배치될 수 있다. 3 is a diagram illustrating a binary file of an accelerator program according to an embodiment of the present disclosure. Referring to FIG. 3 , the binary file BF of the accelerator program may be an Executable And Linking Format (ELF). The binary file BF may be loaded into the
본 개시의 실시 예에 따른 바이너리 파일(BF)은 일반 프로그램용 섹션들(P1,P2) 이외에 업데이트용 섹션(P3)을 더 포함할 수 있다. 즉, 바이너리 파일은 일반 프로그램용 섹션들(P1, P2) 및 업데이트용 섹션(P3)을 포함할 수 있다. 일반 프로그램용 섹션들(P1, P2)은 메모리 모듈(130)의 제1 주소(A1)부터 제3 주소(A3) 내에 배치되고, 업데이터용 섹션(P3)은 메모리 모듈(130)의 제3 주소(A3)부터 제4 주소(A4) 내에 배치될 수 있다. The binary file BF according to an embodiment of the present disclosure may further include an update section P3 in addition to the general program sections P1 and P2. That is, the binary file may include sections P1 and P2 for general programs and a section P3 for updates. The sections P1 and P2 for the general program are disposed within the first address A1 to the third address A3 of the
일반 프로그램용 섹션들(P1, P2)은 .start 섹션, .startup 섹션, .text 섹션, .rodata 섹션, .data 섹션, .bss 섹션을 포함할 수 있다. 예를 들어, 실제 명령어(또는 코드)를 적재하는 영역은 .text 섹션을 가리키고, 변수(또는 데이터)가 저장되는 영역은 .rodata 섹션 또는 .data 섹션을 가리키고, 초기화되지 않은 데이터 영역은 .bss 섹션을 가리킬 수 있다. 프로그램의 main 함수 이전에 실행되는 코드의 영역은 .start 섹션 또는 .startup 섹션을 가리킬 수 있다. The general program sections P1 and P2 may include a .start section, a .startup section, a .text section, a .rodata section, a .data section, and a .bss section. For example, the area where the actual instruction (or code) is loaded points to the .text section, the area where variables (or data) are stored points to the .rodata section or .data section, and the uninitialized data area points to the .bss section can point to The area of code that is executed before the program's main function can point to either a .start section or a .startup section.
일 실시 예에서, .start 섹션은 제1 주소(A1)부터 제2 주소(A2) 내에 배치되고, 나머지 섹션들(.startup 섹션, .text 섹션, .rodata 섹션, .data 섹션, .bss 섹션 등)은 제2 주소(A2) 부터 제3 주소(A3) 내에 배치될 수 있다. In one embodiment, the .start section is disposed within the first address A1 to the second address A2, and the remaining sections (.startup section, .text section, .rodata section, .data section, .bss section, etc.) ) may be disposed within the second address A2 to the third address A3 .
.update 섹션이 미리 정해진 주소(예를 들어, 제3 주소(A3))부터 배치되도록, 링커 스크립트(Linker script) 및 소스 프로그램은 설정될 수 있다. 예를 들어, 코드에서 특정 함수나 변수가 선언되는 경우, 섹션의 이름을 attribute로 주고 링커 스크립트에서 그 섹션이 특정 주소에 배치하도록 설정될 수 있다. 즉, 코드에서 업데이트 함수가 선언되는 경우, .update 섹션의 이름을 attribute로 주고 링커 스크립트에서 .update 섹션이 제3 주소에 배치되도록 설정될 수 있다. A linker script and a source program may be set so that the .update section is placed from a predetermined address (eg, the third address A3). For example, when a specific function or variable is declared in the code, the section name can be given as an attribute and the section can be set to be placed at a specific address in the linker script. That is, when an update function is declared in the code, the name of the .update section may be given as an attribute, and the .update section may be set to be placed at the third address in the linker script.
도 4는 도 1의 가속기의 동작을 보여주는 순서도이다. 도 5는 도 1의 가속기의 프로그램 업데이트 동작을 설명하기 위한 도면이다. 도 1 및 도 4를 참조하면, S110 단계에서, 가속기(120)는 제1 인터럽트에 응답하여, 캐시 플러시 동작을 수행하고, 프로그램 카운터(PC)는 업데이트 섹션(.update 섹션)으로 점프할 수 있다. 일 실시 예에서, 가속기(120)는 호스트(110)로부터 제1 인터럽트를 수신할 수 있다. 예를 들어, 제1 인터럽트는 가속기 프로그램 업데이트 시작을 가리키는 신호일 수 있다. 4 is a flowchart illustrating an operation of the accelerator of FIG. 1 . FIG. 5 is a diagram for explaining a program update operation of the accelerator of FIG. 1 . 1 and 4 , in step S110 , the
가속기(120)는 호스트(110)로부터 제공된 제1 인터럽트에 응답하여, 캐시 플러시 동작을 수행할 수 있다. 예를 들어, 가속기(120)는 제1 인터럽트로부터 유발된 인터럽트 루틴에 의해, 캐시 메모리 장치(122)에 저장된 데이터를 메모리 모듈(130)로 플러시 할 수 있다. The
가속기(120)는 프로그램 카운터(PC)를 .update 섹션에 코드가 위치하는 ISR(interrupt service routine)으로 점프하고, 무한 루프를 돌며 대기할 수 있다. 도 5에 도시된 바와 같이, 일반 프로그램용 섹션들(P2)에 위치한 프로그램 카운터(PC)는 .update 섹션(P3)이 위치한 제3 주소(A3)로 점프할 수 있다. The
가속기(120)는 새로운 프로그램 업데이트를 위하여, 다른 동작을 수행하지 않을 수 있다. 가속기(120)는 .update 섹션으로 프로그램 카운터(PC)를 점프하고 새로운 프로그램이 업데이트 완료시까지 대기할 수 있다. 이로 인해, 프로그램이 업데이트되는 동안, 프로그램 카운터(PC)는 일반 프로그램용 섹션들(P1, P2)을 접근하지 않을 수 있다. The
S120 단계에서, 가속기(120)는 새로운 프로그램을 업데이트할 수 있다. 일 실시 예에서, 가속기(120)는 호스트(110)로부터 새로운 프로그램을 수신할 수 있다. 예를 들어, 호스트(110)는 직접 새로운 프로그램을 메모리 모듈(130)에 기록할 수 있다. 또는 가속기(120)에 포함된 DMA(Direct Memory Access) 엔진은 새로운 프로그램을 메모리 모듈(130)에 기록할 수 있다. In step S120 , the
일 실시 예에서, DMA 엔진(124)을 통해 바이너리 파일이 호스트(110)에서 가속기(120)로 전송되는 경우, 가속기(120)는 바이너리 파일과 관련된 제3 인터럽트를 수신할 수 있다. 제3 인터럽트로부터 유발된 인터럽트 서비스 루틴은 업데이트 섹션에 배치될 수 있다. In an embodiment, when the binary file is transmitted from the
S130 단계에서, 가속기(120)는 제2 인터럽트에 응답하여, 프로그램 카운터(PC)를 시작 섹션(.start 섹션)으로 점프할 수 있다. 예를 들어, 가속기(120)는 호스트(110)로부터 제2 인터럽트를 수신할 수 있다. 제2 인터럽트는 프로그램 업데이트 종료를 가리키는 신호일 수 있다. In step S130 , the
가속기(120)는 제2 인터럽트로부터 유발된 인터럽트 루틴에 의해, 프로그램 카운터(PC)를 .start 섹션으로 점프할 수 있다. 도 5에 도시된 바와 같이, .update 섹션(P3)에 위치한 프로그램 카운터(PC)는 .start 섹션(P1)이 위치한 제1 주소(A1)로 점프할 수 있다. 이후에, 가속기(120)는 업데이트된 프로그램을 실행할 수 있다. The
상술된 바와 같이, 가속기(120)는 .update 섹션을 추가로 두어, 프로그램이 업데이트 되는 동안, 프로그램 카운터를 .update 섹션에 머무르게 할 수 있다. 이로 인해, 가속기의 동작 수행 중에, 가속기(120)는 새로운 프로그램을 업데이트 할 수 있다. As described above, the
도 6은 도 1의 컴퓨팅 시스템의 동작을 보여주는 순서도이다. 도 1 및 도 6을 참조하면, S210 단계에서, 호스트(110)는 프로그램 컴파일 동작을 수행할 수 있다. 예를 들어, 호스트(110)는 업데이트된 또는 새로운 가속기 프로그램을 컴파일할 수 있다. 호스트(110)는 가속기 프로그램을 컴파일하여, 바이너리 파일을 생성할 수 있다. 6 is a flowchart illustrating an operation of the computing system of FIG. 1 . 1 and 6 , in step S210 , the
S220 단계에서, 호스트(110)는 가속기(120)에게 제1 인터럽트를 전송할 수 있다. 호스트(110)는 제1 인터럽트를 통해, 가속기(120)가 프로그램 업데이트를 준비하도록 통지할 수 있다. 예를 들어, 제1 인터럽트는 호스트(110)가 가속기(120)로 전송하는 커맨드일 수 있다. 또는 제1 인터럽트는 호스트(110)가 가속기(120)의 메모리 매핑된 입출력 레지스터(MMIO; memory mapped I/O register) 쓰기 동작을 가리킬 수 있다. In step S220 , the
S230 단계에서, 가속기(120)는 제1 인터럽트에 응답하여, 플러시 동작을 수행하고, 프로그램 카운터(PC)를 .update 섹션으로 점프할 수 있다. 예를 들어, 가속기(120)는 캐시 메모리 장치(122)에 저장된 더티 상태에 대응하는 데이터를 메모리 모듈(130)로 플러시할 수 있다. 가속기(120)는 프로그램 카운터(PC)를 .update 섹션이 배치된 제3 주소(A3)로 점프할 수 있다. In step S230 , the
S240 단계에서, 호스트(110)는 업데이트된 프로그램을 가속기(120)로 전송할 수 있다. 예를 들어, 호스트(110)는 컴파일된 바이너리 파일을 직접 가속기(120)로 전송할 수 있다. 또는 가속기(120)에 포함된 DMA 엔진(124)은 호스트(110)로부터 바이너리 파일을 독출하고, 메모리 모듈(130)에 기입할 수 있다. In step S240 , the
S250 단계에서, 가속기(120)는 수신한 새로운 프로그램을 업데이트할 수 있다. 예를 들어, 가속기(120)는 새로운 프로그램을 메모리 모듈(130)에 기입할 수 있다. 프로세서(121)는 .update 섹션에서 무한 루프를 돌며 대기할 수 있다. 가속기(120)에 포함된 DMA 엔진(124)은 수신한 바이너리 파일은 메모리 모듈(130)에 기입할 수 있다. In step S250 , the
S260 단계에서, 호스트(110)는 가속기(120)에게 제2 인터럽트를 전송할 수 있다. 호스트(110)는 제2 인터럽트를 통해, 가속기(120)가 프로그램 업데이트 종료를 통지할 수 있다. 예를 들어, 제2 인터럽트는 호스트(110)가 가속기(120)로 전송하는 커맨드일 수 있다. 또는 제2 인터럽트는 호스트(110)가 가속기(120)의 메모리 매핑된 레지스터(MMIO; memory mapped I/O register) 쓰기 동작을 가리킬 수 있다.In step S260 , the
S270 단계에서, 가속기(120)는 프로그램 카운터(PC)를 .start 섹션으로 점프할 수 있다. 예를 들어, 가속기(120)는 프로그램 카운터(PC)를 .start 섹션이 배치된 제1 주소(A1)로 점프할 수 있다. 이후에, 가속기(120)는 새로운 프로그램 초기화부터 시작할 수 있다. In step S270 , the
상술한 바와 같이, 컴퓨팅 시스템(100)은 가속기 프로그램 업데이트 수행 시, 프로그램 업데이트 되는 공간과 상이한 .update 섹션으로 가속기의 프로그램 카운터(PC)를 점프 시킬 수 있다. 이로 인해, 컴퓨팅 시스템(100)은 가속기의 ROM 또는 플래시 메모리를 새로 프로그램 하지 않고, DMA 엔진(124)을 통해 새로운 프로그램을 업데이트할 수 있다. As described above, when the accelerator program update is performed, the
도 7은 본 개시의 실시 예에 따른 컴퓨팅 시스템을 보여주는 블록도이다. 도 7을 참조하면, 컴퓨팅 시스템(1000)은 프로세서(1100), 메모리 장치(1200), 가속기(1300), 칩셋(1400), GPU(1500), 입출력 장치(1600), 및 스토리지 장치(1700)를 포함한다. 프로세서(1100)는 컴퓨팅 시스템(1000)의 제반 동작을 제어할 수 있다. 프로세서(1100)는 컴퓨팅 시스템(1000)에서 수행되는 다양한 연산을 수행할 수 있다.7 is a block diagram illustrating a computing system according to an embodiment of the present disclosure. Referring to FIG. 7 , the
메모리 장치(1200)는 DDR(Double Data Rate) 인터페이스를 통해 통신할 수 있다. 예를 들어, 프로세서(1100)는 메모리 장치(1200)를 컴퓨팅 시스템(1000)의 동작 메모리, 버퍼 메모리, 또는 캐시 메모리로서 사용할 수 있다.The
가속기(1300)는 칩셋(1400)과 연결될 수 있다. 가속기(1300)는 도 1 내지 도 6을 참조하여 설명된 가속기(120)일 수 있다. 칩셋(1400)은 프로세서(1100)와 전기적으로 연결되고, 프로세서(1100)의 제어에 따라 컴퓨팅 시스템(1000)의 하드웨어를 제어할 수 있다. 예를 들어, 칩셋(1400)은 주요 버스들을 통해 GPU(1500), 입출력 장치(1600), 및 스토리지 장치(1700) 각각과 연결되고, 주요 버스들에 대한 브릿지 역할을 수행할 수 있다. The
GPU(1500)는 컴퓨팅 시스템(1000)의 영상 데이터를 출력하기 위한 일련의 연산 동작을 수행할 수 있다. 예를 들어, GPU(1500)는 시스템-온-칩 형태로 프로세서(1100) 내에 실장될 수 있다.The
입출력 장치(1600)는 컴퓨팅 시스템(1000)으로 데이터 또는 명령어를 입력하거나 또는 외부로 데이터를 출력하는 다양한 장치들을 포함한다. 예를 들어, 입출력 장치(1600)는 키보드, 키패드, 버튼, 터치 패널, 터치 스크린, 터치 패드, 터치 볼, 카메라, 마이크, 자이로스코프 센서, 진동 센서, 압전 소자 등과 같은 사용자 입력 장치들 및 LCD (Liquid Crystal Display), OLED (Organic Light Emitting Diode) 표시 장치, AMOLED (Active Matrix OLED) 표시 장치, LED, 스피커, 모터 등과 같은 사용자 출력 장치들을 포함할 수 있다.The input/
스토리지 장치(1700)는 컴퓨팅 시스템(1000)의 저장 매체로서 사용될 수 있다. 스토리지 장치(1600)는 하드 디스크 드라이브, SSD, 메모리 카드, 메모리 스틱 등과 같은 대용량 저장 매체들을 포함할 수 있다.The
도 8은 본 개시의 실시 예에 따른 컴퓨팅 시스템이 적용된 데이터 센터를 보여주는 블록도이다. 도 8을 참조하면, 데이터 센터(2000)는 복수의 컴퓨팅 노드들(2100~2400)(또는 서버들)을 포함할 수 있다. 복수의 컴퓨팅 노드들(2100~2400)은 네트워크(NT)를 통해 서로 통신할 수 있다. 일 실시 예에서, 네트워크(NT)는 SAN(storage area network)와 같은 스토리지 전용 네트워크이거나 또는 TCP/IP와 같은 인터넷 네트워크일 수 있다. 일 실시 예에서, 네트워크(NT)는 파이버 채널(Fibre Channel), iSCSI 프로토콜, FCoE, NAS, NVMe-oF 등과 같은 다양한 통신 프로토콜들 중 적어도 하나를 포함할 수 있다. 8 is a block diagram illustrating a data center to which a computing system according to an embodiment of the present disclosure is applied. Referring to FIG. 8 , the
복수의 컴퓨팅 노드들(2100~2400) 각각은 프로세서들(2110, 2210, 2310, 2410), 메모리들(2120, 2220, 2320, 2420), 가속기들(2130, 2230, 2330, 2430), 및 인터페이스 회로들(2140, 2240, 2340, 2440)을 각각 포함할 수 있다. Each of the plurality of
예를 들어, 제1 컴퓨팅 노드(2100)는 제1 프로세서(2110), 제1 메모리(2120), 제1 가속기(2130), 및 제1 인터페이스 회로(2140)를 포함할 수 있다. 일 실시 예에서, 제1 프로세서(2110)는 싱글 코어 또는 멀티 코어로 구현될 수 있다. 제1 메모리(2120)는 DRAM, SDRAM, SRAM, 3D XPoint 메모리, MRAM, PRAM, FeRAM, ReRAM, 3D X-Point 등과 같은 메모리를 포함할 수 있다. 제1 메모리(2120)는 제1 컴퓨팅 노드(2100)의 시스템 메모리, 동작 메모리, 또는 버퍼 메모리로서 사용될 수 있다. 제1 가속기(2130)는 도 1 내지 도 6을 참조하여 설명된 가속기(120)일 수 있다. 제1 인터페이스 회로(2140)는 네트워크(NT)를 통한 통신 지원하도록 구성된 네트워크 인터페이스 컨트롤러(NIC; network interface controller)일 수 있다.For example, the
일 실시 예에서, 제1 컴퓨팅 노드(2100)의 제1 프로세서(2110)는 미리 정해진 메모리 인터페이스를 기반으로 제1 메모리(2120)를 액세스하도록 구성될 수 있다. 또는, 공유 메모리 구조(shared memory architecture)의 실시 예에서, 제1 컴퓨팅 노드(2100)의 제1 프로세서(2110)는 네트워크(NT)를 통해 다른 컴퓨팅 노드들(2200, 2300, 2400)의 메모리들(2220, 2320, 2420)을 액세스하도록 구성될 수 있다. 제1 인터페이스 회로(2140)는 제1 프로세서(2110)의 공유 메모리(즉, 다른 컴퓨팅 노드들의 메모리들)로의 접근을 제어 또는 지원하도록 구성된 네트워크 스위치(미도시)를 포함할 수 있다. In an embodiment, the
일 실시 예에서, 제1 컴퓨팅 노드(2100)의 제1 프로세서(2110)는 미리 정해진 인터페이스를 기반으로 제1 가속기(2130)를 액세스하도록 구성될 수 있다. 또는 제1 컴퓨팅 노드(2100)의 제1 프로세서(2110)는 네트워크(NT)를 통해 다른 컴퓨팅 노드들(2200, 2300, 2400)의 가속기들(2230, 2330, 2430)을 액세스하도록 구성될 수 있다. 제1 인터페이스 회로(2140)는 상술된 제1 프로세서(2110)의 다른 가속기들로의 접근을 제어 또는 지원하도록 구성된 네트워크 스위치(미도시)를 포함할 수 있다. In an embodiment, the
제2 내지 제4 컴퓨팅 노드들(2200~2400)은 상술된 제1 컴퓨팅 노드(2100)와 유사한 동작을 수행할 수 있으며, 이에 대한 상세한 설명은 생략된다.The second to
일 실시 예에서, 데이터 센터(2000)에서, 다양한 애플리케이션들이 실행될 수 있다. 다양한 애플리케이션들은 컴퓨팅 노드들(2100~2400) 사이의 데이터 이동 또는 복사를 위한 명령어를 실행하도록 구성되거나, 또는 컴퓨팅 노드들(2100~2400) 상에 존재하는 다양한 정보들을 조합, 가공, 재생산하기 위한 명령어들을 실행하도록 구성될 수 있다. 일 실시 예에서, 다양한 애플리케이션들은 데이터 센터(2000)에 포함된 복수의 컴퓨팅 노드들(2100~2400) 중 어느 하나에 의해 수행되거나 또는, 다양한 애플리케이션들은 복수의 컴퓨팅 노드들(2100~2400) 사이에서 분산되어 실행될 수 있다.In one embodiment, in the
일 실시 예에서, 데이터 센터(2000)는 고성능 컴퓨팅(HPC; high-performance computing)(예를 들어, 금융, 석유, 재료과학, 기상 예측 등), 기업형 애플리케이션(예를 들어, 스케일 아웃 데이터베이스), 빅 데이터 애플리케이션(예를 들어, NoSQL 데이터베이스, 인-메모리 복제 등)을 위해 사용될 수 있다.In one embodiment, the
일 실시 예에서, 복수의 컴퓨팅 노드들(2100~2400) 중 적어도 하나는 애플리케이션 서버일 수 있다. 애플리케이션 서버는 데이터 센터(2000)에서 다양한 동작을 수행하도록 구성된 애플리케이션을 실행하도록 구성될 수 있다. 복수의 컴퓨팅 노드들(2100~2400) 중 적어도 하나는 스토리지 서버일 수 있다. 스토리지 서버는 데이터 센터(2000)에서 생성되거나 또는 관리되는 데이터를 저장하도록 구성될 수 있다.In an embodiment, at least one of the plurality of
일 실시 예에서, 데이터 센터(2000)에 포함된 복수의 컴퓨팅 노드들(2100~2400) 각각 또는 그것들의 부분들은 동일한 위치에 존재하거나 또는 물리적으로 이격된 위치에 존재할 수 있으며, 무선 통신 또는 유선 통신에 기반된 네트워크(NT)를 통해 서로 통신할 수 있다. 일 실시 예에서, 데이터 센터(2000)에 포함된 복수의 컴퓨팅 노드들(2100~2400)은 서로 동일한 메모리 기술을 기반으로 구현되거나 또는 서로 다른 메모리 기술들을 기반으로 구현될 수 있다.In one embodiment, each of the plurality of
비록 도면에 도시되지는 않았으나, 데이터 센터(2000)의 복수의 컴퓨팅 노드들(2100~2400) 중 적어도 일부는 네트워크(NT) 또는 다른 통신 인터페이스(미도시)를 통해 외부 클라이언트 노드(미도시)와 통신할 수 있다. 복수의 컴퓨팅 노드들(2100~2400) 중 적어도 일부는 외부 클라이언트 노드의 요청에 따라 자체적으로 요청(예를 들어, 데이터 저장, 데이터 전송 등)을 처리하거나 또는 다른 컴퓨팅 노드에서 요청을 처리할 수 있다.Although not shown in the figure, at least some of the plurality of
일 실시 예에서, 데이터 센터(2000)에 포함된 복수의 컴퓨팅 노드들(2100~2400)의 개수, 각 컴퓨팅 노드에 포함된 프로세서의 개수, 메모리 개수, 가속기의 개수는 예시적인 것이며, 본 개시의 범위가 이에 한정되는 것은 아니다.In one embodiment, the number of the plurality of
상술된 내용은 본 개시를 실시하기 위한 구체적인 실시 예들이다. 본 개시는 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 개시는 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 개시의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.The above are specific embodiments for carrying out the present disclosure. The present disclosure will include not only the above-described embodiments, but also simple design changes or easily changeable embodiments. In addition, the present disclosure will also include techniques that can be easily modified and implemented using the embodiments. Therefore, the scope of the present disclosure should not be limited to the above-described embodiments, but should be defined by the claims described below as well as the claims and equivalents of the present invention.
100: 컴퓨팅 시스템
110: 호스트
120: 가속기
130: 메모리 모듈100: computing system
110: host
120: accelerator
130: memory module
Claims (16)
제1 인터럽트에 응답하여, 캐시 플러시 동작을 수행하는 단계;
상기 캐시 플러시 동작 수행 후에, 프로그램 카운터를 업데이트 섹션으로 점프하도록 업데이트 섹션 점프 동작을 수행하는 단계;
상기 업데이트 섹션 점프 동작 이후에, 호스트에서 컴파일된 바이너리 파일을 상기 가속기와 연결된 메모리 모듈에 기입하도록 프로그램 업데이트 동작을 수행하는 단계; 및
상기 프로그램 업데이트 동작 후에, 제2 인터럽트에 응답하여, 상기 프로그램 카운터를 시작 섹션으로 점프하도록 시작 섹션 점프 동작을 수행하는 단계를 포함하는 방법. In the method of operating an accelerator,
in response to the first interrupt, performing a cache flush operation;
performing an update section jump operation to jump a program counter to an update section after performing the cache flush operation;
performing a program update operation to write a compiled binary file to a memory module connected to the accelerator after the update section jump operation; and
after the program update operation, in response to a second interrupt, performing a start section jump operation to jump the program counter to the start section.
상기 가속기는 PCI-express(Peripheral Component Interconnect express) 인터페이스를 통해 상기 호스트와 통신하는 방법.The method of claim 1,
wherein the accelerator communicates with the host via a Peripheral Component Interconnect express (PCI-express) interface.
상기 캐시 플러시 동작 이전에, 상기 호스트로부터 상기 제1 인터럽트를 수신하는 단계; 및
상기 프로그램 업데이트 동작 이후에, 상기 호스트로부터 상기 제2 인터럽트를 수신하는 단계를 더 포함하는 방법. The method of claim 1,
receiving the first interrupt from the host before the cache flush operation; and
after the program update operation, receiving the second interrupt from the host.
상기 바이너리 파일은 링커 스크립트에 의해 상기 시작 섹션을 포함하는 일반 프로그램용 섹션 및 상기 업데이트 섹션을 포함하는 방법. The method of claim 1,
The binary file includes a section for a general program including the start section and the update section by a linker script.
상기 바이너리 파일은 상기 호스트에 의해 가속기 프로그램을 컴파일하여 생성된 방법. The method of claim 1,
The binary file is generated by compiling an accelerator program by the host.
상기 프로그램 업데이트 동작을 수행하는 단계는, 상기 가속기에 포함된 DMA 엔진에 의해, 상기 호스트로부터 상기 바이너리 파일을 독출하는 단계; 및
상기 DMA 엔진에 의해, 상기 바이너리 파일을 상기 메모리 모듈에 기입하는 단계를 포함하는 방법. The method of claim 1,
The performing of the program update operation may include: reading the binary file from the host by a DMA engine included in the accelerator; and
and writing, by the DMA engine, the binary file to the memory module.
상기 바이너리 파일을 상기 메모리 모듈에 기입하는 단계는,
커맨드/어드레스 라인을 통해 쓰기 커맨드 및 어드레스를 상기 메모리 모듈로 전송하는 단계; 및
데이터 라인을 통해 상기 바이너리 파일을 상기 메모리 모듈로 전송하는 단계를 포함하는 방법. 7. The method of claim 6,
Writing the binary file to the memory module comprises:
sending a write command and an address to the memory module through a command/address line; and
and transferring the binary file to the memory module via a data line.
상기 캐시 플러시 동작을 수행하는 단계는, 상기 가속기에 포함된 캐시 메모리 장치에 저장된 더티 상태에 대응하는 데이터를 상기 메모리 모듈에 기입하는 단계를 포함하는 방법.The method of claim 1,
The performing the cache flush operation includes writing data corresponding to a dirty state stored in a cache memory device included in the accelerator into the memory module.
상기 제1 및 제2 인터럽트는 상기 호스트에 의해 메모리 매핑된 입출력 레지스터(MMIO; memory mapped I/O register) 쓰기 동작을 가리키는 방법. The method of claim 1,
and the first and second interrupts indicate a memory mapped I/O register (MMIO) write operation by the host.
상기 가속기는 FPGA(field-programmable gate array), MPPA(massively parallel processor array), GPU(graphics processing unit), ASIC(Application-Specific Integrated Circuit), NPU(neural processing unit), TPU(Tensor Processing Unit) 및 MPSoC(Multi-Processor System-on-Chip) 중에서 어느 하나를 포함하는 방법. The method of claim 1,
The accelerator includes a field-programmable gate array (FPGA), a massively parallel processor array (MPPA), a graphics processing unit (GPU), an application-specific integrated circuit (ASIC), a neural processing unit (NPU), a tensor processing unit (TPU), and A method comprising any one of Multi-Processor System-on-Chip (MPSoC).
상기 프로그램 업데이트 동작 수행하는 동안에, 상기 프로그램 카운터는 무한 루프를 돌며 대기하는 단계를 더 포함하는 방법. The method of claim 1,
while the program update operation is performed, the program counter loops in an infinite loop and waits.
상기 제1 인터럽트에 응답하여, 프로그램 카운터를 상기 업데이트 섹션으로 점프하고, 상기 제2 인터럽트에 응답하여, 상기 프로그램 카운터를 상기 시작 섹션으로 점프하도록 구성된 가속기를 포함하고,
상기 제1 인터럽트는 가속기 프로그램 업데이트 시작을 가리키고, 상기 제2 인터럽트는 가속기 프로그램 업데이트 종료를 가리키는 컴퓨팅 시스템.a host configured to perform a compile operation on the accelerator program to generate a binary file including an update section and a start section, and to transmit first and second interrupts; and
an accelerator configured to jump a program counter to the update section in response to the first interrupt and jump the program counter to the start section in response to the second interrupt;
The first interrupt indicates the start of the accelerator program update, and the second interrupt indicates the end of the accelerator program update.
상기 가속기와 연결되고, 상기 가속기에서 실행되는 바이너리 파일을 저장하도록 구성된 메모리 모듈을 더 포함하는 컴퓨팅 시스템. 13. The method of claim 12,
The computing system further comprising a memory module coupled to the accelerator and configured to store a binary file executed by the accelerator.
상기 가속기는 상기 바이너리 파일을 상기 호스트에서 독출하고, 상기 바이너리 파일을 상기 메모리 모듈에 기입하도록 구성된 DMA 엔진을 포함하는 컴퓨팅 시스템. 14. The method of claim 13,
and the accelerator is a DMA engine configured to read the binary file from the host and write the binary file to the memory module.
상기 가속기는:
상기 바이너리 파일을 실행하도록 구성된 프로세서; 및
상기 프로세서에서 사용되는 데이터를 저장하고, 상기 제1 인터럽트에 응답하여, 더티 상태에 대응하는 데이터를 상기 메모리 모듈로 플러시 하도록 구성된 캐시 메모리 장치를 더 포함하는 컴퓨팅 시스템. 14. The method of claim 13,
The accelerator is:
a processor configured to execute the binary file; and
and a cache memory device configured to store data used by the processor and, in response to the first interrupt, flush data corresponding to a dirty state to the memory module.
상기 가속기는 CNN(Convolutional Neural Network), RNN(Recurrent Neural Network) 등과 같은 머신 러닝 알고리즘 등을 수행하도록 구성된 재구성 로직 회로를 더 포함하는 컴퓨팅 시스템. 13. The method of claim 12,
wherein the accelerator further comprises a reconstruction logic circuit configured to perform a machine learning algorithm, such as a Convolutional Neural Network (CNN), a Recurrent Neural Network (RNN), or the like.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200147969 | 2020-11-06 | ||
KR20200147969 | 2020-11-06 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220061828A true KR20220061828A (en) | 2022-05-13 |
Family
ID=81583605
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210057850A KR20220061828A (en) | 2020-11-06 | 2021-05-04 | Computing system including accelerator and operation method thereof |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20220061828A (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117312233A (en) * | 2023-11-28 | 2023-12-29 | 苏州元脑智能科技有限公司 | Field programmable gate array chip, construction method thereof and accelerator equipment |
-
2021
- 2021-05-04 KR KR1020210057850A patent/KR20220061828A/en unknown
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117312233A (en) * | 2023-11-28 | 2023-12-29 | 苏州元脑智能科技有限公司 | Field programmable gate array chip, construction method thereof and accelerator equipment |
CN117312233B (en) * | 2023-11-28 | 2024-02-23 | 苏州元脑智能科技有限公司 | Field programmable gate array chip, construction method thereof and accelerator equipment |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110506260B (en) | Methods, systems, and media for enhanced data processing in a neural network environment | |
US10866797B2 (en) | Data storage device and method for reducing firmware update time and data processing system including the device | |
EP3414661B1 (en) | Efficient live-migration of remotely accessed data | |
US11550738B2 (en) | Storage device including reconfigurable logic and method of operating the storage device | |
JP6994071B2 (en) | Comprehensive validation method for Protocol buffer-based projects | |
US10496335B2 (en) | Method and apparatus for performing multi-object transformations on a storage device | |
JP2013016182A (en) | Booting memory device from host | |
US11055220B2 (en) | Hybrid memory systems with cache management | |
CN114467081A (en) | Customized root process for individual applications | |
JP2022534496A (en) | Hybrid hardware-software coherent framework | |
JP2023528845A (en) | Chip activation control method, chip, display panel and electronic device | |
US20220374164A1 (en) | Storage device set including storage device and reconfigurable logic chip, and storage system including storage device set | |
CN107632779B (en) | Data processing method and device and server | |
CN114489472A (en) | Method of operating storage device and method of operating storage system using the same | |
CN109791510B (en) | Managing data flows in heterogeneous computing | |
US11526441B2 (en) | Hybrid memory systems with cache management | |
KR20220061828A (en) | Computing system including accelerator and operation method thereof | |
Awamoto et al. | Designing a storage software stack for accelerators | |
US11775303B2 (en) | Computing accelerator for processing multiple-type instruction and operation method thereof | |
KR102650569B1 (en) | General purpose computing accelerator and operation method thereof | |
US20230205532A1 (en) | Offloading computation based on extended instruction set architecture | |
US11243978B2 (en) | Non-centralized data synchronization for IoT and other distributed applications | |
KR20240076544A (en) | Storage system and method of controlling operation of the same | |
CN117850670A (en) | Data storage system, method of operating the same, and method of operating the system | |
CN112749052A (en) | Storage device and method for self-monitoring of storage device characteristics |