KR20250021054A - Data processing system including remote processing device and operation method thereof - Google Patents
Data processing system including remote processing device and operation method thereof Download PDFInfo
- Publication number
- KR20250021054A KR20250021054A KR1020230184867A KR20230184867A KR20250021054A KR 20250021054 A KR20250021054 A KR 20250021054A KR 1020230184867 A KR1020230184867 A KR 1020230184867A KR 20230184867 A KR20230184867 A KR 20230184867A KR 20250021054 A KR20250021054 A KR 20250021054A
- Authority
- KR
- South Korea
- Prior art keywords
- profile
- processing system
- data processing
- program
- function
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/12—Computing arrangements based on biological models using genetic models
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Genetics & Genomics (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Bioinformatics & Computational Biology (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 기술에 의한 데이터 처리 시스템은 데이터 셋을 처리하는 프로그램을 실행하는 호스트; 및 호스트와 인터페이스를 통해 연결된 원격 처리 장치를 포함하되, 호스트는 프로그램 실행시 호출되는 함수에 대응하는 프로파일을 생성하는 프로파일 제어회로; 프로파일과 대응하는 함수의 실행 위치를 저장하는 프로파일 데이터베이스; 및 프로파일 데이터베이스를 참조하여 프로그램 실행 시 호출되는 함수를 호스트 또는 원격 처리 장치로 전달하는 정책 실행 회로를 포함한다.A data processing system according to the present invention comprises a host executing a program for processing a data set; and a remote processing device connected to the host via an interface, wherein the host comprises a profile control circuit for generating a profile corresponding to a function called when the program is executed; a profile database for storing execution locations of functions corresponding to the profiles; and a policy execution circuit for transmitting a function called when the program is executed to the host or the remote processing device by referring to the profile database.
Description
본 기술은 원격 처리 장치를 포함하는 데이터 처리 시스템과 그 동작 방법에 관한 것으로서 대용량의 데이터를 처리하는 프로그램을 호스트와 원격 처리 장치에서 분산하여 처리하는 데이터 처리 시스템과 그 동작 방법에 관한 것이다.The present technology relates to a data processing system including a remote processing device and an operating method thereof, and relates to a data processing system and an operating method thereof in which a program for processing a large amount of data is distributed and processed between a host and a remote processing device.
데이터 처리 시스템이 클러스터링 프로그램과 같이 대용량의 데이터를 처리하는 프로그램을 실행하기 위해서는 메인 메모리의 용량이 매우 커야 하고 CPU와 메모리 사이의 통신 비용도 크게 증가한다.In order for a data processing system to execute programs that process large amounts of data, such as clustering programs, the main memory capacity must be very large, and the communication cost between the CPU and memory also increases significantly.
이에 따라 호스트와 연결된 대용량의 원격 메모리를 포함하는 NDP(Near Data Processing) 장치를 결합하여 분산 처리하는 기술이 제시되고 있다.Accordingly, a distributed processing technology is being proposed by combining an NDP (Near Data Processing) device that includes a large-capacity remote memory connected to a host.
그러나 메인 메모리에 접근하는 경우에 비하여 원격 메모리에 접근하는 경우에는 상대적으로 레이턴시가 증가하고 인터페이스의 한계로 인하여 대역폭이 제한되는 문제가 있어서 분산 처리의 효율을 높이는데 한계가 되고 있다.However, compared to accessing main memory, accessing remote memory has relatively higher latency and bandwidth is limited due to interface limitations, which limits the efficiency of distributed processing.
본 기술은 대용량의 데이터를 처리하는 응용 프로그램을 프로파일링하고, 프로파일링 결과를 반영하여 응용 프로그램을 호스트와 원격 처리 장치에 효율적으로 분산하여 처리하는 기술을 제공한다.This technology provides a technology for profiling applications that process large amounts of data and efficiently distributing and processing the applications on hosts and remote processing devices by reflecting the profiling results.
본 발명의 일 실시예에 의한 데이터 처리 시스템은 데이터 셋을 처리하는 프로그램을 실행하는 호스트; 및 호스트와 인터페이스를 통해 연결된 원격 처리 장치를 포함하되, 호스트는 프로그램 실행시 호출되는 함수에 대응하는 프로파일을 생성하는 프로파일 제어회로; 프로파일과 대응하는 함수의 실행 위치를 저장하는 프로파일 데이터베이스; 및 프로파일 데이터베이스를 참조하여 프로그램 실행 시 호출되는 함수를 호스트 또는 원격 처리 장치로 전달하는 정책 실행 회로를 포함한다.A data processing system according to one embodiment of the present invention comprises: a host executing a program for processing a data set; and a remote processing device connected to the host via an interface, wherein the host comprises: a profile control circuit for generating a profile corresponding to a function called when the program is executed; a profile database for storing execution locations of functions corresponding to the profiles; and a policy execution circuit for transferring a function called when the program is executed to the host or the remote processing device by referring to the profile database.
본 발명의 일 실시예에 의한 데이터 처리 시스템의 동작 방법은 데이터 셋을 처리하는 프로그램을 실행하는 호스트; 및 호스트와 인터페이스를 통해 연결된 원격 처리 장치를 포함하는 데이터 처리 시스템의 동작 방법으로서, 데이터 셋보다 작은 크기의 합성 데이터 셋을 이용하여 프로그램을 실행하면서 프로그램에 포함된 다수의 함수에 대응하는 다수의 프로파일을 저장하는 프로파일 생성 단계; 및 합성 데이터 셋을 이용하여 프로그램을 실행하면서 다수의 프로파일에 대응하는 함수의 실행 위치를 호스트 또는 원격 처리 장치 중 어느 하나로 결정하는 최적화 단계를 포함한다.A method of operating a data processing system according to one embodiment of the present invention comprises: a host executing a program for processing a data set; and a remote processing device connected to the host via an interface, the method comprising: a profile generation step of storing a plurality of profiles corresponding to a plurality of functions included in a program while executing the program using a synthetic data set having a smaller size than the data set; and an optimization step of determining an execution location of a function corresponding to a plurality of profiles as either the host or the remote processing device while executing the program using the synthetic data set.
본 기술에 의한 데이터 처리 시스템은 프로그램에 포함된 함수들에 대해서 프로그램 컨텍스트를 이용하여 프로파일링을 수행하고 프로파일링 결과에 최적화 알고리즘을 적용하여 프로그램을 호스트와 원격 처리 장치 사이에서 자동으로 분산 처리함으로써 효율적인 시스템 활용이 가능하다.The data processing system by this technology performs profiling on functions included in a program using the program context, applies an optimization algorithm to the profiling results, and automatically distributes and processes the program between the host and a remote processing device, thereby enabling efficient system utilization.
도 1은 본 발명의 일 실시예에 의한 데이터 처리 시스템을 나타내는 블록도.
도 2는 본 발명의 일 실시예에 의한 데이터 처리 시스템의 프로파일 동작을 나타내는 설명도.
도 3은 본 발명의 일 실시예에 의한 프로파일 데이터베이스의 구조를 나타내는 테이블.
도 4는 본 발명의 일 실시예에 의한 데이터 처리 시스템의 최적화 동작을 나타내는 순서도.
도 5는 본 발명의 일 실시예에 의한 데이터 처리 시스템의 최적화 동작을 나타내는 설명도.Figure 1 is a block diagram showing a data processing system according to one embodiment of the present invention.
FIG. 2 is an explanatory diagram showing the profile operation of a data processing system according to one embodiment of the present invention.
Figure 3 is a table showing the structure of a profile database according to one embodiment of the present invention.
Figure 4 is a flowchart showing the optimization operation of a data processing system according to one embodiment of the present invention.
FIG. 5 is an explanatory diagram showing the optimization operation of a data processing system according to one embodiment of the present invention.
이하에서는 첨부한 도면을 참조하여 본 발명의 실시예를 개시한다.Hereinafter, embodiments of the present invention will be described with reference to the attached drawings.
도 1은 본 발명의 일 실시예에 의한 데이터 처리 시스템(1)을 나타내는 블록도이다.Figure 1 is a block diagram showing a data processing system (1) according to one embodiment of the present invention.
데이터 처리 시스템(1)은 호스트(10)와 원격 처리 장치(20)를 포함한다.The data processing system (1) includes a host (10) and a remote processing device (20).
호스트(10)는 하나 이상의 프로세서(11)와 로컬 메모리(12)를 포함하는데 프로세서(11)는 통상의 CPU를 포함하며 로컬 메모리(12)는 메인 메모리로 지칭할 수도 있다.The host (10) includes one or more processors (11) and local memory (12). The processor (11) includes a conventional CPU and the local memory (12) may be referred to as main memory.
호스트(10)는 프로파일 제어회로(110), 프로파일 데이터베이스(120), 정책 실행 회로(130), 및 정책 결정 회로(140)를 더 포함한다.The host (10) further includes a profile control circuit (110), a profile database (120), a policy execution circuit (130), and a policy decision circuit (140).
프로파일 제어회로(110), 프로파일 데이터베이스(120), 정책 실행 회로(130), 및 정책 결정 회로(140)의 동작에 대해서는 이하에서 구체적으로 개시한다.The operations of the profile control circuit (110), the profile database (120), the policy execution circuit (130), and the policy decision circuit (140) are specifically described below.
원격 처리 장치(20)는 근접 연산 처리(NDP: Near Data Processing)를 지원하며 NDP 장치로 지칭할 수 있다.The remote processing device (20) supports near data processing (NDP) and may be referred to as an NDP device.
원격 처리 장치(20)는 하나 이상의 연산 회로(21)와 원격 메모리(22)를 포함하는데 연산 회로(21)는 원격 메모리(22)에 저장되는 데이터를 이용하여 NDP 기능을 수행한다.The remote processing device (20) includes one or more computational circuits (21) and a remote memory (22), and the computational circuit (21) performs an NDP function using data stored in the remote memory (22).
연산 회로(21)와 원격 메모리(22)를 구비하여 NDP 기능을 수행하는 원격 처리 장치(20)에 관한 기술 자체는 잘 알려진 기술이다.The technology itself regarding a remote processing device (20) that performs an NDP function by having an operation circuit (21) and a remote memory (22) is a well-known technology.
호스트(10)와 원격 처리 장치(20)는 다양한 인터페이스 기술을 통해 연결될 수 있다.The host (10) and the remote processing device (20) can be connected through various interface technologies.
본 실시예에서는 호스트(10)와 원격 처리 장치(20)는 타입-2 표준에 의한 CXL(Compute Express Link) 기술을 지원하는 방식의 인터페이스를 통해 연결된 것으로 가정한다. In this embodiment, it is assumed that the host (10) and the remote processing device (20) are connected through an interface that supports CXL (Compute Express Link) technology according to the Type-2 standard.
타입-2 표준에 의한 CXL 기술 자체는 잘 알려진 것이므로 인터페이스 기술에 대한 구체적인 개시는 생략한다.Since the CXL technology itself by the Type-2 standard is well known, a detailed description of the interface technology is omitted.
CXL 기술을 지원하는 경우 호스트(10)의 프로세서(11)는 로컬 메모리(12)에 대한 읽기/쓰기와 동일한 방식으로 원격 메모리(22)에 접근할 수 있다.When supporting CXL technology, the processor (11) of the host (10) can access remote memory (22) in the same manner as reading/writing local memory (12).
이러한 인터페이스 기술을 통해 호스트(10)는 함수와 데이터를 원격 메모리에 오프로딩할 수 있으며 함수의 처리 결과를 수신할 수 있다.Through this interface technology, the host (10) can offload functions and data to remote memory and receive the processing results of the functions.
본 기술에 의한 데이터 처리 시스템(1)은 대용량의 데이터를 처리하는 프로그램에 대해서 일부 함수를 호스트(10)에서 처리하고 일부 함수를 원격 처리 장치(20)에서 처리할 수 있다.The data processing system (1) according to the present technology can process some functions of a program that processes a large amount of data in the host (10) and some functions in the remote processing device (20).
이하에서는 클러스터링 프로그램을 예로 들어 본 발명을 개시한다.Below, the present invention is disclosed using a clustering program as an example.
클러스터링 프로그램은 비지도식 방식에 의하여 데이터 셋에 저장된 데이터를 레이블링하는 기술이다. Clustering programs are a technique for labeling data stored in a data set in an unsupervised manner.
사용하는 클러스터링 알고리즘에 따라 다양한 클러스터링 프로그램이 존재하므로 특정 프로그램에 최적화된 분산 처리 방식이 다른 프로그램에서도 동일하게 적용되기 어렵다.Since there are various clustering programs depending on the clustering algorithm used, it is difficult to apply the distributed processing method optimized for a specific program to other programs.
본 실시예에서 호스트(10)는 프로그램에 포함된 다양한 함수들에 대한 프로파일 동작과 함수들을 타겟에 할당하기 위한 최적화 동작을 순차적으로 실행하여 프로그램 수행시 호출되는 함수에 대한 자동화된 할당을 실현한다.In this embodiment, the host (10) sequentially executes a profile operation for various functions included in the program and an optimization operation for allocating the functions to targets to realize automated allocation for functions called when the program is executed.
이때 타겟은 호스트(10) 또는 원격 처리 장치(20) 중 어느 하나에 대응한다. At this time, the target corresponds to either the host (10) or the remote processing device (20).
본 실시예에서는 함수에 대응하는 프로파일을 생성하기 위하여 함수의 호출 경로에 연관된 프로그램 컨텍스트를 이용하고, 최적화를 위해 유전 알고리즘을 적용하지만 본 발명의 범위가 이에 한정되는 것은 아니다.In this embodiment, the program context associated with the call path of the function is used to generate a profile corresponding to the function, and a genetic algorithm is applied for optimization, but the scope of the present invention is not limited thereto.
프로파일 동작과 최적화 동작에서는 실제 데이터 셋이 아닌 소규모의 합성 데이터 셋을 사용하여 클러스터링 프로그램을 실행시킨다. 합성 데이터 셋은 임의로 생성할 수도 있고 실제 데이터 셋의 일부를 샘플링하여 생성할 수도 있다.In the profile and optimization operations, the clustering program is run using a small synthetic data set rather than the actual data set. The synthetic data set can be generated randomly or by sampling a portion of the actual data set.
먼저 프로파일 동작을 개시한다.First, initiate the profile operation.
프로그램이 실행되는 과정에서는 다양한 함수가 호출된다. During the program execution process, various functions are called.
본 실시예에서는 개별적인 함수 그 자체가 아니라 함수에 대응하는 프로그램 컨텍스트를 이용하여 프로파일 동작을 수행한다. In this embodiment, profiling operations are performed using the program context corresponding to the function, rather than the individual function itself.
이를 통해 함수가 호출되는 다양한 문맥상의 정보를 반영하여 프로파일을 생성한다.This creates a profile that reflects various contextual information in which the function is called.
본 실시예에서 프로그램 컨텍스트는 스택 메모리에 적층된 일련의 함수 호출을 반영한다.In this embodiment, the program context reflects a series of function calls stacked in stack memory.
보다 구체적으로 본 실시예에서는 현재 호출된 함수에 대응하는 프로그램 컨텍스트로서 스택 메모리에 적층된 일련의 함수의 리턴 주소의 배열을 해싱한 값을 사용하며, 해싱한 값은 예를 들어 32비트의 값을 가진다.More specifically, in this embodiment, a hashed value of an array of return addresses of a series of functions stacked in the stack memory is used as a program context corresponding to the currently called function, and the hashed value has, for example, a 32-bit value.
이에 따라 동일한 함수라고 하여도 호출되는 문맥에 따라 다른 프로그램 컨텍스트를 가질 수 있다.Accordingly, even if it is the same function, it can have different program contexts depending on the context in which it is called.
이에 따라 이하에서는 프로파일과 프로그램 컨텍스트를 혼용하여 사용할 수 있다.Accordingly, profiles and program contexts can be used interchangeably below.
프로파일 제어회로(110)는 함수에 대응하는 프로파일을 결정하는데 본 실시예에서는 전술한 바와 같이 함수가 호출된 시점에서 스택 메모리에 적층된 함수의 리턴 주소의 배열을 해싱하여 함수에 대응하는 프로파일을 생성한다.The profile control circuit (110) determines a profile corresponding to a function. In this embodiment, as described above, a profile corresponding to a function is generated by hashing an array of return addresses of functions stacked in the stack memory at the time the function is called.
프로파일 데이터베이스(120)는 호출된 함수에 대응하여 생성된 프로파일을 저장하는 데이터베이스이다.The profile database (120) is a database that stores profiles created in response to called functions.
본 실시예에서 프로파일 데이터베이스(120)는 호출된 함수에 대응하는 프로파일을 저장하되 호출된 함수의 종류를 연관하여 저장한다.In this embodiment, the profile database (120) stores a profile corresponding to a called function, but stores it in association with the type of the called function.
본 실시예에서는 연산 함수 또는 메모리 함수로 함수의 종류를 구분한다. 예를 들어, 메모리 함수는 메모리를 할당하는 동작 등과 같이 메모리를 제어하는 함수이고 연산 함수는 이를 제외한 나머지 함수이다. In this embodiment, the types of functions are classified as operation functions or memory functions. For example, a memory function is a function that controls memory, such as an operation to allocate memory, and an operation function is a function other than this.
연산 함수에는 쓰레드 할당 함수와 이를 제외하고 일반적인 동작을 수행하는 일반 함수가 포함될 수 있다.The operation functions may include thread allocation functions and other general functions that perform general operations.
새로운 프로파일을 저장할 때 프로그램 컨텍스트를 파악하여 프로파일 사이의 관계를 저장할 수 있다.When saving a new profile, you can capture the program context and save the relationships between profiles.
예를 들어 연산 함수를 수행하는 과정에서 메모리 함수가 호출되는 경우 해당 연산 함수와 메모리 함수가 연관된 것으로 볼 수 있다.For example, if a memory function is called during the process of performing an operation function, the operation function and the memory function can be viewed as being related.
이에 따라 각 함수에 대응하는 프로파일이 생성된 후 두 프로파일 사이의 연관 관계가 함께 저장될 수 있고, 둘 중 어느 하나의 프로파일을 조회하여 연관된 다른 프로파일을 알 수 있다.Accordingly, after a profile corresponding to each function is generated, the relationship between the two profiles can be stored together, and by querying either profile, the other related profile can be known.
도 2는 본 발명의 일 실시예에 의한 데이터 처리 시스템(1)의 프로파일 동작을 나타내는 설명도이다.Figure 2 is an explanatory diagram showing the profile operation of a data processing system (1) according to one embodiment of the present invention.
도 2는 f0에서 f6까지의 함수가 순차적으로 호출되는 것을 나타내고 각 함수의 생존 범위(scope)를 화살표로 표시하였다. 대응하는 화살표가 존재하지 않는 함수의 경우 동작이 완료된 후 다음 함수가 호출되는 것을 나타낸다.Figure 2 shows that functions from f0 to f6 are called sequentially, and the scope of each function is indicated by an arrow. For a function that does not have a corresponding arrow, it shows that the next function is called after the operation is completed.
점선의 사각형은 함수에 대응하는 리턴 주소를 나타내는데, 동일한 함수라도 호출되는 시점에 따라 리턴 주소는 달라질 수 있다. 예를 들어 점선의 사각형과 함께 표시된 f5와 f5'는 호출된 시점이 상이하여 리턴 주소가 다른 것을 나타낸다.The dotted rectangle indicates the return address corresponding to the function, but the return address may be different depending on the time of calling for the same function. For example, f 5 and f 5 ', which are indicated with dotted rectangles, indicate that they were called at different times and have different return addresses.
도 2에서 f1, f5는 메모리 할당 함수에 대응하고, f4는 쓰레드 생성 함수에 대응하며 나머지는 일반 함수에 대응한다. 즉, f4는 메모리 함수에 대응하고 나머지 함수는 연산 함수에 대응한다.In Figure 2, f 1 and f 5 correspond to memory allocation functions, f 4 corresponds to a thread creation function, and the rest correspond to general functions. That is, f 4 corresponds to a memory function, and the rest correspond to operation functions.
도 2는 함수들이 호출된 시점과 호출된 함수의 생존 범위를 나타내는데, 예를 들어 f0는 호출된 후 f6의 동작이 종료된 후에 종료된다. 화살표가 없는 함수의 경우 호출 이후 다음 함수가 호출되기 전에 리턴되는 것을 나타낸다. Figure 2 shows the time at which functions are called and the scope of the life of the called function. For example, f 0 is called and ends after the operation of f 6 is finished. In the case of a function without an arrow, it indicates that it returns after the call and before the next function is called.
본 실시예에서 리턴 주소 배열은 스택 메모리에 저장된 현재 실행 중인 프로시져 또는 함수의 리턴 주소를 담고 있는 배열을 나타낸다. In this embodiment, the return address array represents an array containing the return address of the currently executing procedure or function stored in stack memory.
도 2에서 호출된 함수(fi)에 대응하는 리턴 주소 배열(A(fi))은 함수(fi)가 호출되었을 때 스택 메모리에 순차적으로 저장된 리턴 주소들의 어레이에 대응한다.The return address array (A(f i )) corresponding to the function (f i ) called in Fig. 2 corresponds to the array of return addresses sequentially stored in the stack memory when the function (f i ) is called.
먼저 f0가 호출되면 f0의 리턴 주소가 스택 메모리에 저장되고 이후의 함수 호출에 따라 순차적으로 대응하는 함수의 리턴 주소가 스택 메모리에 저장된다.First, when f 0 is called, the return address of f 0 is stored in the stack memory, and for subsequent function calls, the return addresses of the corresponding functions are sequentially stored in the stack memory.
예를 들어 f1이 호출되면 f0의 리턴 주소 다음에 f1의 리턴 주소가 저장되고, f1 리턴 이후 f2가 호출되면 f0의 리턴 주소 다음에 f2의 리턴 주소가 저장되고, f3이 호출되면 f0의 리턴 주소 다음에 f2의 리턴 주소와 f3의 리턴 주소가 순차적으로 저장된다.For example, when f 1 is called, the return address of f 1 is stored after the return address of f 0 , when f 2 is called after f 1 returns, the return address of f 2 is stored after the return address of f 0 , and when f 3 is called, the return addresses of f 2 and f 3 are stored sequentially after the return address of f 0 .
본 실시예에서 함수(fi)에 대응하는 프로파일은 함수(fi)에 대응하는 리턴 주소 배열(A(fi))의 해시값에 대응한다. In this embodiment , the profile corresponding to the function (f i ) corresponds to the hash value of the return address array (A(f i )) corresponding to the function (f i ).
이때 해시 함수는 리턴 주소의 배열을 입력으로 받는다. 예를 들어, 해시 함수를 HASH()로 표시하면, f0에 대응하는 프로파일은 C(f0) = HASH(<addrf0>)와 같이 표시될 수 있고, f1에 대응하는 프로파일은 C(f1) = HASH(<addrf0, addrf1>)와 같이 표시될 수 있다.At this time, the hash function takes an array of return addresses as input. For example, if the hash function is expressed as HASH(), the profile corresponding to f0 can be expressed as C(f 0 ) = HASH(<addr f0 >), and the profile corresponding to f1 can be expressed as C(f 1 ) = HASH(<addr f0 , addr f1 >).
클러스터링 프로그램이 실행되면서 함수가 순차적으로 호출되며 프로파일 제어회로(110)는 위와 같은 원리에 의해 생성된 프로파일을 프로파일 데이터베이스(120)에 저장한다.As the clustering program is executed, functions are called sequentially, and the profile control circuit (110) stores the profile generated by the above principle in the profile database (120).
도 3은 본 발명의 일 실시예에 의한 프로파일 데이터베이스(120)의 구조를 나타내는 도표이다.FIG. 3 is a diagram showing the structure of a profile database (120) according to one embodiment of the present invention.
프로파일 데이터베이스(120)는 프로파일 필드, 프로파일 종류 필드, 관련 프로파일 필드, 실행 위치 필드를 포함한다.The profile database (120) includes a profile field, a profile type field, a related profile field, and an execution location field.
프로파일 필드는 전술한 바와 같이 생성된 프로파일을 순차적으로 저장한다.The profile field sequentially stores the profiles generated as described above.
프로파일 종류 필드는 생성된 프로파일의 종류를 표시하는데 대응하는 함수의 종류에 따라 연산 또는 메모리로 구분된다.The Profile Type field indicates the type of profile generated, which is classified as either Operational or Memory, depending on the type of function it corresponds to.
예를 들어, 전술한 일반 함수는 쓰레드 생성 함수에 대응하는 프로파일은 연산으로 표시되고, 메모리 할당 함수에 대응하는 프로파일은 메모리로 표시된다.For example, the profile corresponding to the thread creation function of the aforementioned general function is displayed as operation, and the profile corresponding to the memory allocation function is displayed as memory.
관련 프로파일 필드는 현재 프로파일에 연관된 프로파일을 저장한다.The Related Profile field stores the profiles associated with the current profile.
예를 들어 현재 프로파일의 종류가 메모리인 경우 대응하는 메모리 할당 함수를 호출한 연산 함수에 대응하는 프로파일을 저장한다.For example, if the type of the current profile is memory, the profile corresponding to the operation function that called the corresponding memory allocation function is stored.
예를 들어, 도 2에서 메모리 할당 함수인 f1은 일반 함수인 f0에서 호출된다.For example, in Figure 2, the memory allocation function f 1 is called from the general function f 0 .
이를 도 3에 적용하였을 때, f0의 프로파일이 3FE033B5이고 f1의 프로파일이 5964F1CB이라고 가정하면, f1의 프로파일의 연관 프로파일로서 3FE033B5이 저장될 수 있다. 또한 f0의 프로파일의 연관 프로파일로서 5964F1CB이 추가로 저장될 수 있다.When this is applied to Fig. 3, assuming that the profile of f 0 is 3FE033B5 and the profile of f 1 is 5964F1CB, 3FE033B5 can be stored as an associated profile of the profile of f 1. In addition, 5964F1CB can be additionally stored as an associated profile of the profile of f 0 .
실행 위치 필드는 프로파일에 대응하는 함수가 실행될 위치를 저장한다. 예를 들어 프로파일에 대응하는 함수를 호스트(10)에서 실행하는 경우 0을 저장하고 대응하는 함수를 원격 처리 장치(20)에서 실행하는 경우 1을 저장할 수 있다.The execution location field stores the location where the function corresponding to the profile is to be executed. For example, if the function corresponding to the profile is to be executed on the host (10), 0 can be stored, and if the corresponding function is to be executed on a remote processing device (20), 1 can be stored.
프로파일의 종류와 관련 프로파일은 최적화 동작에서 사용될 수 있으며 최적화 동작을 통해 실행 위치의 값이 최종적으로 결정된다.The type of profile and the related profile can be used in the optimization operation, and the value of the execution location is ultimately determined through the optimization operation.
이와 같이 클러스터링 프로그램을 실행시키면서 호출되는 전체 함수를 이용하여 프로파일 데이터베이스(120)를 생성한 후 최적화 동작을 수행한다.In this way, a profile database (120) is created using all functions called while executing the clustering program, and then an optimization operation is performed.
이하에서는 최적화 동작에 대해서 개시한다.Below we describe the optimization operation.
정책 결정 회로(140)는 프로파일 데이터베이스(120)에 저장된 각 프로파일의 실행 위치를 호스트(10) 또는 원격 처리 장치(20)로 결정하고, 정책 실행 회로(130)는 결정된 프로파일의 실행 위치에 따라 함수를 호스트(10) 또는 원격 처리 장치(20)에서 실행하도록 지시한다.The policy decision circuit (140) determines the execution location of each profile stored in the profile database (120) as the host (10) or remote processing device (20), and the policy execution circuit (130) instructs the host (10) or remote processing device (20) to execute a function according to the execution location of the determined profile.
정책 결정 회로(140)는 최적화 동작을 제어하여 최적화 알고리즘에 따라 각 프로파일에 대응하는 실행 위치를 결정한다.The policy decision circuit (140) controls the optimization operation to determine the execution location corresponding to each profile according to the optimization algorithm.
최적화 알고리즘으로서 다양한 알고리즘이 사용될 수 있으나 이하에서는 유전 알고리즘을 예로 들어 본 실시예를 개시한다. Although various algorithms can be used as optimization algorithms, the following example discloses an embodiment using a genetic algorithm as an example.
도 4는 본 발명의 일 실시예에 의한 데이터 처리 시스템(1)의 최적화 동작을 나타내는 순서도이고, 도 5는 이에 대응하는 설명도이다.FIG. 4 is a flowchart showing the optimization operation of a data processing system (1) according to one embodiment of the present invention, and FIG. 5 is a corresponding explanatory diagram.
먼저 프로파일 데이터베이스(120)에 포함된 프로파일들에 대응하는 N번 세대 염색체 벡터를 다수 개 생성한다(S10). First, a number of Nth generation chromosome vectors corresponding to the profiles included in the profile database (120) are generated (S10).
이때 세대를 나타내는 변수 N은 0 또는 자연수이며 0으로 초기화된다. 이하에서, 0번 세대 염색체 벡터를 초기 염색체 벡터로 지칭할 수 있다.At this time, the variable N representing the generation is 0 or a natural number and is initialized to 0. Hereinafter, the 0th generation chromosome vector can be referred to as the initial chromosome vector.
본 실시예에서 N번 세대 염색체 벡터의 개수는 동일하며 도 5의 경우 세대 별로 4개의 염색체 벡터가 생성되는 것을 예시한다.In this embodiment, the number of N generation chromosome vectors is the same, and Fig. 5 exemplifies that four chromosome vectors are generated per generation.
초기 염색체 벡터의 각 원소는 프로파일 데이터베이스(120)에 포함된 어느 하나의 프로파일에 대응하고, 그 값은 프로파일에 대응하는 함수의 실행 위치를 표시한다.Each element of the initial chromosome vector corresponds to one of the profiles included in the profile database (120), and its value indicates the execution location of the function corresponding to the profile.
예를 들어, 실행 위치가 호스트이면 0, 실행 위치가 원격 처리 장치이면 1의 값을 가진다.For example, if the execution location is the host, the value is 0, and if the execution location is a remote processing device, the value is 1.
초기 염색체 벡터는 완전히 임의의 값으로 설정될 수 있으나 유전 알고리즘의 동작 결과 수렴된 염색체 벡터를 얻기 불가능하거나 수렴에 걸리는 시간이 너무 많이 걸릴 수 있다.The initial chromosome vector can be set to a completely random value, but it may be impossible to obtain a converged chromosome vector as a result of the operation of the genetic algorithm, or it may take too long to converge.
본 실시예에서는 이러한 현상을 방지하기 위하여 부트 스트랩핑 기술을 적용한다. 이를 위하여 본 실시예에서는 초기 염색체 벡터의 값을 임의의 값으로 초기화하고, 관련 프로파일을 참고하여 초기 염색체 벡터의 값을 변경한다.In this embodiment, a bootstrapping technique is applied to prevent this phenomenon. To this end, in this embodiment, the value of the initial chromosome vector is initialized to a random value, and the value of the initial chromosome vector is changed by referring to the relevant profile.
예를 들어, 프로파일 종류가 메모리인 경우 관련 프로파일과 동일한 값을 가지도록 초기 염색체 벡터의 값을 변경한다.For example, if the profile type is memory, change the values of the initial chromosome vector to have the same values as the related profile.
도 3에 예시한 바와 같이 프로파일 종류가 메모리인 프로파일 "5964F1CB"은 프로파일 "3FE033B5"와 관련되므로 초기 염색체 벡터에서 프로파일 "5964F1CB"에 대응하는 값은 프로파일 "3FE033B5"에 대응하는 값과 동일한 값을 가지도록 변경된다.As illustrated in Fig. 3, since profile "5964F1CB" whose profile type is memory is related to profile "3FE033B5", the value corresponding to profile "5964F1CB" in the initial chromosome vector is changed to have the same value as the value corresponding to profile "3FE033B5".
도 5는 프로파일 데이터베이스(120)에 저장된 프로파일 개수가 8개인 것으로 가정하였을 때 생성된 어느 하나의 초기 염색체 벡터를 예시한다.Figure 5 illustrates one initial chromosome vector generated when it is assumed that the number of profiles stored in the profile database (120) is 8.
다음으로, 각각의 N번 세대 염색체 벡터를 이용하여 도 3의 실행 위치 필드의 값을 설정하고, 이에 따라 합성 데이터 셋을 이용하여 클러스터링 프로그램을 실행한 후 미리 지정된 지표에 의한 점수를 도출한다(S20).Next, the value of the execution location field of Fig. 3 is set using each Nth generation chromosome vector, and accordingly, a clustering program is executed using a synthetic data set, and then a score is derived by a pre-specified index (S20).
미리 지정된 지표는 데이터 처리 시스템(1)에 대하여 기대하는 성능과 연관하여 선택할 수 있다. 예를 들어, IPC(instruction per cycle), 실행 시간 등을 미리 지정된 지표로 사용할 수 있다.Predefined indicators can be selected in relation to the performance expected for the data processing system (1). For example, IPC (instruction per cycle), execution time, etc. can be used as predefined indicators.
도 5는 4개의 N번 세대 염색체 벡터 X1, X2, X3, X4에 대응하여 산출된 4개의 점수를 나타낸다.Figure 5 shows four scores calculated corresponding to four Nth generation chromosome vectors X1, X2, X3, and X4.
이후, N이 최대 세대수보다 큰지 판단한다(S30). 최대 세대수는 염색체 벡터가 수렴하도록 충분히 크게 미리 결정된다. 염색체 벡터의 수렴 조건은 종래의 유전 알고리즘을 적용하여 다양하게 결정할 수 있으므로 구체적인 개시는 생략한다.Afterwards, it is determined whether N is greater than the maximum number of generations (S30). The maximum number of generations is determined in advance to be sufficiently large so that the chromosome vector converges. Since the convergence condition of the chromosome vector can be determined in various ways by applying a conventional genetic algorithm, a specific disclosure is omitted.
N이 최대 세대수보다 크지 않은 경우, 다수의 다음 세대 염색체 벡터를 생성하기 위한 부모 염색체 벡터쌍을 결정한다(S40). If N is not greater than the maximum number of generations, a pair of parent chromosome vectors for generating a plurality of next generation chromosome vectors is determined (S40).
부모 염색체 벡터는 다수의 N번 세대 염색체 벡터 중에서 확률적으로 선택되는데, 이때 어느 하나의 N번 세대 염색체 벡터가 선택될 확률은 어느 하나의 N번 세대 염색체 벡터에 대응하는 점수에 비례한다. 이때, 각각의 염색체 벡터는 중복하여 선택될 수 있다.A parent chromosome vector is stochastically selected from a number of N-th generation chromosome vectors, and the probability that any one N-th generation chromosome vector is selected is proportional to the score corresponding to any one N-th generation chromosome vector. At this time, each chromosome vector can be selected repeatedly.
도 5는 4개의 N번 세대 염색체 벡터에서 임의로 선택된 4개의 부모 염색체 벡터 P1, P2, P3, P4를 나타낸다. Figure 5 shows four parent chromosome vectors P1, P2, P3, and P4 randomly selected from four Nth generation chromosome vectors.
부모 염색체 벡터들은 순차적으로 부모 염색체 벡터쌍을 생성하며 각각의 부모 염색체 벡터쌍으로부터 다음 세대 염색체 벡터를 생성한다.Parent chromosome vectors sequentially generate parent chromosome vector pairs, and the next generation chromosome vector is generated from each parent chromosome vector pair.
부모 염색체 벡터쌍으로부터 다수의 (N+1)번 세대 염색체 벡터를 생성하는데 이 과정에서 유전 알고리즘에 의한 교차 및 변이 기법을 적용할 수 있다(S50). 교차 및 변이 기법 자체는 종래의 기술이므로 이에 대한 설명은 생략한다.A plurality of (N+1) generation chromosome vectors are generated from parent chromosome vector pairs, and in this process, crossover and mutation techniques using a genetic algorithm can be applied (S50). Since the crossover and mutation techniques themselves are conventional techniques, their description is omitted.
도 5는 첫 번째 부모 염색체 벡터쌍 (P1, P2) 로부터 생성된 2 개의 (N+1)번 세대 염색체 벡터 Y1, Y2와, 두 번째 부모 염색체 벡터쌍 (P3, P4) 로부터 생성된 2개의 (N+1)번 세대 염색체 벡터 Y3, Y4를 나타낸다.Figure 5 shows two (N+1)-th generation chromosome vectors Y1, Y2 generated from the first parent chromosome vector pair (P1, P2), and two (N+1)-th generation chromosome vectors Y3, Y4 generated from the second parent chromosome vector pair (P3, P4).
이후, 세대를 나타내는 변수(N)를 1 증가시키고(S60), 단계(S20)으로 돌아가 전술한 동작을 반복한다.Afterwards, the variable (N) representing the generation is increased by 1 (S60), and the process returns to step (S20) and repeats the aforementioned operation.
N이 최대 세대수보다 큰 경우, 다수의 N번 세대 염색체 벡터 중 가장 높은 점수에 대응하는 염색체 벡터를 최적 염색체 벡터로 선택하여 실행 위치를 최종 결정한다(S70).If N is greater than the maximum number of generations, the chromosome vector corresponding to the highest score among multiple Nth generation chromosome vectors is selected as the optimal chromosome vector to finally determine the execution location (S70).
도 5는 최적 염색체 벡터에 따라 각 프로파일에 대응하는 실행 위치가 호스트(10) 또는 원격 처리 장치(20)로 결정된 것을 나타낸다.Figure 5 shows that the execution location corresponding to each profile is determined by the host (10) or remote processing device (20) according to the optimal chromosome vector.
전술한 프로파일 동작과 최적화 동작이 완료되면 데이터 처리 시스템(1)에 본래의 데이터 셋과 클러스터링 알고리즘을 적용하여 클러스터링 동작을 수행한다.When the aforementioned profile operation and optimization operation are completed, the original data set and clustering algorithm are applied to the data processing system (1) to perform the clustering operation.
본 발명의 권리범위는 이상의 개시로 한정되는 것은 아니다. 본 발명의 권리범위는 청구범위에 문언적으로 기재된 범위와 그 균등범위를 기준으로 해석되어야 한다.The scope of the present invention is not limited to the above disclosure. The scope of the present invention should be interpreted based on the scope literally described in the claims and the equivalent scope thereof.
1: 데이터 처리 시스템
10: 호스트
11: 프로세서
12: 로컬 메모리, 메인 메모리
110: 프로파일 제어회로
130: 정책 실행 회로
140: 정책 결정 회로
120: 프로파일 데이터베이스
20: 원격 처리 장치
21: 연산 회로
22: 원격 메모리1: Data processing system
10: Host
11: Processor
12: Local memory, main memory
110: Profile control circuit
130: Policy execution circuit
140: Policy Decision Circuit
120: Profile Database
20: Remote Processing Unit
21: Operation circuit
22: Remote Memory
Claims (15)
상기 호스트와 인터페이스를 통해 연결된 원격 처리 장치
를 포함하되,
상기 호스트는
상기 프로그램 실행시 호출되는 함수에 대응하는 프로파일을 생성하는 프로파일 제어회로;
프로파일과 대응하는 함수의 실행 위치를 저장하는 프로파일 데이터베이스; 및
상기 프로파일 데이터베이스를 참조하여 상기 프로그램 실행 시 호출되는 함수를 상기 호스트 또는 상기 원격 처리 장치로 전달하는 정책 실행 회로
를 포함하는 데이터 처리 시스템.a host that runs a program that processes the data set; and
A remote processing device connected to the host and interface above
Including, but not limited to,
The above host is
A profile control circuit that generates a profile corresponding to a function called when the above program is executed;
A profile database that stores the execution locations of functions corresponding to the profile; and
A policy execution circuit that refers to the above profile database and transmits a function called when the above program is executed to the host or the remote processing device.
A data processing system comprising:
상기 최적화 동작은 상기 합성 데이터 셋을 이용하여 상기 프로그램을 실행하면서 상기 프로그램에 포함된 함수에 대응하는 프로파일을 상기 프로파일 데이터베이스에 저장하는 프로파일 동작을 수행한 후에 실행되는 데이터 처리 시스템.In claim 1, a policy decision circuit is further included that controls an optimization operation for determining an execution location of the profile database while executing the program using a synthetic data set of a smaller size than the data set,
A data processing system in which the above optimization operation is executed after performing a profile operation of storing a profile corresponding to a function included in the program in the profile database while executing the program using the above synthetic data set.
상기 데이터 셋보다 작은 크기의 합성 데이터 셋을 이용하여 상기 프로그램을 실행하면서 상기 프로그램에 포함된 다수의 함수에 대응하는 다수의 프로파일을 저장하는 프로파일 생성 단계; 및
상기 합성 데이터 셋을 이용하여 상기 프로그램을 실행하면서 상기 다수의 프로파일에 대응하는 함수의 실행 위치를 상기 호스트 또는 상기 원격 처리 장치 중 어느 하나로 결정하는 최적화 단계
를 포함하는 데이터 처리 시스템의 동작 방법.A method of operating a data processing system comprising: a host executing a program for processing a data set; and a remote processing device connected to the host through an interface;
A profile generation step for storing a plurality of profiles corresponding to a plurality of functions included in the program while executing the program using a synthetic data set of a smaller size than the above data set; and
An optimization step for determining the execution location of a function corresponding to the plurality of profiles as either the host or the remote processing device while executing the program using the synthetic data set.
A method of operating a data processing system including:
다수의 N번 세대 염색체 벡터로부터 확률적으로 선택된 순서에 따라 다수의 부모 염색체 벡터쌍을 생성하는 단계; 및
상기 다수의 부모 염색체 벡터쌍에 교차 및 변이 기술을 적용하여 다수의 (N+1)번 세대 염색체 벡터를 생성하는 단계
를 더 포함하되,
N은 0 또는 자연수이고, 상기 초기 염색체 벡터는 0번 세대 염색체 벡터에 대응하는 데이터 처리 시스템의 동작 방법.In claim 11, the optimization step
A step of generating a plurality of parent chromosome vector pairs according to a probabilistically selected order from a plurality of N-th generation chromosome vectors; and
A step of generating a plurality of (N+1) generation chromosome vectors by applying crossover and mutation techniques to the above plurality of parent chromosome vector pairs.
Including more than,
A method of operating a data processing system in which N is 0 or a natural number, and the initial chromosome vector corresponds to the 0th generation chromosome vector.
상기 N이 미리 지정된 최대 세대수보다 큰 경우 상기 다수의 N번 세대 염색체 벡터 중 어느 하나를 최적 염색체 벡터로 결정하는 단계
를 더 포함하는 데이터 처리 시스템의 동작 방법.In claim 13, the optimization step
A step of determining one of the Nth generation chromosome vectors as the optimal chromosome vector when the above N is greater than a pre-specified maximum number of generations.
A method of operating a data processing system further comprising:
A method of operating a data processing system according to claim 14, further comprising the step of determining a plurality of execution locations corresponding to the plurality of profiles according to the optimal chromosome vector and executing the program for processing the data set, while moving a function called during execution of the program according to the plurality of execution locations to the host or the remote processing device.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US18/420,542 US20250046405A1 (en) | 2023-08-04 | 2024-01-23 | Data processing system including remote processing device, and operation method thereof |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020230102378 | 2023-08-04 | ||
KR20230102378 | 2023-08-04 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20250021054A true KR20250021054A (en) | 2025-02-11 |
Family
ID=94614085
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020230184867A Pending KR20250021054A (en) | 2023-08-04 | 2023-12-18 | Data processing system including remote processing device and operation method thereof |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20250021054A (en) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060047794A1 (en) | 2004-09-02 | 2006-03-02 | Microsoft Corporation | Application of genetic algorithms to computer system tuning |
KR20160081815A (en) | 2014-12-31 | 2016-07-08 | 삼성전자주식회사 | Electronic system with data management mechanism and method of operation thereof |
-
2023
- 2023-12-18 KR KR1020230184867A patent/KR20250021054A/en active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060047794A1 (en) | 2004-09-02 | 2006-03-02 | Microsoft Corporation | Application of genetic algorithms to computer system tuning |
KR20160081815A (en) | 2014-12-31 | 2016-07-08 | 삼성전자주식회사 | Electronic system with data management mechanism and method of operation thereof |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10860574B2 (en) | Method, apparatus, and system for blockchain consensus | |
US10203878B2 (en) | Near memory accelerator | |
US6948034B2 (en) | Method for use of stack | |
WO2016107340A1 (en) | Service request processing method and device | |
US20060259485A1 (en) | System and method for intelligent data caching | |
US9043806B2 (en) | Information processing device and task switching method | |
JP4036206B2 (en) | Set associative cache system and cache memory control method | |
WO2023231336A1 (en) | Method for executing transaction and blockchain node | |
US20160259812A1 (en) | Method and system for accessing a distributed file system | |
CN110990154A (en) | Big data application optimization method and device and storage medium | |
CN117831604A (en) | A hard disk random delay simulation test method | |
US20130238871A1 (en) | Data processing method and apparatus, pci-e bus system, and server | |
CN113407466B (en) | IO path determination method, device, equipment and readable storage medium | |
US10223260B2 (en) | Compiler-generated memory mapping hints | |
KR20250021054A (en) | Data processing system including remote processing device and operation method thereof | |
KR20230059536A (en) | Method and apparatus for process scheduling | |
US10992517B1 (en) | Dynamic distributed execution budget management system | |
US20250046405A1 (en) | Data processing system including remote processing device, and operation method thereof | |
CN114327259B (en) | Flash memory channel controller operation method, device, equipment and storage medium | |
Birke et al. | Power of redundancy: Designing partial replication for multi-tier applications | |
US7581045B2 (en) | Method, system, and article of manufacture for mapping programming interfaces | |
JP2022108073A (en) | Information processing device, program and information processing method | |
US20200210244A1 (en) | Virtual resource placement | |
CN115599564A (en) | Task execution method and device and task execution system | |
JP7168731B1 (en) | MEMORY ACCESS CONTROL DEVICE, MEMORY ACCESS CONTROL METHOD, AND MEMORY ACCESS CONTROL PROGRAM |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PA0109 | Patent application |
Patent event code: PA01091R01D Comment text: Patent Application Patent event date: 20231218 |
|
PG1501 | Laying open of application |