WO2023128357A1 - Software-based simulator for disaggregated architecture system, and method therefor - Google Patents

Software-based simulator for disaggregated architecture system, and method therefor Download PDF

Info

Publication number
WO2023128357A1
WO2023128357A1 PCT/KR2022/019733 KR2022019733W WO2023128357A1 WO 2023128357 A1 WO2023128357 A1 WO 2023128357A1 KR 2022019733 W KR2022019733 W KR 2022019733W WO 2023128357 A1 WO2023128357 A1 WO 2023128357A1
Authority
WO
WIPO (PCT)
Prior art keywords
components
memory
simulator
fabric
architecture system
Prior art date
Application number
PCT/KR2022/019733
Other languages
French (fr)
Korean (ko)
Inventor
강병훈
송용호
이준수
김대경
김건우
최원우
김은진
임창일
이호준
Original Assignee
한국과학기술원
성균관대학교산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from KR1020220066569A external-priority patent/KR20230101667A/en
Application filed by 한국과학기술원, 성균관대학교산학협력단 filed Critical 한국과학기술원
Publication of WO2023128357A1 publication Critical patent/WO2023128357A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/10Numerical modelling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/20Configuration CAD, e.g. designing by assembling or positioning modules selected from libraries of predesigned modules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/06Power analysis or power optimisation

Definitions

  • the present disclosure relates to a software-based discrete architecture system simulator and method thereof.
  • the present disclosure provides a software-based discrete architecture system simulator and method thereof.
  • the simulator includes a preparation unit configured to model components of an individual separation architecture system based on a setting file for the separation architecture system, and to measure functions and performances of the separation architecture system, the It includes an execution unit configured to perform a simulation for each of the components, and an output unit configured to output a result of the simulation.
  • a simulator method includes modeling components of an individual separation architecture system based on a configuration file for the individual separation architecture system, and measuring the function and performance of the individual separation architecture system. performing a simulation for each of the elements; and outputting a result of the simulation.
  • cloud service providers can easily test using a simulator before actually implementing the infrastructure they have designed, and furthermore, the present disclosure can also be used as a tool for estimating potential costs and problems. will be available
  • 1 is a diagram illustrating an existing architecture and a general disaggregated architecture.
  • FIG. 2 is a diagram schematically showing the configuration of a simulator of the present disclosure.
  • FIG. 3 is a diagram schematically illustrating a generalized discrete architecture that is the subject of the present disclosure.
  • FIG. 4 is a diagram illustrating the compute node of FIG. 3;
  • FIG. 5 is a diagram for explaining a memory space of the memory controller of FIG. 1 .
  • FIG. 1 is a diagram showing an existing architecture and a general separate architecture.
  • (a) of FIG. 1 shows an existing architecture
  • (b) of FIG. 1 shows an individual isolation architecture.
  • the present disclosure presents a method capable of simulating the structure of a general discrete architecture in software and Disaggsim, which is an actual implementation. Through this, cloud service providers can easily test their designed infrastructure before actually implementing it, and furthermore, they can use the present disclosure as a tool for estimating potential costs and problems.
  • Disaggsim a simulator that can change the settings and configuration of an individual separation system and test its performance without physical hardware.
  • FIG. 2 is a diagram schematically showing the configuration of the simulator 200 of the present disclosure.
  • the simulator 200 of the present disclosure is largely configured to perform three steps 210, 220, and 230.
  • the first step 210 is a step of preparing a simulation by reading a setting file in which the configuration of the system described in the following 2. Architecture is described in Python or another programming language, and the second step 220 is prepared It is a step of executing a program in a simulation environment to check whether the function of the individual separation system is operating and calculating a performance measure, and a third step 230 is a step of outputting whether the function is operating or not and the calculated performance measure.
  • Disaggsim 200 may include a preparation unit configured to perform the three steps 210, 220, and 230 respectively, an execution unit, and an output unit. In some embodiments, at least two of the preparation unit, the execution unit, or the output unit may be integrated into one unit.
  • Step 1 Analysis of configuration files and preparation for simulation
  • Disaggsim models each component of the individual separation system in software (each component is described in 2. Architecture). defined as a concept). The modeled components are connected to each other through a setting file written in a programming language to form an overall separate system. In addition, several parameters that affect component modeling can be defined in the configuration file.
  • the pseudo code in Table 1 below shows an example of a configuration file. At the beginning of the configuration file, it is defined that it is a separate system configuration. After that, it is configured to simulate a system in which one compute node and a memory pool are connected by a fabric interconnect with a latency of 300ns. The program used for simulation is also specified at the end.
  • Step 2 (220): Running the simulation
  • Disaggsim simulates the operation of each component in software. For example, in the first step 210, it is possible to calculate how many CPU cycles and power are required to execute the specified program.
  • the program code for calculating the relevant numerical value must be prepared in advance to fit the system described in 2. Architecture, and properly initialized in the first step (210). Since Disaggsim 200 provides a programming interface for writing corresponding codes and means for connecting between models of each system component, a user of the present disclosure can easily write codes for simulations he/she needs.
  • the simulation result is stored in a separate data structure and reported to the user of the present disclosure in a third step (230).
  • the result calculated after the end of the simulation is output.
  • the output result may include not only numerical values related to the performance and functions of the modeled system, but also a configuration diagram of the entire system.
  • the output format is usually a text file, but can also be an image file or a binary file that can be analyzed by other programs.
  • the present disclosure aims at a generalized simulation based on the design of Disaggsim 200 and a general discrete architecture. Since the performance of an individual system can vary greatly depending on the structure and implementation method, it is necessary to identify and define modules that can be expressed in the simulator. Since there is no standardized separate architecture yet, Disaggsim (200) considers compatibility with several existing proposed systems.
  • FIG. 3 is a diagram schematically illustrating a generalized separate architecture 300 that is the subject of the present disclosure.
  • the generalized individual isolation architecture 300 includes a computing node 310, a memory pool 320, and a fabric interconnect 330 connecting them. It consists of The compute node 310 accesses the memory pool 320 in which data and execution codes are stored through the fabric interconnect 330 and performs work. At this time, the compute node 310 generates a fabric packet, which is a data structure containing related information, to transfer data and code, and transmits the read/write request to the memory pool 320 .
  • FIG. 3 illustrates a process in which a fabric packet generated in the computing node 310 #0 passes through the fabric interconnect 330 and reaches the memory pool 320 .
  • the simulator 200 of the present disclosure provides an interface to configure and connect the computing node 310 , the memory pool 320 , and the fabric interconnect 330 through a modularization function. Below, each component is explained in detail.
  • a work group means a configuration of modules required for actual work.
  • Each work group is composed of a pool including a compute node 310 and one or more memory controllers 321 .
  • the components of the work group are managed using identifiers (Component ID (CID) and sub-component ID (sub CID)).
  • CMU Component Management Unit
  • the software modeling code of the CMU 340 is compiled into a binary file before driving the simulator 200, initialized in the first step 210, and connected to other components.
  • the CMU 340 directly connected to the fabric interconnect 330 transmits an initialization packet to all components for initialization.
  • the CMU 340 allocates CIDs to all nodes including the compute node 310 and the memory pool 320 and allocates sub-CIDs to all memory controllers 321 .
  • the CMU 340 includes a resource allocation table for matching the CID allocated to the compute node 310 and the sub-CID (memory range information) allocated to the memory controller 321, respectively.
  • the software modeling code of the compute node 310 is compiled into a binary file before running the simulator 200, initialized in the first step 210, and connected to other components. Thereafter, in a second step 220 it performs a predefined simulation and interacts with other components such as fabric interconnect 330 and memory pool 320 .
  • the compute node 310 is an element that actually performs calculations. Most discrete systems use a custom System-on-Chip (SoC) because discrete architectures require hardware resources to be connected to the interconnect, while conventional processors do not have the ability to connect directly to the interconnect. This disclosure also models a custom Soc to connect to fabric interconnect 330 .
  • SoC System-on-Chip
  • FIG. 4 is a diagram illustrating the compute node 310 of FIG. 3 .
  • a compute node 310 includes a core 411 including L1 and L2, a last-level cache (LLC) 413, and interconnect logic 415. can do.
  • the core 311 is the same as the CPU core of the existing architecture. Accordingly, the compute node 310 may drive a binary program created to suit the existing architecture.
  • the simulator 200 of the present disclosure also supports compatibility with binary programs for existing architectures.
  • Code modeling the interconnect logic 415 in software is compiled into a binary file before running the simulator 200, initialized in the first step 210, and connected to other components. Thereafter, in a second step 220, it performs a predefined simulation and interacts with other components such as the compute node 310 and the like.
  • the interconnect logic 415 is located between the compute node 310 responsible for the actual operation and the fabric interconnect 330 connecting it. It is assumed that the interconnect logic 415 uses one of the connection technologies that meet common network requirements for connections between each node and module. For example, interconnect technologies such as InfiniBand define different packet specifications for fabric interconnects, while storage components such as DRAM use traditional datapath packets (eg DDR4). Accordingly, the interconnect logic 415 must act as a translator between the fabric interconnect 330 and the components to resolve these incompatibilities. Specifically, the interconnector logic 415 may include a fabric memory management unit (fMMU) 416 and a packet translator 417 .
  • fMMU fabric memory management unit
  • the fabric address space requires a management unit similar to the memory management unit (MMU) of conventional processor architectures.
  • MMU memory management unit
  • Previous studies have a single central MMU, but all memory access traffic is concentrated in one place, which can cause a serious bottleneck.
  • the fMMU 416 is configured for each compute node 310 to solve the problem.
  • the fMMU 416 is a component of interconnect logic that can map a single unified fabric memory address space to one or more memory controllers.
  • the fMMU 416 may map the address space to the memory controller 321 through several methods. As an example, the fMMU 416 retrieves a base address from an address translation table based on a physical address of a CPU packet. Finally, an offset is added to this base address to obtain a fabric memory address actually used by the memory module 323 .
  • the software modeling code of the fMMU 416 is compiled into a binary file before running the simulator 200, initialized in the first step 210, and connected to other components. Thereafter, as a sub-component of the compute node 310, it performs a predefined simulation in the second step 220 and interacts with other components such as the memory pool 320 and the like.
  • the interconnect logic 415 of the compute node 310 converts the CPU-generated packets into fabric packets.
  • the detailed structure of the packet is described in 2-6. It is described later in Fabric Packet.
  • the software modeling code for packet conversion is compiled into a binary file before running the simulator 200, initialized in the first step 210, and connected to other components. Thereafter, as a sub-component of the compute node 310, it performs a predefined simulation in the second step 220 and interacts with other components such as the memory pool 320 and the like.
  • Memory resources of the separate architecture are integrated and configured to facilitate large-scale data calculation and flexible management for the compute node 310 .
  • Centralized memory resource management is a key feature of memory-centric discrete architectures. That is, all memory uses one unified address space.
  • the memory pool 320 includes a memory module 323 such as DRAM and NVMe and a memory module 323 compatible with a fabric such as a memory pool manager (MPM) 350.
  • MPM memory pool manager
  • the memory pool shown in FIG. 1 can be configured and managed.
  • Each memory module 323 can be accessed through a memory controller 321 connected to the MPM 350 .
  • the compute node 310 may use completely separate memory without using local memory.
  • the software modeling code for the memory pool 320 is compiled into a binary file before running the simulator 200, initialized in the first step 210, and connected with other components. Thereafter, in a second step 220 it performs a predefined simulation and interacts with other components such as fabric interconnect 330 and compute node 310 .
  • the memory space is remotely located and attached to the fabric interconnect 330 .
  • the memory controller 321 and the memory module 323 have limited processing power and are designed to perform only memory I/O operations. Therefore, the model that this disclosure simulates includes MPM 350, a new component of computing power and long-range memory access.
  • the MPM interface is responsible for inter-component communication between the fabric interconnect 330 and the memory controller 321 .
  • the MPM 350 includes an interconnect logic 351, a packet multiplexer 353, and a memory controller 321.
  • MPM 350 is identified by CID and each memory controller 321 is identified by sub CID.
  • Interconnect logic 351 of MPM 350 receives fabric packets from fabric interconnect 330 and forwards the packets to packet multiplexer 353.
  • the software modeling code of the MPM 350 is compiled into a binary file before driving the simulator 200, initialized in the first step 210, and connected to other components. Thereafter, in a second step 220 it performs a predefined simulation and interacts with other components such as fabric interconnect 330 and compute node 310 .
  • Several compute nodes 310 may simultaneously transmit read/write fabric packets, which are modified memory packets including CID and sub-CID fields, to the memory pool 320 connected to the fabric.
  • the interconnect logic 415 of the compute node 310 includes the CID and sub-CID information into the packet.
  • This encapsulated packet is transmitted over fabric interconnect 330 to MPM 350 .
  • the packet multiplexer 353 interprets the encapsulated fabric packet again and references the sub-CID included in the header of the packet to correspond to the corresponding sub-CID.
  • the packet is sent to the memory controller 321.
  • the memory controller 321 receives the separated original CPU packet without the CID and sub-CID information.
  • the software modeling code of the packet multiplexer 353 is compiled into a binary file before running the simulator 200, initialized in the first step 210, and connected to other components. Thereafter, as a sub-component of the memory pool manager 350, it performs a predefined simulation in the second step 220 and interacts with other components such as the memory controller 321.
  • the memory controller 321 directly accesses storage structures for each module, such as DRAM rows and columns, according to physical addresses included in packets received from the MPM 350 .
  • the memory controller 321 has read and write queues to process requests simultaneously according to the capacity of the queue. As long as the queue is not full, even if the memory controller 321 is processing another request, the computing node 310 does not need to send the packet again.
  • the memory controller 321 has its own physical address space, but since it appears as a contiguous memory space to the compute node 310, it appears merged with the address space provided by other memory controllers 321.
  • FIG. 5 is a diagram for explaining a memory space of the memory controller 321 of FIG. 1 .
  • each memory controller 321 has its own memory space between 0 and 8 GB.
  • the compute node 310 regards these two 8 GB spaces as one 16 GB space. That is, each component of the individual separation system supports to continuously access the memory space allocated to one work group.
  • the MPM 353 routes the memory request between the two memory controllers 321 using the sub CID included in the request packet. Since the Fmmu 416 of the interconnect logic 415 converts each request address into an address of the target memory controller 321, the memory controller 321 can process the request without separate conversion.
  • the software modeling code for the memory controller 321 is compiled into a binary file before driving the simulator 200, initialized in the first step 210, and connected to other components. Thereafter, as a sub-component of the memory pool 320, it performs a predefined simulation in the second step 220 and interacts with other components such as the memory pool manager 350 and the like.
  • the fabric interconnect 350 is responsible for a connection for communication between the compute node 310 and the memory pool 320 .
  • Fabric interconnect 350 is assumed to be based on existing high-speed interconnect technology and also includes hardware components of the fabric interconnect such as packet routing.
  • the simulator 200 of the present disclosure supports the detailed configuration of the fabric interconnect 330 and can modify parameters affecting latency and throughput.
  • the topology in which each component is connected also supports an interface that can be defined by the user.
  • Code modeling the fabric interconnect 330 in software is compiled into a binary file before running the simulator 200, initialized in the first step 210, and connected to other components. After that, in the second step 220, it performs a predefined simulation and interacts with other components such as the compute node 310 and the memory pool manager 350.
  • the fabric packet is a communication means for communication between the compute node 310 and the memory pool 320 . Packets are organized in binary format. For example, a fabric packet may have a structure as shown in Table 2 below.
  • the fabric packet includes a CID (srcCID/dstCID) representing the source and destination and a sub-CID (sub-dstCID) corresponding to the memory controller.
  • Users of this disclosure may include other fields depending on the system model they wish to simulate. For example, an item to be measured or a field related to system control may be additionally defined according to the implemented protocol and the fabric interconnect 330.
  • a code modeling a fabric packet in software is performed before driving the simulator 200. It is compiled into a binary file, initialized in the first step 210 and linked with other components. After that, in a second step 220, it performs a predefined simulation and interacts with other components. Since the fabric packet is a concept applied to the entire simulator, codes modeling all components of the simulator 200 are written to ensure compatibility with the fabric packet.
  • the present disclosure provides a software-based discrete architecture system 300 simulator 200 and a method thereof.
  • the method of the simulator 200 includes modeling components of the individually separated architecture system 300 based on a setting file for the individually separated architecture system 300 (210), an individual separation architecture system ( In order to measure the function and performance of 300), a simulation is performed on each of the components (220), and a result of the simulation is output (230).
  • the simulator 200 includes a preparation unit configured to model components of the individually separated architecture system 300 based on a setting file for the individual separation architecture system 300, and the individual separation architecture system 300 In order to measure the function and performance of, an execution unit configured to perform a simulation for each of the components, and an output unit configured to output a result of the simulation.
  • codes for modeling each component are precompiled, initialized by the preparation unit and connected to each other, and interact with each other while simulation is performed by the execution unit.
  • components include at least one compute node 310 configured to perform actual calculations, memory modules 323 required to perform calculations, and memory configured to manage the memory modules 323 .
  • a memory pool 320 including controllers 321 and a fabric interconnect 330 supporting packet communication between the compute node 310 and the memory pool 320 .
  • the compute node 310 is located between the core 411 and the core 411 and the fabric interconnect 330 to map a single address space to at least one of the memory controllers 321 . and an interconnect logic 415 comprising a configured fabric memory management unit 416 and a packet translator 417 configured to convert packets generated in the core 411 into fablet packets, respectively.
  • the components further include a component management unit 340 configured to assign a CID to the compute node 310 and assign a sub CID to each of the memory controllers 321 .
  • the compute node 310 is configured to include the assigned CID and the sub-CID assigned to at least one of the memory controllers 321 in a fabric packet and transmit the fabric packet to the fabric interconnect 330. do.
  • the components include an interconnect logic 351 configured to receive a fabric packet from the fabric interconnect 330 and a fabric received fabric packet to at least one memory controller 321 to which a sub CID of the received fabric packet is assigned. and a memory pool manager 350 comprising a packet multiplexer 353 configured to send packets.
  • each of the memory controllers 321 is configured to store a received fabric packet in at least one of the memory modules 323 .
  • devices and components described in the embodiments include a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, a microcomputer, a field programmable gate array (FPGA), and a programmable PLU (programmable logic unit). logic unit), microprocessor, or any other device capable of executing and responding to instructions.
  • the processing device may run an operating system (OS) and one or more software applications running on the operating system.
  • a processing device may also access, store, manipulate, process, and generate data in response to execution of software.
  • the processing device includes a plurality of processing elements and/or a plurality of types of processing elements. It can be seen that it can include.
  • a processing device may include a plurality of processors or a processor and a controller. Other processing configurations are also possible, such as parallel processors.
  • Software may include a computer program, code, instructions, or a combination of one or more of the foregoing, which configures a processing device to operate as desired or processes independently or collectively. You can command the device.
  • the software and/or data may be embodied in any tangible machine, component, physical device, computer storage medium, or device to be interpreted by, or to provide instructions or data to, a processing device. there is.
  • Software may be distributed on networked computer systems and stored or executed in a distributed manner.
  • Software and data may be stored on one or more computer readable media.
  • Methods according to various embodiments may be implemented in the form of program instructions that can be executed through various computer means and recorded on a computer-readable medium.
  • the medium may continuously store programs executable by a computer or temporarily store them for execution or download.
  • the medium may be a single or various types of recording means or storage means in the form of a combination of several pieces of hardware. It is not limited to a medium directly connected to a certain computer system, and may be distributed on a network. Examples of the medium include magnetic media such as hard disks, floppy disks and magnetic tapes, optical recording media such as CD-ROM and DVD, magneto-optical media such as floptical disks, and ROM, RAM, flash memory, etc. configured to store program instructions.
  • examples of other media include recording media or storage media managed by an app store that distributes applications, a site that supplies or distributes various other software, and a server.
  • the components are not limited.
  • a (e.g., first) element is referred to as being “(functionally or communicatively) connected” or “connected” to another (e.g., second) element, it is referred to as being “connected” to the other (e.g., second) element. It may be directly connected to the component or connected through another component (eg, a third component).
  • module used in this document includes a unit composed of hardware, software, or firmware, and may be used interchangeably with terms such as logic, logic block, component, or circuit, for example.
  • a module may be an integral part or a minimum unit or part thereof that performs one or more functions.
  • the module may be composed of an application-specific integrated circuit (ASIC).
  • ASIC application-specific integrated circuit
  • each component eg, module or program of the described components may include a singular object or a plurality of entities.
  • one or more components or steps among the aforementioned components may be omitted, or one or more other components or steps may be added.
  • a plurality of components eg modules or programs
  • the integrated component may perform one or more functions of each of the plurality of components identically or similarly to those performed by the corresponding component among the plurality of components prior to integration.
  • steps performed by a module, program, or other component are executed sequentially, in parallel, iteratively, or heuristically, or one or more of the steps are executed in a different order, omitted, or , or one or more other steps may be added.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Debugging And Monitoring (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

Various embodiments relate to a software-based simulator for a disaggregated architecture system, and a method therefor, and simulator modeling constituent elements of the disaggregated architecture system on the basis of a configuration file for the disaggregated architecture system, simulating each of the constituent elements in order to measure the function and performance of the disaggregated architecture system, and outputting a result of the simulation.

Description

소프트웨어 기반의 개별분리 아키텍처 시스템 시뮬레이터 및 그의 방법Software-based individual separation architecture system simulator and its method
본 개시는 소프트웨어 기반의 개별분리 아키텍처 시스템 시뮬레이터 및 그의 방법에 관한 것이다. The present disclosure relates to a software-based discrete architecture system simulator and method thereof.
현대 사회의 산업 전반에서는 인공지능과 사물인터넷 등 신기술이 적극적으로 도입되고 있다. 이러한 신기술의 특징으로는 대규모의 데이터 집적 ("빅 데이터")을 요구하는 것과 함께, 어느 한 작업에 특화된 병렬 처리 하드웨어(GPU, ASIC 등)가 고속의 연산을 위해 사용된다는 것을 들 수 있다. 그러나, 일반적인 기업의 입장에서는 대규모의 데이터를 저장/전송/처리하기 위한 인프라스트럭처를 전부 갖추기에 시설 및 유지관리 비용 등 부담이 상당하다. 따라서, 점점 더 많은 기업들이 아마존 웹 서비스(Amazon Web Service)와 같은 클라우드 서비스(cloud service)/데이터 센터 프로바이더(data center provider)의 인프라스트럭처를 대여하여 사용하고 있다.New technologies such as artificial intelligence and the Internet of Things are being actively introduced in all industries in modern society. Characteristics of these new technologies include the requirement for large-scale data aggregation ("big data") and the use of parallel processing hardware (GPUs, ASICs, etc.) specialized for a particular task for high-speed computation. However, from the point of view of a typical company, it is burdensome such as facility and maintenance costs to have all the infrastructure for storing/transmitting/processing large-scale data. Accordingly, more and more companies are renting and using infrastructure of a cloud service/data center provider such as Amazon Web Service.
반면, 클라우드 서비스 사업자의 입장에서는 비용 대비 수익을 극대화하기 위해 정확한 수요를 예측하고, 그에 맞게 각종 하드웨어 자원을 준비해야 하는 부담이 생긴다. 이 과정에서, 기존에는 수요의 예측을 위하여 CPU/메모리/연산가속기 등을 하나로 묶은 머신을 단위로 사용했다. 이는 전통적인 컴퓨터 아키텍처를 그대로 반영한 것이지만, 다음과 같은 두 가지의 단점이 존재했다. 첫 번째 단점은, 수요 예측과 자원 준비시에 어느 하나의 자원만을 제한 없이 추가하거나 제거할 수 없다는 것이다. 예를 들어, 기존 머신 단위 아키텍처에서는 메모리나 연산가속기를 추가하기 위해서는 반드시 해당 하드웨어를 제어하는 CPU 또한 동일 머신에 포함되어야 한다. 따라서, 클라우드 서비스 사업자는 흔히 필요 이상의 자원을 준비하게 되는 경우가 흔하다. 두 번째 단점은, 마찬가지로, 클라우드 서비스 소비자 역시 어느 하나의 자원만을 제한 없이 추가하거나 제거할 수 없다는 것이다.On the other hand, cloud service providers face the burden of accurately predicting demand and preparing various hardware resources accordingly in order to maximize cost versus profit. In this process, in the past, a machine that bundled CPU/memory/accelerator, etc. was used as a unit to predict demand. This reflected the traditional computer architecture as it is, but it had two drawbacks: The first drawback is that only one resource cannot be added or removed without limit during demand forecasting and resource preparation. For example, in the existing machine unit architecture, in order to add a memory or an operation accelerator, the CPU that controls the corresponding hardware must also be included in the same machine. Therefore, it is common for cloud service providers to prepare more resources than necessary. The second drawback is, likewise, that cloud service consumers cannot add or remove any one resource without limit.
본 개시는 소프트웨어 기반의 개별분리 아키텍처 시스템 시뮬레이터 및 그의 방법을 제공한다. The present disclosure provides a software-based discrete architecture system simulator and method thereof.
본 개시에 따른 시뮬레이터는, 개별분리 아키텍처 시스템에 대한 설정 파일에 기반하여, 상기 개별분리 아키텍처 시스템의 구성 요소들을 모델링하도록 구성되는 준비부, 상기 개별분리 아키텍처 시스템의 기능과 성능을 측정하기 위해, 상기 구성 요소들의 각각에 대해 시뮬레이션을 수행하도록 구성되는 실행부, 및 상기 시뮬레이션의 결과를 출력하도록 구성되는 출력부를 포함한다. The simulator according to the present disclosure includes a preparation unit configured to model components of an individual separation architecture system based on a setting file for the separation architecture system, and to measure functions and performances of the separation architecture system, the It includes an execution unit configured to perform a simulation for each of the components, and an output unit configured to output a result of the simulation.
본 개시에 따른 시뮬레이터의 방법은, 개별분리 아키텍처 시스템에 대한 설정 파일에 기반하여, 상기 개별분리 아키텍처 시스템의 구성 요소들을 모델링하는 단계, 상기 개별분리 아키텍처 시스템의 기능과 성능을 측정하기 위해, 상기 구성 요소들의 각각에 대해 시뮬레이션을 수행하는 단계; 및 상기 시뮬레이션의 결과를 출력하는 단계를 포함한다. A simulator method according to the present disclosure includes modeling components of an individual separation architecture system based on a configuration file for the individual separation architecture system, and measuring the function and performance of the individual separation architecture system. performing a simulation for each of the elements; and outputting a result of the simulation.
본 개시에 따르면, 클라우드 서비스 사업자가 자신이 설계한 인프라스트럭처를 실제로 구현하기 이전에, 시뮬레이터를 이용하여, 쉽게 테스트할 수 있으며, 더 나아가 본 개시를 잠재적인 비용 및 문제점을 예상하기 위한 도구로도 사용할 수 있을 것이다.According to the present disclosure, cloud service providers can easily test using a simulator before actually implementing the infrastructure they have designed, and furthermore, the present disclosure can also be used as a tool for estimating potential costs and problems. will be available
도 1은 기존 아키텍처와 일반적인 개별분리 아키텍처(disaggregated architecture)를 도시하는 도면이다.1 is a diagram illustrating an existing architecture and a general disaggregated architecture.
도 2는 본 개시의 시뮬레이터의 구성을 개략적으로 도시하는 도면이다. 2 is a diagram schematically showing the configuration of a simulator of the present disclosure.
도 3은 본 개시의 대상이 되는 일반화된 개별분리 아키텍처를 개략적으로 도시하는 도면이다. 3 is a diagram schematically illustrating a generalized discrete architecture that is the subject of the present disclosure.
도 4는 도 3의 컴퓨트 노드를 도시하는 도면이다. FIG. 4 is a diagram illustrating the compute node of FIG. 3;
도 5는 도 1의 메모리 컨트롤러의 메모리 공간을 설명하기 위한 도면이다.FIG. 5 is a diagram for explaining a memory space of the memory controller of FIG. 1 .
이하, 본 개시의 다양한 실시예들이 첨부된 도면을 참조하여 설명된다. Hereinafter, various embodiments of the present disclosure will be described with reference to the accompanying drawings.
도 1은 기존 아키텍처와 일반적인 개별분리 아키텍처를 도시하는 도면이다. 여기서, 도 1의 (a)는 기존 아키텍처를 나타내고, 도 1의 (b)는 개별 분리 아키텍처를 나타낸다. 1 is a diagram showing an existing architecture and a general separate architecture. Here, (a) of FIG. 1 shows an existing architecture, and (b) of FIG. 1 shows an individual isolation architecture.
도 1을 참조하면, 기존 머신 단위 아키텍처의 전술된 단점을 해결하기 위해, "개별분리 아키텍처"라는 새로운 컴퓨터 아키텍처가 제안되었다. 개별분리 아키텍처에서는 각 머신별로 할당되어 있던 하드웨어 자원을 해체해, 각 하드웨어 자원 풀(pool)로 묶어 배치하고 이를 초고속의 인터페이스로 연결하는 기술이다. 각 하드웨어 자원은 소비자 필요에 따라 유연하게 연결이 가능하므로, 자원의 수요 예측과 배치가 유연해진다. Referring to FIG. 1 , in order to solve the above-mentioned disadvantages of the existing machine unit architecture, a new computer architecture called “separate architecture” has been proposed. In the individual separation architecture, hardware resources allocated to each machine are dismantled, grouped into pools of each hardware resource, and connected to each other through high-speed interfaces. Since each hardware resource can be flexibly connected according to consumer needs, demand forecasting and allocation of resources become flexible.
그러나, 개별분리 아키텍처가 클라우드 서비스 산업에서 많은 관심을 받고 있는 것과는 달리, 현재 공개된 기술은 일부 기업에서의 사유(proprietary) 프로토타입 또는 기술 백서 수준에 그친다. 따라서, 클라우드 서비스 사업자는 자신의 서비스 인프라스트럭처를 개별분리 아키텍처 기반으로 설계하는 데 많은 어려움이 있다. 본 개시는 일반적인 개별분리 아키텍처의 구조를 소프트웨어적으로 시뮬레이션 할 수 있는 방법과 실제 구현물인 Disaggsim을 제시한다. 이를 통해, 클라우드 서비스 사업자는 자신이 설계한 인프라스트럭처를 실제로 구현하기 이전에 쉽게 테스트할 수 있으며, 더 나아가 본 개시를 잠재적인 비용 및 문제점을 예상하기 위한 도구로도 사용할 수 있을 것이다.However, unlike individual architectures that are receiving a lot of attention in the cloud service industry, the currently disclosed technologies are only at the level of proprietary prototypes or technical white papers in some companies. Therefore, cloud service providers have many difficulties in designing their own service infrastructure based on an individual separation architecture. The present disclosure presents a method capable of simulating the structure of a general discrete architecture in software and Disaggsim, which is an actual implementation. Through this, cloud service providers can easily test their designed infrastructure before actually implementing it, and furthermore, they can use the present disclosure as a tool for estimating potential costs and problems.
1.One. 시뮬레이터simulator
본 개시에서는 물리적인 하드웨어 없이도 개별분리 시스템의 설정과 구성을 변경하고 성능을 테스트해 볼 수 있는 시뮬레이터인 Disaggsim을 제안한다. This disclosure proposes Disaggsim, a simulator that can change the settings and configuration of an individual separation system and test its performance without physical hardware.
도 2는 본 개시의 시뮬레이터(200)의 구성을 개략적으로 도시하는 도면이다. 2 is a diagram schematically showing the configuration of the simulator 200 of the present disclosure.
도 2를 참조하면, 본 개시의 시뮬레이터(200), 즉, Disaggsim(200)은 크게 세 개의 단계들(210, 220, 230)을 수행하도록 구성된다. 제 1 단계(210)는, 다음의 2. 아키텍처에서 설명하는 시스템의 구성을 파이썬(python) 또는 다른 프로그래밍 언어로 기술한 설정 파일을 읽어 시뮬레이션을 준비하는 단계이고, 제 2 단계(220)는 준비된 시뮬레이션 환경에서 프로그램을 실행시켜 개별분리 시스템의 기능 동작 여부를 확인하고 성능 척도를 계산하는 단계이며, 제 3 단계(230)는 기능 동작 여부 및 계산된 성능 척도를 출력하는 단계이다. 이 때, Disaggsim(200)은 세 개의 단계들(210, 220, 230)을 각각 수행하도록 구성되는 준비부, 실행부, 및 출력부를 포함할 수 있다. 일부 실시예들에서, 준비부, 실행부, 또는 출력부 중 적어도 두 개는 하나의 유닛으로 통합되어 구성될 수도 있다. Referring to FIG. 2 , the simulator 200 of the present disclosure, that is, the Disaggsim 200, is largely configured to perform three steps 210, 220, and 230. The first step 210 is a step of preparing a simulation by reading a setting file in which the configuration of the system described in the following 2. Architecture is described in Python or another programming language, and the second step 220 is prepared It is a step of executing a program in a simulation environment to check whether the function of the individual separation system is operating and calculating a performance measure, and a third step 230 is a step of outputting whether the function is operating or not and the calculated performance measure. At this time, Disaggsim 200 may include a preparation unit configured to perform the three steps 210, 220, and 230 respectively, an execution unit, and an output unit. In some embodiments, at least two of the preparation unit, the execution unit, or the output unit may be integrated into one unit.
1-1. 제 1 단계(210): 설정 파일 분석 및 시뮬레이션 준비1-1. Step 1 (210): Analysis of configuration files and preparation for simulation
실제 개별분리 시스템을 구현한 하드웨어 없이도 시뮬레이션을 통해 시스템의 기능과 성능을 가늠하기 위해, Disaggsim(200)은 개별분리 시스템의 각 구성 요소들을 소프트웨어적으로 모델링한다 (각 구성 요소들은 2. 아키텍처에 기술되어 있는 개념으로 정의된다). 모델링된 구성요소들은 프로그래밍 언어로 작성된 설정 파일을 통해 서로 연결되어 전체적인 개별분리 시스템을 구성하게 된다. 또한, 설정 파일에는 구성 요소의 모델링에 영향을 미치는 매개 변수가 여러 개 정의될 수 있다.In order to estimate the function and performance of the system through simulation without the hardware that implements the actual individual separation system, Disaggsim (200) models each component of the individual separation system in software (each component is described in 2. Architecture). defined as a concept). The modeled components are connected to each other through a setting file written in a programming language to form an overall separate system. In addition, several parameters that affect component modeling can be defined in the configuration file.
하기 [표 1]의 의사 코드는 설정 파일의 예시를 보여준다. 설정 파일의 시작 부분에서 개별분리 시스템의 설정임을 정의한다. 그 이후, 컴퓨트 노드 1개와 메모리 풀을 레이턴시가 300ns인 패브릭 인터커넥트로 연결한 시스템을 시뮬레이션하도록 구성한다. 시뮬레이션에 사용되는 프로그램 또한 마지막에 지정되었다.The pseudo code in Table 1 below shows an example of a configuration file. At the beginning of the configuration file, it is defined that it is a separate system configuration. After that, it is configured to simulate a system in which one compute node and a memory pool are connected by a fabric interconnect with a latency of 300ns. The program used for simulation is also specified at the end.
Figure PCTKR2022019733-appb-img-000001
Figure PCTKR2022019733-appb-img-000001
1-2. 제 2 단계(220): 시뮬레이션 실행1-2. Step 2 (220): Running the simulation
제 1 단계(210)에서 모델링된 시스템의 기능과 성능을 측정하기 위해서, Disaggsim은 각 구성 요소의 동작을 소프트웨어적으로 시뮬레이션한다. 예를 들어, 제 1 단계(210)에서 지정된 프로그램을 수행하기 위해 CPU 사이클이 얼마나 요구되는지, 전력은 얼마나 필요한지 등을 계산할 수 있다. 관련된 수치를 계산하기 위한 프로그램 코드는 2. 아키텍처에 기술된 시스템에 맞게 사전에 작성되어, 제 1 단계(210)에서 적절히 초기화되어야 한다. Disaggsim(200)은 해당 코드를 작성하기 위한 프로그래밍 인터페이스 및 각 시스템 구성 요소의 모델 간 연결 수단을 제공하므로, 본 개시의 사용자는 자신이 필요한 시뮬레이션에 대한 코드를 용이하게 작성할 수 있다. 시뮬레이션 결과는 별도의 자료 구조로 저장되어 제 3 단계(230)에서 본 개시의 사용자에게 보고된다.In order to measure the function and performance of the system modeled in the first step 210, Disaggsim simulates the operation of each component in software. For example, in the first step 210, it is possible to calculate how many CPU cycles and power are required to execute the specified program. The program code for calculating the relevant numerical value must be prepared in advance to fit the system described in 2. Architecture, and properly initialized in the first step (210). Since Disaggsim 200 provides a programming interface for writing corresponding codes and means for connecting between models of each system component, a user of the present disclosure can easily write codes for simulations he/she needs. The simulation result is stored in a separate data structure and reported to the user of the present disclosure in a third step (230).
1-3. 제 3 단계(230): 시뮬레이션 결과 출력1-3. Step 3 (230): output simulation result
제 3 단계(230)에서는 시뮬레이션 종료 이후 계산된 결과를 출력한다. 출력되는 결과는 모델링된 시스템의 성능 및 기능과 관련된 수치값 뿐만 아니라, 전체적인 시스템의 구성도 등을 포함할 수 있다. 출력 형식은 일반적으로 텍스트 파일이지만, 이미지 파일 또는 다른 프로그램에서 분석 가능한 바이너리 파일 등일 수도 있다.In the third step 230, the result calculated after the end of the simulation is output. The output result may include not only numerical values related to the performance and functions of the modeled system, but also a configuration diagram of the entire system. The output format is usually a text file, but can also be an image file or a binary file that can be analyzed by other programs.
2. 아키텍처2. Architecture
본 개시에서는 Disaggsim(200)의 설계와 일반적인 개별분리 아키텍처를 기반으로 한 일반화된 시뮬레이션을 목표로 한다. 개별분리 시스템 성능은 구조와 구현 방법에 따라 크게 달라질 수 있기 때문에 시뮬레이터에서 표현 가능한 모듈을 식별하고 정의할 필요가 있다. 현재 표준화된 개별분리 아키텍처가 아직 없기 때문에, Disaggsim(200)은 기존의 제안된 여러 시스템과의 호환성을 고려한다. The present disclosure aims at a generalized simulation based on the design of Disaggsim 200 and a general discrete architecture. Since the performance of an individual system can vary greatly depending on the structure and implementation method, it is necessary to identify and define modules that can be expressed in the simulator. Since there is no standardized separate architecture yet, Disaggsim (200) considers compatibility with several existing proposed systems.
도 3은 본 개시의 대상이 되는 일반화된 개별분리 아키텍처(300)를 개략적으로 도시하는 도면이다. 3 is a diagram schematically illustrating a generalized separate architecture 300 that is the subject of the present disclosure.
도 3을 참조하면, 일반화된 개별분리 아키텍처(300)는 컴퓨트 노드(computing node)(310), 메모리 풀(memory pool)(320), 및 이들을 연결하는 패브릭 인터커넥트(fabric interconnect)(330)로 구성된다. 컴퓨트 노드(310)는 패브릭 인터커넥트(330)를 통해 데이터와 실행 코드가 저장되어 있는 메모리 풀(320)에 접근하여 작업을 수행한다. 이 때, 컴퓨트 노드(310)는 데이터와 코드의 이동을 위해서 관련 정보가 담겨있는 자료구조인 패브릭 패킷(fabric packet)을 생성하여 메모리 풀(320)에 읽기/쓰기 요청을 전달한다. 도 3은 컴퓨팅 노드(310) #0에서 생성된 패브릭 패킷이 패브릭 인터커넥트(330)를 통과하여 메모리 풀(320)에 도달하는 과정을 설명하고 있다. 본 개시의 시뮬레이터(200)는 모듈화 기능을 통해 컴퓨팅 노드(310), 메모리 풀(320), 및 패브릭 인터커넥트(330)을 구성하고 연결하는 인터페이스를 제공한다. 이하에서, 각 구성요소에 대해 상세하게 설명한다.Referring to FIG. 3, the generalized individual isolation architecture 300 includes a computing node 310, a memory pool 320, and a fabric interconnect 330 connecting them. It consists of The compute node 310 accesses the memory pool 320 in which data and execution codes are stored through the fabric interconnect 330 and performs work. At this time, the compute node 310 generates a fabric packet, which is a data structure containing related information, to transfer data and code, and transmits the read/write request to the memory pool 320 . FIG. 3 illustrates a process in which a fabric packet generated in the computing node 310 #0 passes through the fabric interconnect 330 and reaches the memory pool 320 . The simulator 200 of the present disclosure provides an interface to configure and connect the computing node 310 , the memory pool 320 , and the fabric interconnect 330 through a modularization function. Below, each component is explained in detail.
2-1. 작업 그룹(workgroup)2-1. workgroup
작업그룹은 실제 작업에 필요한 모듈을 구성한 것을 의미한다. 각 작업 그룹은 컴퓨트 노드(310)와 하나 이상의 메모리 컨트롤러(Memory Controller)(321)를 포함한 풀로 구성된다. 작업 그룹의 구성 요소는 식별자(컴포넌트 ID(Component ID; CID) 및 서브-컴포넌트 ID(sub Component ID; 서브 CID))를 이용해 관리된다. A work group means a configuration of modules required for actual work. Each work group is composed of a pool including a compute node 310 and one or more memory controllers 321 . The components of the work group are managed using identifiers (Component ID (CID) and sub-component ID (sub CID)).
2-2. 컴포넌트 관리 유닛(Component Management Unit; CMU)(340)2-2. Component Management Unit (CMU) 340
CMU(340)를 소프트웨어적으로 모델링하는 코드는 시뮬레이터(200) 구동 이전에 바이너리 파일로 컴파일되어, 제 1 단계(210)에서 초기화되고 다른 구성요소와 연결된다. 시뮬레이터의 처음 시작 과정(제 2 단계(220))에서 패브릭 인터커넥트(330)에 직접 연결된 CMU(340)는 초기화를 위해 모든 컴포넌트로 초기화(initialization)를 위한 패킷을 전송한다. CMU(340)는 컴퓨트 노드(310)와 메모리 풀(320)을 포함한 모든 노드에 CID를 할당하고 모든 메모리 컨트롤러(321)에 sub-CID를 할당한다. CMU(340)는 컴퓨트 노드(310)에 할당된 CID와 메모리 컨트롤러(321)에 할당된 sub-CID(메모리 범위 정보)를 각각 매칭하기 위한 리소스 할당 테이블(resource allocation table)을 포함하고 있다.The software modeling code of the CMU 340 is compiled into a binary file before driving the simulator 200, initialized in the first step 210, and connected to other components. In the first starting process of the simulator (second step 220), the CMU 340 directly connected to the fabric interconnect 330 transmits an initialization packet to all components for initialization. The CMU 340 allocates CIDs to all nodes including the compute node 310 and the memory pool 320 and allocates sub-CIDs to all memory controllers 321 . The CMU 340 includes a resource allocation table for matching the CID allocated to the compute node 310 and the sub-CID (memory range information) allocated to the memory controller 321, respectively.
2-3. 컴퓨트 노드(310)2-3. Compute Node (310)
컴퓨트 노드(310)를 소프트웨어적으로 모델링하는 코드는 시뮬레이터(200) 구동 이전에 바이너리 파일로 컴파일되어, 제 1 단계(210)에서 초기화되고 다른 구성요소와 연결된다. 그 이후, 제 2 단계(220)에서 사전에 정의된 시뮬레이션을 수행하며 패브릭 인터커넥트(330) 및 메모리 풀(320) 등과 같은 다른 구성요소와 상호작용한다. The software modeling code of the compute node 310 is compiled into a binary file before running the simulator 200, initialized in the first step 210, and connected to other components. Thereafter, in a second step 220 it performs a predefined simulation and interacts with other components such as fabric interconnect 330 and memory pool 320 .
컴퓨트 노드(310)는 실제로 연산을 수행하는 요소이다. 기존 프로세서가 인터커넥트에 직접 연결할 수 있는 기능이 없는 반면, 개별분리 아키텍처는 인터커넥트에 하드웨어 자원을 연결해야 하기 때문에 대부분의 개별분리 시스템이 커스텀 SoC(System-on-Chip)를 사용한다. 본 개시에서도 패브릭 인터커넥트(330)에 연결하기 위한 커스텀 Soc를 모델링한다.The compute node 310 is an element that actually performs calculations. Most discrete systems use a custom System-on-Chip (SoC) because discrete architectures require hardware resources to be connected to the interconnect, while conventional processors do not have the ability to connect directly to the interconnect. This disclosure also models a custom Soc to connect to fabric interconnect 330 .
도 4는 도 3의 컴퓨트 노드(310)를 도시하는 도면이다. FIG. 4 is a diagram illustrating the compute node 310 of FIG. 3 .
도 4를 참조하면, 컴퓨트 노드(310)는 L1 및 L2를 포함하는 코어(core)(411), LLC(Last-Level Cache)(413), 및 인터커넥트 로직(interconnect logic)(415)를 포함할 수 있다. 이 때, 코어(311)는 기존 아키텍처의 CPU 코어와 동일하다. 따라서, 컴퓨트 노드(310)는 기존 아키텍처에 맞게 생성된 바이너리 프로그램을 구동할 수 있다. 본 개시의 시뮬레이터(200) 또한 기존 아키텍처용 바이너리 프로그램과의 호환성을 지원한다.Referring to FIG. 4 , a compute node 310 includes a core 411 including L1 and L2, a last-level cache (LLC) 413, and interconnect logic 415. can do. At this time, the core 311 is the same as the CPU core of the existing architecture. Accordingly, the compute node 310 may drive a binary program created to suit the existing architecture. The simulator 200 of the present disclosure also supports compatibility with binary programs for existing architectures.
2-3-1. 인터커넥트 로직(415)2-3-1. Interconnect Logic(415)
인터커넥트 로직(415)을 소프트웨어적으로 모델링하는 코드는 시뮬레이터(200) 구동 이전에 바이너리 파일로 컴파일되어, 제 1 단계(210)에서 초기화되고 다른 구성요소와 연결된다. 그 이후, 제 2 단계(220)에서 사전에 정의된 시뮬레이션을 수행하며 컴퓨트 노드(310) 등과 같은 다른 구성요소와 상호작용한다. Code modeling the interconnect logic 415 in software is compiled into a binary file before running the simulator 200, initialized in the first step 210, and connected to other components. Thereafter, in a second step 220, it performs a predefined simulation and interacts with other components such as the compute node 310 and the like.
인터커넥트 로직(415)은 실제 연산을 담당하는 컴퓨트 노드(310)와 이를 연결하는 패브릭 인터커넥트(330) 사이에 위치한다. 인터커넥트 로직(415)은 각 노드와 모듈간의 연결을 위해 일반적인 네트워크 요구 사항을 충족하는 연결 기술 중 하나를 사용한다고 가정한다. 예를 들어, InfiniBand와 같은 상호 연결 기술은 패브릭 상호 연결에 대해 다른 패킷 사양을 정의하는 반면 DRAM과 같은 스토리지 구성 요소는 기존 데이터 경로 패킷(예: DDR4)을 사용한다. 따라서, 인터커넥트 로직(415)은 이러한 비호환성을 해결하기 위해 패브릭 인터커넥트(330)와 구성요소 간의 트랜슬레이터(translator) 역할을 해야 한다. 구체적으로, 인터커넥터 로직(415)은 fMMU(fabric memory management unit)(416) 및 패킷 트랜슬레이터(packet translator)(417)를 포함할 수 있다. The interconnect logic 415 is located between the compute node 310 responsible for the actual operation and the fabric interconnect 330 connecting it. It is assumed that the interconnect logic 415 uses one of the connection technologies that meet common network requirements for connections between each node and module. For example, interconnect technologies such as InfiniBand define different packet specifications for fabric interconnects, while storage components such as DRAM use traditional datapath packets (eg DDR4). Accordingly, the interconnect logic 415 must act as a translator between the fabric interconnect 330 and the components to resolve these incompatibilities. Specifically, the interconnector logic 415 may include a fabric memory management unit (fMMU) 416 and a packet translator 417 .
2-3-1-1.2-3-1-1. fMMU(416)fMMU(416)
개별분리 시스템의 추가 메모리 계층인 패브릭 주소 공간에는 기존 프로세서 아키텍처의 메모리 관리 장치(memory management unit; MMU)와 유사한 관리 장치가 필요하다. 이전 연구에서는 단일 중앙 MMU를 가지고 있지만, 모든 메모리 접근 트래픽이 한 곳으로 몰리기 때문에 심각한 병목 현상을 초래할 수 있다. 본 개시가 시뮬레이션 대상으로 하는 개별분리 시스템 모델에서는 각 컴퓨트 노드(310)마다 fMMU(416)를 구성해 해당 문제를 해결한다. fMMU(416)는 단일 통합 패브릭 메모리 주소 공간을 하나 이상의 메모리 컨트롤러에 매핑할 수 있는 인터커넥트 로직의 구성요소이다. fMMU(416)는 여러 방법을 통해 주소 공간을 메모리 컨트롤러(321)로 매핑할 수 있다. 하나의 예시로, fMMU(416)는 CPU 패킷의 물리적 주소를 기반으로 주소 변환 테이블에서 베이스(base) 주소를 가져온다. 이 베이스 주소에 최종적으로 오프셋(offset)을 더해 메모리 모듈(323)에서 실제로 사용하는 패브릭 메모리 주소를 얻는다.The fabric address space, an additional layer of memory in discrete systems, requires a management unit similar to the memory management unit (MMU) of conventional processor architectures. Previous studies have a single central MMU, but all memory access traffic is concentrated in one place, which can cause a serious bottleneck. In the individual separation system model, which is a simulation target of the present disclosure, the fMMU 416 is configured for each compute node 310 to solve the problem. The fMMU 416 is a component of interconnect logic that can map a single unified fabric memory address space to one or more memory controllers. The fMMU 416 may map the address space to the memory controller 321 through several methods. As an example, the fMMU 416 retrieves a base address from an address translation table based on a physical address of a CPU packet. Finally, an offset is added to this base address to obtain a fabric memory address actually used by the memory module 323 .
fMMU(416)를 소프트웨어적으로 모델링하는 코드는 시뮬레이터(200) 구동 이전에 바이너리 파일로 컴파일되어, 제 1 단계(210)에서 초기화되고 다른 구성요소와 연결된다. 그 이후, 컴퓨트 노드(310)의 하위 구성요소로서 제 2 단계(220)에서 사전에 정의된 시뮬레이션을 수행하며 메모리 풀(320) 등과 같은 다른 구성요소와 상호작용한다. The software modeling code of the fMMU 416 is compiled into a binary file before running the simulator 200, initialized in the first step 210, and connected to other components. Thereafter, as a sub-component of the compute node 310, it performs a predefined simulation in the second step 220 and interacts with other components such as the memory pool 320 and the like.
2-3-1-2. 패킷 트랜슬레이터(417)2-3-1-2. Packet Translator (417)
프로세서에 의해 생성된 CPU 패킷은 물리적 주소를 가지고 있으나 인터커넥트를 통한 라우팅과 상응하는 메모리 컨트롤러를 결정하기 위한 정보가 없다. 따라서, 컴퓨트 노드(310)의 인터커넥트 로직(415)은 CPU에서 만든 패킷을 패브릭 패킷으로 변환한다. 패킷의 자세한 구조는 2-6. 패브릭 패킷에서 후술된다. 패킷 변환을 소프트웨어적으로 모델링하는 코드는 시뮬레이터(200) 구동 이전에 바이너리 파일로 컴파일되어, 제1 단계(210)에서 초기화되고 다른 구성요소와 연결된다. 그 이후, 컴퓨트 노드(310)의 하위 구성요소로서 제 2 단계(220)에서 사전에 정의된 시뮬레이션을 수행하며 메모리 풀(320) 등과 같은 다른 구성요소와 상호작용한다. CPU packets generated by the processor have a physical address, but do not have the information to route through the interconnect and determine the corresponding memory controller. Accordingly, the interconnect logic 415 of the compute node 310 converts the CPU-generated packets into fabric packets. The detailed structure of the packet is described in 2-6. It is described later in Fabric Packet. The software modeling code for packet conversion is compiled into a binary file before running the simulator 200, initialized in the first step 210, and connected to other components. Thereafter, as a sub-component of the compute node 310, it performs a predefined simulation in the second step 220 and interacts with other components such as the memory pool 320 and the like.
2-4.2-4. 메모리 풀(320)Memory Pool (320)
개별분리 아키텍처의 메모리 자원은 컴퓨트 노드(310)를 위한 대규모 데이터 계산과 유연한 관리를 용이하게 하기 위해 통합하여 구성된다. 중앙 집중식 메모리 자원 관리는 메모리 중심 개별분리 아키텍처의 핵심 기능이다. 즉, 모든 메모리는 하나의 통합된 주소 공간을 사용한다. 메모리 풀(320)은 DRAM 및 NVMe와 같은 메모리 모듈(323)과 메모리 풀 매니저(memory pool manager; MPM)(350)와 같은 패브릭과 호환되는 메모리 모듈(323)로 구성된다. MPM(350)을 사용하면 도 1에서 나타내는 메모리 풀을 구성하고 관리할 수 있다. 각 메모리 모듈(323)은 MPM(350)에 연결된 메모리 컨트롤러(321)를 통해 접근할 수 있다. 또한 컴퓨트 노드(310)는 로컬 메모리를 사용하지 않고 완전한 개별분리 메모리를 사용할 수도 있다.Memory resources of the separate architecture are integrated and configured to facilitate large-scale data calculation and flexible management for the compute node 310 . Centralized memory resource management is a key feature of memory-centric discrete architectures. That is, all memory uses one unified address space. The memory pool 320 includes a memory module 323 such as DRAM and NVMe and a memory module 323 compatible with a fabric such as a memory pool manager (MPM) 350. Using the MPM 350, the memory pool shown in FIG. 1 can be configured and managed. Each memory module 323 can be accessed through a memory controller 321 connected to the MPM 350 . Also, the compute node 310 may use completely separate memory without using local memory.
메모리 풀(320)을 소프트웨어적으로 모델링하는 코드는 시뮬레이터(200) 구동 이전에 바이너리 파일로 컴파일되어, 제 1 단계(210)에서 초기화되고 다른 구성요소와 연결된다. 그 이후, 제 2 단계(220)에서 사전에 정의된 시뮬레이션을 수행하며 패브릭 인터커넥트(330) 및 컴퓨트 노드(310) 등과 같은 다른 구성요소와 상호작용한다.The software modeling code for the memory pool 320 is compiled into a binary file before running the simulator 200, initialized in the first step 210, and connected with other components. Thereafter, in a second step 220 it performs a predefined simulation and interacts with other components such as fabric interconnect 330 and compute node 310 .
2-4-1. 메모리 풀 매니저(MPM)(350)2-4-1. Memory Pool Manager (MPM) (350)
기존 아키텍처와 다르게 개별분리 아키텍처에서는 메모리 공간이 원격에 위치하고 패브릭 인터커넥트(330)에 부착된다. 게다가, 계산 기능이 있는 컴퓨트 노드(310)와 달리 메모리 컨트롤러(321)와 메모리 모듈(323)은 처리 능력이 제한적이며 메모리 I/O 작업만 수행하도록 설계되어 있다. 그러므로, 본 개시가 시뮬레이션하는 모델에서는 컴퓨팅 성능과 장거리 메모리 액세스의 새로운 구성요소인 MPM(350)을 포함한다. MPM 인터페이스는 패브릭 인터커넥트(330)와 메모리 컨트롤러(321) 간의 구성요소 간 통신을 담당한다. MPM(350)은 인터커텍트 로직(Interconnect Logic)(351), 패킷 멀티플렉서(Packet Multiplexer)(353), 및 메모리 컨트롤러(321)로 구성된다. MPM(350)은 CID에 의해 식별되고 각 메모리 컨트롤러(321)는 서브 CID에 의해 식별된다. MPM(350)의 인터커넥트 로직(351)은 패브릭 인터커넥트(330)에서 패브릭 패킷을 수신하여 패킷 멀티플렉서(353)로 패킷을 전송한다. Unlike the existing architecture, in the discrete architecture, the memory space is remotely located and attached to the fabric interconnect 330 . In addition, unlike the compute node 310 having a calculation function, the memory controller 321 and the memory module 323 have limited processing power and are designed to perform only memory I/O operations. Therefore, the model that this disclosure simulates includes MPM 350, a new component of computing power and long-range memory access. The MPM interface is responsible for inter-component communication between the fabric interconnect 330 and the memory controller 321 . The MPM 350 includes an interconnect logic 351, a packet multiplexer 353, and a memory controller 321. MPM 350 is identified by CID and each memory controller 321 is identified by sub CID. Interconnect logic 351 of MPM 350 receives fabric packets from fabric interconnect 330 and forwards the packets to packet multiplexer 353.
MPM(350)을 소프트웨어적으로 모델링하는 코드는 시뮬레이터(200) 구동 이전에 바이너리 파일로 컴파일되어, 제 1 단계(210)에서 초기화되고 다른 구성요소와 연결된다. 그 이후, 제 2 단계(220)에서 사전에 정의된 시뮬레이션을 수행하며 패브릭 인터커넥트(330) 및 컴퓨트 노드(310) 등과 같은 다른 구성요소와 상호작용한다.The software modeling code of the MPM 350 is compiled into a binary file before driving the simulator 200, initialized in the first step 210, and connected to other components. Thereafter, in a second step 220 it performs a predefined simulation and interacts with other components such as fabric interconnect 330 and compute node 310 .
2-4-1-1. 패킷 멀티플렉서(353)2-4-1-1. Packet Multiplexer(353)
여러 컴퓨트 노드(310)에서 CID 및 서브 CID(sub-CID) 필드가 포함된 수정된 메모리 패킷인 읽기/쓰기 패브릭 패킷을 패브릭과 연결된 메모리 풀(320)에 동시에 전송할 수 있다. 컴퓨트 노드(310)의 인터커넥트 로직(415)은 CID와 서브 CID 정보를 패킷에 포함시킨다. 캡슐화된 이 패킷은 패브릭 인터커넥트(330)를 통해 MPM(350)으로 전송된다. 패브릭 패킷이 목적지 CID(dstCID) 정보를 사용하여 컴퓨팅 노드에서 MPM(350)으로 라우팅될 때, 패킷 멀티플렉서(353)는 캡슐화된 패브릭 패킷을 다시 해석하여 패킷의 헤더에 포함된 서브 CID를 참조하여 해당 메모리 컨트롤러(321)로 패킷을 보낸다. 마지막으로 메모리 컨트롤러(321)는 CID 및 서브 CID 정보가 포함되지 않은 분리된 원본 CPU 패킷을 수신한다.Several compute nodes 310 may simultaneously transmit read/write fabric packets, which are modified memory packets including CID and sub-CID fields, to the memory pool 320 connected to the fabric. The interconnect logic 415 of the compute node 310 includes the CID and sub-CID information into the packet. This encapsulated packet is transmitted over fabric interconnect 330 to MPM 350 . When a fabric packet is routed from the compute node to the MPM 350 using the destination CID (dstCID) information, the packet multiplexer 353 interprets the encapsulated fabric packet again and references the sub-CID included in the header of the packet to correspond to the corresponding sub-CID. The packet is sent to the memory controller 321. Finally, the memory controller 321 receives the separated original CPU packet without the CID and sub-CID information.
패킷 멀티플렉서(353)를 소프트웨어적으로 모델링하는 코드는 시뮬레이터(200) 구동 이전에 바이너리 파일로 컴파일되어, 제 1 단계(210)에서 초기화되고 다른 구성요소와 연결된다. 그 이후, 메모리 풀 매니저(350)의 하위 구성요소로서 제 2 단계(220)에서 사전에 정의된 시뮬레이션을 수행하며 메모리 컨트롤러(321) 등과 같은 다른 구성요소와 상호작용한다.The software modeling code of the packet multiplexer 353 is compiled into a binary file before running the simulator 200, initialized in the first step 210, and connected to other components. Thereafter, as a sub-component of the memory pool manager 350, it performs a predefined simulation in the second step 220 and interacts with other components such as the memory controller 321.
2-4-2. 메모리 컨트롤러(321)2-4-2. memory controller(321)
메모리 컨트롤러(321)는 MPM(350)으로부터 받은 패킷에 포함된 물리적 주소에 따라 DRAM 행 및 열과 같은 모듈별 스토리지 구조에 직접적으로 접근한다. 메모리 컨트롤러(321)에는 대기열의 용량에 따라 요청을 동시에 처리할 수 있도록 읽기 및 쓰기 대기열이 있다. 대기열이 가득 차지 않는 한 메모리 컨트롤러(321)가 다른 요청을 처리 중이어도 컴퓨팅 노드(310)에서 패킷을 다시 보낼 필요가 없다. 메모리 컨트롤러(321)는 자체적인 물리적 주소 공간을 가지고 있지만, 컴퓨트 노드(310)에는 연속적인 메모리 공간으로 보이기 때문에 다른 메모리 컨트롤러(321)가 제공하는 주소 공간과 병합되어 나타난다. 도 5는 도 1의 메모리 컨트롤러(321)의 메모리 공간을 설명하기 위한 도면이다. The memory controller 321 directly accesses storage structures for each module, such as DRAM rows and columns, according to physical addresses included in packets received from the MPM 350 . The memory controller 321 has read and write queues to process requests simultaneously according to the capacity of the queue. As long as the queue is not full, even if the memory controller 321 is processing another request, the computing node 310 does not need to send the packet again. The memory controller 321 has its own physical address space, but since it appears as a contiguous memory space to the compute node 310, it appears merged with the address space provided by other memory controllers 321. FIG. 5 is a diagram for explaining a memory space of the memory controller 321 of FIG. 1 .
예를 들어, 메모리 컨트롤러(321) 2개가 각각 8GB의 D램 모듈을 가지고 있다고 가정하자. 도 5의 (a)에 도시된 바와 같이, 각 메모리 컨트롤러(321)에는 0에서 8GB 사이의 자체 메모리 공간이 있다. 그러나, 도 5의 (b)에 도시된 바와 같이, 컴퓨트 노드(310)에서는 이 2개의 8GB공간을 하나의 16GB공간으로 간주한다. 즉, 개별분리 시스템의 각 구성요소들은 하나의 작업 그룹에 할당되는 메모리 공간을 연속적으로 접근 가능하도록 지원한다. 컴퓨트 노드(310)가 메모리 액세스 요청을 보낼 때 MPM(353)은 요청 패킷에 포함된 서브 CID를 사용하여 두 메모리 컨트롤러(321) 간에 메모리 요청을 라우팅한다. 인터커넥트 로직(415)의 Fmmu(416)가 각 요청 주소를 대상 메모리 컨트롤러(321)의 주소로 변환하기 때문에 메모리 컨트롤러(321)는 별도의 변환 없이 요청을 처리할 수 있다.For example, it is assumed that two memory controllers 321 have DRAM modules of 8 GB each. As shown in (a) of FIG. 5 , each memory controller 321 has its own memory space between 0 and 8 GB. However, as shown in (b) of FIG. 5 , the compute node 310 regards these two 8 GB spaces as one 16 GB space. That is, each component of the individual separation system supports to continuously access the memory space allocated to one work group. When the compute node 310 sends a memory access request, the MPM 353 routes the memory request between the two memory controllers 321 using the sub CID included in the request packet. Since the Fmmu 416 of the interconnect logic 415 converts each request address into an address of the target memory controller 321, the memory controller 321 can process the request without separate conversion.
메모리 컨트롤러(321)를 소프트웨어적으로 모델링하는 코드는 시뮬레이터(200) 구동 이전에 바이너리 파일로 컴파일되어, 제 1 단계(210)에서 초기화되고 다른 구성요소와 연결된다. 그 이후, 메모리 풀(320)의 하위 구성요소로서 제 2 단계(220)에서 사전에 정의된 시뮬레이션을 수행하며 메모리 풀 매니저(350) 등과 같은 다른 구성요소와 상호작용한다.The software modeling code for the memory controller 321 is compiled into a binary file before driving the simulator 200, initialized in the first step 210, and connected to other components. Thereafter, as a sub-component of the memory pool 320, it performs a predefined simulation in the second step 220 and interacts with other components such as the memory pool manager 350 and the like.
2-5. 패브릭 인터커넥트(330)2-5. Fabric Interconnect(330)
패브릭 인터커넥트(350)는 컴퓨트 노드(310)와 메모리 풀(320) 간의 통신을 위한 연결을 담당한다. 패브릭 인터커넥트(350)는 현재 존재하는 고속 인터커넥트 기술을 기반으로 한다고 가정하고 패킷 라우팅과 같은 패브릭 인터커넥트의 하드웨어 구성 요소도 포함한다. 본 개시의 시뮬레이터(200)는 패브릭 인터커넥트(330)의 세부 구성을 지원하고 레이턴시와 처리량에 영향을 미치는 매개 변수의 수정이 가능하다. 뿐만 아니라, 시스템의 유연한 모델링을 위해 각 구성 요소들이 연결되어 있는 토폴로지(topology) 또한 사용자가 정의할 수 있는 인터페이스를 지원한다.The fabric interconnect 350 is responsible for a connection for communication between the compute node 310 and the memory pool 320 . Fabric interconnect 350 is assumed to be based on existing high-speed interconnect technology and also includes hardware components of the fabric interconnect such as packet routing. The simulator 200 of the present disclosure supports the detailed configuration of the fabric interconnect 330 and can modify parameters affecting latency and throughput. In addition, for flexible modeling of the system, the topology in which each component is connected also supports an interface that can be defined by the user.
패브릭 인터커넥트(330)를 소프트웨어적으로 모델링하는 코드는 시뮬레이터(200) 구동 이전에 바이너리 파일로 컴파일되어, 제 1 단계(210)에서 초기화되고 다른 구성요소와 연결된다. 그 이후, 제 2 단계(220)에서 사전에 정의된 시뮬레이션을 수행하며 컴퓨트 노드(310) 및 메모리 풀 매니저(350) 등과 같은 다른 구성요소와 상호작용한다.Code modeling the fabric interconnect 330 in software is compiled into a binary file before running the simulator 200, initialized in the first step 210, and connected to other components. After that, in the second step 220, it performs a predefined simulation and interacts with other components such as the compute node 310 and the memory pool manager 350.
2-6. 패브릭 패킷2-6. fabric packet
패브릭 패킷은 컴퓨트 노드(310)와 메모리 풀(320) 간의 통신을 위한 통신수단이다. 패킷은 바이너리 형식으로 구성된다. 예를 들어, 패브릭 패킷은 하기 [표 2]와 같은 구조를 가질 수 있다.The fabric packet is a communication means for communication between the compute node 310 and the memory pool 320 . Packets are organized in binary format. For example, a fabric packet may have a structure as shown in Table 2 below.
Figure PCTKR2022019733-appb-img-000002
Figure PCTKR2022019733-appb-img-000002
이 예시에서 패브릭 패킷은 출발지와 목적지를 의미하는 CID(srcCID/dstCID)와 메모리 컨트롤러에 대응하는 서브 CID(sub-dstCID)를 포함한다. 본 개시의 사용자는 시뮬레이션하고자 하는 시스템 모델에 따라 다른 필드를 포함할 수 있다. 예를 들어, 구현된 프로토콜과 패브릭 인터커넥트(330)에 따라 측정하고자 하는 항목이나 시스템의 제어와 관련된 필드를 추가로 정의 가능하다.패브릭 패킷을 소프트웨어적으로 모델링하는 코드는 시뮬레이터(200) 구동 이전에 바이너리 파일로 컴파일되어, 제 1 단계(210)에서 초기화되고 다른 구성요소와 연결된다. 그 이후, 제 2 단계(220)에서 사전에 정의된 시뮬레이션을 수행하며 다른 구성요소와 상호작용한다. 패브릭 패킷은 시뮬레이터 전체에 적용되는 개념이므로, 시뮬레이터(200)의 모든 구성요소들을 모델링하는 코드들은 패브릭 패킷과의 호환성이 보장되도록 작성된다.In this example, the fabric packet includes a CID (srcCID/dstCID) representing the source and destination and a sub-CID (sub-dstCID) corresponding to the memory controller. Users of this disclosure may include other fields depending on the system model they wish to simulate. For example, an item to be measured or a field related to system control may be additionally defined according to the implemented protocol and the fabric interconnect 330. A code modeling a fabric packet in software is performed before driving the simulator 200. It is compiled into a binary file, initialized in the first step 210 and linked with other components. After that, in a second step 220, it performs a predefined simulation and interacts with other components. Since the fabric packet is a concept applied to the entire simulator, codes modeling all components of the simulator 200 are written to ensure compatibility with the fabric packet.
요컨대, 본 개시는 소프트웨어 기반의 개별분리 아키텍처 시스템(300) 시뮬레이터(200) 및 그의 방법을 제공한다. In short, the present disclosure provides a software-based discrete architecture system 300 simulator 200 and a method thereof.
본 개시에 따른 시뮬레이터(200)의 방법은, 개별분리 아키텍처 시스템(300)에 대한 설정 파일에 기반하여, 개별분리 아키텍처 시스템(300)의 구성 요소들을 모델링하는 단계(210), 개별분리 아키텍처 시스템(300)의 기능과 성능을 측정하기 위해, 구성 요소들의 각각에 대해 시뮬레이션을 수행하는 단계(220), 및 시뮬레이션의 결과를 출력하는 단계(230)를 포함한다. The method of the simulator 200 according to the present disclosure includes modeling components of the individually separated architecture system 300 based on a setting file for the individually separated architecture system 300 (210), an individual separation architecture system ( In order to measure the function and performance of 300), a simulation is performed on each of the components (220), and a result of the simulation is output (230).
본 개시에 따른 시뮬레이터(200)는, 개별분리 아키텍처 시스템(300)에 대한 설정 파일에 기반하여, 개별분리 아키텍처 시스템(300)의 구성 요소들을 모델링하도록 구성되는 준비부, 개별분리 아키텍처 시스템(300)의 기능과 성능을 측정하기 위해, 구성 요소들의 각각에 대해 시뮬레이션을 수행하도록 구성되는 실행부, 및 시뮬레이션의 결과를 출력하도록 구성되는 출력부를 포함한다.The simulator 200 according to the present disclosure includes a preparation unit configured to model components of the individually separated architecture system 300 based on a setting file for the individual separation architecture system 300, and the individual separation architecture system 300 In order to measure the function and performance of, an execution unit configured to perform a simulation for each of the components, and an output unit configured to output a result of the simulation.
본 개시에 따르면, 구성 요소들을 각각 모델링하기 위한 코드들은, 미리 컴파일되어 있고, 준비부에 의해 초기화되어 서로 연결되며, 실행부에 의해 시뮬레이션이 수행되는 동안 서로 상호작용한다.According to the present disclosure, codes for modeling each component are precompiled, initialized by the preparation unit and connected to each other, and interact with each other while simulation is performed by the execution unit.
본 개시에 따르면, 구성 요소들은, 실제 연산을 수행하도록 구성되는 적어도 하나의 컴퓨트 노드(310), 연산을 수행하기 위해 필요한 메모리 모듈(323)들 및 메모리 모듈(323)들을 관리하도록 구성되는 메모리 컨트롤러(321)들을 포함하는 메모리 풀(320), 및 컴퓨트 노드(310)와 메모리 풀(320) 사이의 패킷 통신을 지원하는 패브릭 인터커넥트(330)를 포함한다.According to the present disclosure, components include at least one compute node 310 configured to perform actual calculations, memory modules 323 required to perform calculations, and memory configured to manage the memory modules 323 . A memory pool 320 including controllers 321 and a fabric interconnect 330 supporting packet communication between the compute node 310 and the memory pool 320 .
본 개시에 따르면, 컴퓨트 노드(310)는, 코어(411), 및 코어(411)와 패브릭 인터커넥트(330) 사이에 위치되며, 단일 주소 공간을 메모리 컨트롤러(321)들 중 적어도 하나에 매핑하도록 구성되는 패브릭 메모리 관리 유닛(416) 및 코어(411)에서 생성된 패킷을 패브릿 패킷으로 변환하도록 구성되는 패킷 트랜슬레이터(417)를 포함하는 인터커넥트 로직(415)을 개별적으로 포함한다. According to the present disclosure, the compute node 310 is located between the core 411 and the core 411 and the fabric interconnect 330 to map a single address space to at least one of the memory controllers 321 . and an interconnect logic 415 comprising a configured fabric memory management unit 416 and a packet translator 417 configured to convert packets generated in the core 411 into fablet packets, respectively.
본 개시에 따르면, 구성 요소들은, 컴퓨트 노드(310)에 CID를 할당하고, 메모리 컨트롤러(321)들의 각각에 서브 CID를 할당하도록 구성되는 컴포넌트 관리 유닛(340)을 더 포함한다.According to the present disclosure, the components further include a component management unit 340 configured to assign a CID to the compute node 310 and assign a sub CID to each of the memory controllers 321 .
본 개시에 따르면, 컴퓨트 노드(310)는, 할당된 CID와 메모리 컨트롤러(321)들 중 적어도 하나에 할당된 서브 CID를 패브릭 패킷에 포함시키고, 패브릭 패킷을 패브릭 인터커넥트(330)로 전송하도록 구성된다. According to the present disclosure, the compute node 310 is configured to include the assigned CID and the sub-CID assigned to at least one of the memory controllers 321 in a fabric packet and transmit the fabric packet to the fabric interconnect 330. do.
본 개시에 따르면, 구성 요소들은, 패브릭 인터커넥트(330)로부터 패브릭 패킷을 수신하도록 구성되는 인터커넥트 로직(351) 및 수신되는 패브릭 패킷의 서브 CID가 할당된 적어도 하나의 메모리 컨트롤러(321)로 수신되는 패브릭 패킷을 보내도록 구성되는 패킷 멀티플렉서(353)를 포함하는 메모리 풀 매니저(350)를 더 포함한다. According to the present disclosure, the components include an interconnect logic 351 configured to receive a fabric packet from the fabric interconnect 330 and a fabric received fabric packet to at least one memory controller 321 to which a sub CID of the received fabric packet is assigned. and a memory pool manager 350 comprising a packet multiplexer 353 configured to send packets.
본 개시에 따르면, 메모리 컨트롤러(321)들의 각각은, 수신되는 패브릭 패킷을 메모리 모듈(323)들 중 적어도 하나에 저장하도록 구성된다. According to the present disclosure, each of the memory controllers 321 is configured to store a received fabric packet in at least one of the memory modules 323 .
이상에서 설명된 장치는 하드웨어 구성 요소, 소프트웨어 구성 요소, 및/또는 하드웨어 구성 요소 및 소프트웨어 구성 요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성 요소는, 프로세서, 컨트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 어플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 컨트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.The devices described above may be implemented as hardware components, software components, and/or a combination of hardware components and software components. For example, devices and components described in the embodiments include a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, a microcomputer, a field programmable gate array (FPGA), and a programmable PLU (programmable logic unit). logic unit), microprocessor, or any other device capable of executing and responding to instructions. The processing device may run an operating system (OS) and one or more software applications running on the operating system. A processing device may also access, store, manipulate, process, and generate data in response to execution of software. For convenience of understanding, there are cases in which one processing device is used, but those skilled in the art will understand that the processing device includes a plurality of processing elements and/or a plurality of types of processing elements. It can be seen that it can include. For example, a processing device may include a plurality of processors or a processor and a controller. Other processing configurations are also possible, such as parallel processors.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성 요소(component), 물리적 장치, 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.Software may include a computer program, code, instructions, or a combination of one or more of the foregoing, which configures a processing device to operate as desired or processes independently or collectively. You can command the device. The software and/or data may be embodied in any tangible machine, component, physical device, computer storage medium, or device to be interpreted by, or to provide instructions or data to, a processing device. there is. Software may be distributed on networked computer systems and stored or executed in a distributed manner. Software and data may be stored on one or more computer readable media.
다양한 실시예들에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터-판독 가능 매체에 기록될 수 있다. 이 때, 매체는 컴퓨터로 실행 가능한 프로그램을 계속 저장하거나, 실행 또는 다운로드를 위해 임시 저장하는 것일 수도 있다. 그리고, 매체는 단일 또는 수 개의 하드웨어가 결합된 형태의 다양한 기록수단 또는 저장수단일 수 있는데, 어떤 컴퓨터 시스템에 직접 접속되는 매체에 한정되지 않고, 네트워크 상에 분산 존재하는 것일 수도 있다. 매체의 예시로는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등을 포함하여 프로그램 명령어가 저장되도록 구성된 것이 있을 수 있다. 또한, 다른 매체의 예시로, 어플리케이션을 유통하는 앱 스토어나 기타 다양한 소프트웨어를 공급 내지 유통하는 사이트, 서버 등에서 관리하는 기록매체 내지 저장매체도 들 수 있다.Methods according to various embodiments may be implemented in the form of program instructions that can be executed through various computer means and recorded on a computer-readable medium. In this case, the medium may continuously store programs executable by a computer or temporarily store them for execution or download. Also, the medium may be a single or various types of recording means or storage means in the form of a combination of several pieces of hardware. It is not limited to a medium directly connected to a certain computer system, and may be distributed on a network. Examples of the medium include magnetic media such as hard disks, floppy disks and magnetic tapes, optical recording media such as CD-ROM and DVD, magneto-optical media such as floptical disks, and ROM, RAM, flash memory, etc. configured to store program instructions. In addition, examples of other media include recording media or storage media managed by an app store that distributes applications, a site that supplies or distributes various other software, and a server.
본 문서의 다양한 실시예들 및 이에 사용된 용어들은 본 문서에 기재된 기술을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 해당 실시 예의 다양한 변경, 균등물, 및/또는 대체물을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성 요소에 대해서는 유사한 참조 부호가 사용될 수 있다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함할 수 있다. 본 문서에서, "A 또는 B", "A 및/또는 B 중 적어도 하나", "A, B 또는 C" 또는 "A, B 및/또는 C 중 적어도 하나" 등의 표현은 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. "제 1", "제 2", "첫째" 또는 "둘째" 등의 표현들은 해당 구성 요소들을, 순서 또는 중요도에 상관없이 수식할 수 있고, 한 구성 요소를 다른 구성 요소와 구분하기 위해 사용될 뿐 해당 구성 요소들을 한정하지 않는다. 어떤(예: 제 1) 구성 요소가 다른(예: 제 2) 구성 요소에 "(기능적으로 또는 통신적으로) 연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 상기 어떤 구성 요소가 상기 다른 구성 요소에 직접적으로 연결되거나, 다른 구성 요소(예: 제 3 구성 요소)를 통하여 연결될 수 있다.Various embodiments of this document and terms used therein are not intended to limit the technology described in this document to a specific embodiment, and should be understood to include various modifications, equivalents, and/or substitutes of the embodiment. In connection with the description of the drawings, like reference numerals may be used for like elements. Singular expressions may include plural expressions unless the context clearly dictates otherwise. In this document, expressions such as "A or B", "at least one of A and/or B", "A, B or C" or "at least one of A, B and/or C" refer to all of the items listed together. Possible combinations may be included. Expressions such as "first," "second," "first," or "second" may modify the elements in any order or importance, and are used only to distinguish one element from another. The components are not limited. When a (e.g., first) element is referred to as being "(functionally or communicatively) connected" or "connected" to another (e.g., second) element, it is referred to as being "connected" to the other (e.g., second) element. It may be directly connected to the component or connected through another component (eg, a third component).
본 문서에서 사용된 용어 "모듈"은 하드웨어, 소프트웨어 또는 펌웨어로 구성된 유닛을 포함하며, 예를 들면, 로직, 논리 블록, 부품, 또는 회로 등의 용어와 상호 호환적으로 사용될 수 있다. 모듈은, 일체로 구성된 부품 또는 하나 또는 그 이상의 기능을 수행하는 최소 단위 또는 그 일부가 될 수 있다. 예를 들면, 모듈은 ASIC(application-specific integrated circuit)으로 구성될 수 있다. The term "module" used in this document includes a unit composed of hardware, software, or firmware, and may be used interchangeably with terms such as logic, logic block, component, or circuit, for example. A module may be an integral part or a minimum unit or part thereof that performs one or more functions. For example, the module may be composed of an application-specific integrated circuit (ASIC).
다양한 실시예들에 따르면, 기술한 구성 요소들의 각각의 구성 요소(예: 모듈 또는 프로그램)는 단수 또는 복수의 개체를 포함할 수 있다. 다양한 실시예들에 따르면, 전술한 해당 구성 요소들 중 하나 이상의 구성 요소들 또는 단계들이 생략되거나, 또는 하나 이상의 다른 구성 요소들 또는 단계들이 추가될 수 있다. 대체적으로 또는 추가적으로, 복수의 구성 요소들(예: 모듈 또는 프로그램)은 하나의 구성 요소로 통합될 수 있다. 이런 경우, 통합된 구성 요소는 복수의 구성 요소들 각각의 구성 요소의 하나 이상의 기능들을 통합 이전에 복수의 구성 요소들 중 해당 구성 요소에 의해 수행되는 것과 동일 또는 유사하게 수행할 수 있다. 다양한 실시예들에 따르면, 모듈, 프로그램 또는 다른 구성 요소에 의해 수행되는 단계들은 순차적으로, 병렬적으로, 반복적으로, 또는 휴리스틱하게 실행되거나, 단계들 중 하나 이상이 다른 순서로 실행되거나, 생략되거나, 또는 하나 이상의 다른 단계들이 추가될 수 있다. According to various embodiments, each component (eg, module or program) of the described components may include a singular object or a plurality of entities. According to various embodiments, one or more components or steps among the aforementioned components may be omitted, or one or more other components or steps may be added. Alternatively or additionally, a plurality of components (eg modules or programs) may be integrated into a single component. In this case, the integrated component may perform one or more functions of each of the plurality of components identically or similarly to those performed by the corresponding component among the plurality of components prior to integration. According to various embodiments, steps performed by a module, program, or other component are executed sequentially, in parallel, iteratively, or heuristically, or one or more of the steps are executed in a different order, omitted, or , or one or more other steps may be added.

Claims (10)

  1. 소프트웨어 기반의 개별분리 아키텍처 시스템 시뮬레이터에 있어서, In the software-based individual separation architecture system simulator,
    개별분리 아키텍처 시스템에 대한 설정 파일에 기반하여, 상기 개별분리 아키텍처 시스템의 구성 요소들을 모델링하도록 구성되는 준비부; a preparation unit configured to model components of the individual separation architecture system based on a setting file for the individual separation architecture system;
    상기 개별분리 아키텍처 시스템의 기능과 성능을 측정하기 위해, 상기 구성 요소들의 각각에 대해 시뮬레이션을 수행하도록 구성되는 실행부; 및an execution unit configured to perform a simulation for each of the components in order to measure functions and performance of the individual isolation architecture system; and
    상기 시뮬레이션의 결과를 출력하도록 구성되는 출력부An output unit configured to output a result of the simulation
    를 포함하는,including,
    시뮬레이터. simulator.
  2. 제 1 항에 있어서, According to claim 1,
    상기 구성 요소들을 각각 모델링하기 위한 코드들은, The codes for modeling each of the components are,
    미리 컴파일되어 있고, 상기 준비부에 의해 초기화되어 서로 연결되며, 상기 실행부에 의해 상기 시뮬레이션이 수행되는 동안 서로 상호작용하는,Compiled in advance, initialized by the preparation unit and connected to each other, and interacting with each other while the simulation is performed by the execution unit,
    시뮬레이터. simulator.
  3. 제 1 항에 있어서, According to claim 1,
    상기 구성 요소들은, These components are
    실제 연산을 수행하도록 구성되는 적어도 하나의 컴퓨트 노드; at least one compute node configured to perform actual computation;
    상기 연산을 수행하기 위해 필요한 메모리 모듈들 및 상기 메모리 모듈들을 관리하도록 구성되는 메모리 컨트롤러들을 포함하는 메모리 풀; 및a memory pool including memory modules required to perform the operation and memory controllers configured to manage the memory modules; and
    상기 컴퓨트 노드와 상기 메모리 풀 사이의 패킷 통신을 지원하는 패브릭 인터커넥트A fabric interconnect supporting packet communication between the compute node and the memory pool.
    를 포함하는,including,
    시뮬레이터. simulator.
  4. 제 3 항에 있어서, According to claim 3,
    상기 컴퓨트 노드는,The compute node,
    코어; 및core; and
    상기 코어와 상기 패브릭 인터커넥트 사이에 위치되며, 단일 주소 공간을 상기 메모리 컨트롤러들 중 적어도 하나에 매핑하도록 구성되는 패브릭 메모리 관리 유닛(fMMU) 및 상기 코어에서 생성된 패킷을 패브릿 패킷으로 변환하도록 구성되는 패킷 트랜슬레이터를 포함하는 인터커넥트 로직a fabric memory management unit (fMMU) positioned between the core and the fabric interconnect and configured to map a single address space to at least one of the memory controllers and to convert packets generated by the core to fabrit packets; Interconnect logic including packet translator
    을 개별적으로 포함하는,Including individually,
    시뮬레이터.simulator.
  5. 제 4 항에 있어서, According to claim 4,
    상기 구성 요소들은,These components are
    상기 컴퓨트 노드에 CID(component ID)를 할당하고, 상기 메모리 컨트롤러들의 각각에 서브 CID(sub-CID)를 할당하도록 구성되는 컴포넌트 관리 유닛a component management unit configured to assign a component ID (CID) to the compute node and assign a sub-CID (sub-CID) to each of the memory controllers;
    을 더 포함하고,Including more,
    상기 컴퓨트 노드는,The compute node,
    상기 할당된 CID와 상기 메모리 컨트롤러들 중 적어도 하나에 할당된 서브 CID를 상기 패브릭 패킷에 포함시키고, 상기 패브릭 패킷을 상기 패브릭 인터커넥트로 전송하도록 구성되는,Include the assigned CID and the sub-CID assigned to at least one of the memory controllers in the fabric packet and transmit the fabric packet to the fabric interconnect,
    시뮬레이터. simulator.
  6. 제 5 항에 있어서, According to claim 5,
    상기 구성 요소들은,These components are
    상기 패브릭 인터커넥트로부터 상기 패브릭 패킷을 수신하도록 구성되는 인터커넥트 로직 및 상기 수신되는 패브릭 패킷의 서브 CID가 할당된 적어도 하나의 메모리 컨트롤러로 상기 수신되는 패브릭 패킷을 보내도록 구성되는 패킷 멀티플렉서를 포함하는 메모리 풀 매니저a memory pool manager comprising interconnect logic configured to receive the fabric packet from the fabric interconnect and a packet multiplexer configured to direct the received fabric packet to at least one memory controller to which the sub CID of the received fabric packet is assigned;
    를 더 포함하는,Including more,
    시뮬레이터. simulator.
  7. 소프트웨어 기반의 개별분리 아키텍처 시스템 시뮬레이터의 방법에 있어서, In the method of software-based individual separation architecture system simulator,
    개별분리 아키텍처 시스템에 대한 설정 파일에 기반하여, 상기 개별분리 아키텍처 시스템의 구성 요소들을 모델링하는 단계;modeling components of the individual architecture system based on a configuration file for the individual architecture system;
    상기 개별분리 아키텍처 시스템의 기능과 성능을 측정하기 위해, 상기 구성 요소들의 각각에 대해 시뮬레이션을 수행하는 단계; 및performing simulations on each of the components to measure functions and performance of the separate architecture system; and
    상기 시뮬레이션의 결과를 출력하는 단계Outputting the result of the simulation
    를 포함하는,including,
    시뮬레이터의 방법. method of the simulator.
  8. 제 7 항에 있어서, According to claim 7,
    상기 구성 요소들을 각각 모델링하기 위한 코드들은, The codes for modeling each of the components are,
    미리 컴파일되어 있고, 상기 구성 요소들을 모델링하기 위해 초기화되어 서로 연결되며, 상기 시뮬레이션이 수행되는 동안 서로 상호작용하는,Precompiled, initialized to model the components, connected to each other, and interacting with each other while the simulation is performed,
    시뮬레이터의 방법. method of the simulator.
  9. 제 7 항에 있어서, According to claim 7,
    상기 구성 요소들은, These components are
    실제 연산을 수행하도록 구성되는 적어도 하나의 컴퓨트 노드; at least one compute node configured to perform actual computation;
    상기 연산을 수행하기 위해 필요한 메모리 모듈들 및 상기 메모리 모듈들을 관리하도록 구성되는 메모리 컨트롤러들을 포함하는 메모리 풀; 및a memory pool including memory modules required to perform the operation and memory controllers configured to manage the memory modules; and
    상기 컴퓨트 노드와 상기 메모리 풀 사이의 패킷 통신을 지원하는 패브릭 인터커넥트A fabric interconnect supporting packet communication between the compute node and the memory pool.
    를 포함하는,including,
    시뮬레이터의 방법. method of the simulator.
  10. 소프트웨어 기반의 개별분리 아키텍처 시스템 시뮬레이터에 방법을 실행시키기 위해 비-일시적인 컴퓨터 판독 가능한 기록 매체에 저장되는 컴퓨터 프로그램에 있어서, A computer program stored in a non-transitory computer readable recording medium for executing a method in a software-based discrete architecture system simulator,
    상기 방법은,The method,
    개별분리 아키텍처 시스템에 대한 설정 파일에 기반하여, 상기 개별분리 아키텍처 시스템의 구성 요소들을 모델링하는 단계;modeling components of the individual architecture system based on a configuration file for the individual architecture system;
    상기 개별분리 아키텍처 시스템의 기능과 성능을 측정하기 위해, 상기 구성 요소들의 각각에 대해 시뮬레이션을 수행하는 단계; 및performing simulations on each of the components to measure functions and performance of the separate architecture system; and
    상기 시뮬레이션의 결과를 출력하는 단계Outputting the result of the simulation
    를 포함하는,including,
    컴퓨터 프로그램. computer program.
PCT/KR2022/019733 2021-12-29 2022-12-06 Software-based simulator for disaggregated architecture system, and method therefor WO2023128357A1 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR10-2021-0191586 2021-12-29
KR20210191586 2021-12-29
KR10-2022-0066569 2022-05-31
KR1020220066569A KR20230101667A (en) 2021-12-29 2022-05-31 Toward scalable and configureable simulation for disaggregated architecture, and method of the same

Publications (1)

Publication Number Publication Date
WO2023128357A1 true WO2023128357A1 (en) 2023-07-06

Family

ID=86999509

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2022/019733 WO2023128357A1 (en) 2021-12-29 2022-12-06 Software-based simulator for disaggregated architecture system, and method therefor

Country Status (1)

Country Link
WO (1) WO2023128357A1 (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0916642A (en) * 1995-06-09 1997-01-17 Sharp Corp Method for evaluating architecture in data processor
JP2004021907A (en) * 2002-06-20 2004-01-22 Matsushita Electric Ind Co Ltd Simulation system for performance evaluation
KR20110045262A (en) * 2009-10-26 2011-05-04 주식회사 엘지씨엔에스 System for Designing Architecture Engineering and Method for Using the Same
KR20120095405A (en) * 2009-10-30 2012-08-28 칼세다 인코포레이티드 System and method for high-performance, low-power data center interconnect fabric
KR20200110942A (en) * 2019-03-18 2020-09-28 한국전자통신연구원 Global address translation device, computing node having the same, and operating method thereof

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0916642A (en) * 1995-06-09 1997-01-17 Sharp Corp Method for evaluating architecture in data processor
JP2004021907A (en) * 2002-06-20 2004-01-22 Matsushita Electric Ind Co Ltd Simulation system for performance evaluation
KR20110045262A (en) * 2009-10-26 2011-05-04 주식회사 엘지씨엔에스 System for Designing Architecture Engineering and Method for Using the Same
KR20120095405A (en) * 2009-10-30 2012-08-28 칼세다 인코포레이티드 System and method for high-performance, low-power data center interconnect fabric
KR20200110942A (en) * 2019-03-18 2020-09-28 한국전자통신연구원 Global address translation device, computing node having the same, and operating method thereof

Similar Documents

Publication Publication Date Title
US11934883B2 (en) Computer cluster arrangement for processing a computation task and method for operation thereof
US20210232528A1 (en) Configurable device interface
TWI421766B (en) Providing virtual device access via firmware
US7984450B2 (en) Dispatching packets on a global combining network of a parallel computer
TWI331281B (en) Method and apparatus for shared i/o in a load/store fabric
TWI297838B (en) Method and apparatus for shared i/o in a load/store fabric
TW200539628A (en) Method and apparatus for shared I/O in a load/store fabric
US9811481B2 (en) Distributed intelligent platform management interface (D-IPMI) system and method thereof
WO2016064158A1 (en) Reconfigurable processor and operation method therefor
WO2014142553A1 (en) Interconnection fabric switching apparatus capable of dynamically allocating resources according to workload and method therefor
GB2536515A (en) Computer system, and a computer system control method
WO2018004021A1 (en) Device for supporting collaboration for co-editing electronic document, and method for operating same
WO2023128357A1 (en) Software-based simulator for disaggregated architecture system, and method therefor
WO2021223744A1 (en) Method for realizing live migration, chip, board, and storage medium
US20100131740A1 (en) Data processing system and data processing method
US11836105B2 (en) Communication device, information processing system, and communication method
CN114281467A (en) System method, device and storage medium for realizing heat migration
TWI544342B (en) Method and system for verifing quality of server
WO2010093084A1 (en) Method and system for providing distributed programming environment using distributed spaces, and computer readable recording medium
WO2022062510A1 (en) Device and method for implementing live migration
Florian et al. An open-source hardware/software architecture for remote control of SoC-FPGA based systems
WO2015108257A1 (en) Method and apparatus for processing data by using memory
KR20230101667A (en) Toward scalable and configureable simulation for disaggregated architecture, and method of the same
WO2014137008A1 (en) System and method for sharing graphic resource
WO2010064661A1 (en) Parallel computation system, and method and program therefor

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 22916503

Country of ref document: EP

Kind code of ref document: A1