KR102150386B1 - Electronic device, a method of compiling in an electronic device and a method of operating an electronic device - Google Patents

Electronic device, a method of compiling in an electronic device and a method of operating an electronic device Download PDF

Info

Publication number
KR102150386B1
KR102150386B1 KR1020180078122A KR20180078122A KR102150386B1 KR 102150386 B1 KR102150386 B1 KR 102150386B1 KR 1020180078122 A KR1020180078122 A KR 1020180078122A KR 20180078122 A KR20180078122 A KR 20180078122A KR 102150386 B1 KR102150386 B1 KR 102150386B1
Authority
KR
South Korea
Prior art keywords
memory
memory device
objects
application
information
Prior art date
Application number
KR1020180078122A
Other languages
Korean (ko)
Other versions
KR20200005009A (en
Inventor
염헌영
김화정
Original Assignee
서울대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 서울대학교 산학협력단 filed Critical 서울대학교 산학협력단
Priority to KR1020180078122A priority Critical patent/KR102150386B1/en
Publication of KR20200005009A publication Critical patent/KR20200005009A/en
Application granted granted Critical
Publication of KR102150386B1 publication Critical patent/KR102150386B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/441Register allocation; Assignment of physical memory space to logical memory space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/37Compiler construction; Parser generation
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

전자 장치는 컴파일러, 런타임 모듈 및 메모리 서브 시스템을 포함한다. 상기 컴파일러는 어플리케이션의 실행과 관련된 소스 코드를 중간 표현으로 컴파일하고, 상기 중간 표현에 기초하여 타겟 코드를 생성하고, 상기 어플리케이션과 관련된 하나 이상의 객체들 각각의 컨텍스트 정보를 포함하는 프로파일링 정보에 기초하여 상기 하나 이상의 객체들 각각의 메모리 할당 시의 성능 비용을 산출한다. 상기 런타임 모듈은 상기 타겟 코드에 기초하여 상기 어플리케이션을 실행시킨다. 상기 메모리 서브 시스템은 상기 컴파일러와 연결되고, 서로 다른 데이터 보유 특성을 가지는 제1 메모리 장치 및 제2 메모리 장치를 포함한다. 상기 컴파일러는 상기 하나 이상의 객체들 각각의 상기 성능 비용에 기초하여 상기 하나 이상의 객체들 각각을 상기 제1 메모리 장치 및 상기 제2 메모리 장치 중 하나에 할당한다.The electronic device includes a compiler, a runtime module, and a memory subsystem. The compiler compiles source codes related to execution of an application into an intermediate expression, generates a target code based on the intermediate expression, and based on profiling information including context information of each of one or more objects related to the application. A performance cost when allocating memory for each of the one or more objects is calculated. The runtime module executes the application based on the target code. The memory subsystem is connected to the compiler and includes a first memory device and a second memory device having different data retention characteristics. The compiler allocates each of the one or more objects to one of the first memory device and the second memory device based on the performance cost of each of the one or more objects.

Description

전자 장치, 전자 장치의 컴파일링 방법 및 전자 장치의 동작 방법{Electronic device, a method of compiling in an electronic device and a method of operating an electronic device}Electronic device, a method of compiling in an electronic device, and a method of operating an electronic device

본 발명은 컴퓨팅 분야에 관한 것으로 보다 상세하게는 전자 장치, 전자 장치의 컴파일링 방법 및 전자 장치의 동작 방법에 관한 것이다.The present invention relates to the field of computing, and more particularly, to an electronic device, a method of compiling an electronic device, and a method of operating the electronic device.

프로그래밍 언어의 컴파일을 위해 일반적으로 쓰이는 두 가지 방법은 AOTC(Ahead-of [0002] Time Compilation)과 JITC(Just-in-Time Compilation)이다.Two methods commonly used for compiling a programming language are AOTC (Ahead-of Time Compilation) and JITC (Just-in-Time Compilation).

자바스크립트와 같은 동적 프로그래밍 언어에서 주로 사용하는 JITC에서는 프로그램을 실행하면서 기계 코드(또는 기계어)로의 컴파일이 진행된다. 소스 코드(source code)를 특정 단위(주로, 함수 단위)로 나누고 해당 부분의 코드가 처음 호출되는 순간에 컴파일하고 실행한다. 컴파일된 해당 기계 코드는 저장(cache)되어 이후 같은 부분이 다시 호출되었을 때 재사용된다. 그리하여 프로그래머는 높은 수준(high-level)의 소스 코드를 제공하고 프로그램 사용자는 프로그램을 실행할 때마다 그때그때 JITC 방식으로 컴파일을 실행하게 된다.In JITC, which is mainly used in dynamic programming languages such as JavaScript, compilation into machine code (or machine language) is performed while executing a program. It divides the source code into specific units (mainly, function units), and compiles and executes the code at the first call. The compiled machine code is cached and reused when the same part is called again. Thus, the programmer provides a high-level source code, and the program user executes the compilation in the JITC method every time the program is executed.

JITC 방법에는 주요한 두 가지 장점이 있다. 첫 번째는 JITC는 런타임(runtime) 즉 프로그램의 실행 중에 컴파일이 진행되기 때문에 실행시에만 얻을 수 있는 프로그램 분석 정보들을 사용할 수 있다. 예를 들어, 자바 스크립트 프로그램을 실행시 함수 argument의 정확한 유형(type)은 함수 호출시에만 얻을 수 있는 정보이다. 이러한 장점으로 JITC는 자바스크립트와 같은 동적 언어에 적합하다. 두 번째는 런타임 시 호출된 코드만을 컴파일하기 때문에 메모리 영역 중 코드 영역의 크기를 줄일 수 있다는 것이다. 즉, JITC는 소스 코드 내 실제로 실행되지 않는 부분에 대해서는 메모리에 로딩하지 않는다. 하지만, 실행시에 프로그램 분석과 컴파일이 수행되다 보니 추가로 드는 메모리 및 전력 소비가 커지는 경우도 있다.The JITC method has two main advantages. First, JITC can use program analysis information that can only be obtained at runtime, that is, because compilation proceeds during program execution. For example, when executing a JavaScript program, the exact type of the function argument is information that can be obtained only when the function is called. With these advantages, JITC is suitable for dynamic languages such as JavaScript. The second is that the size of the code area among the memory areas can be reduced because only the code called at runtime is compiled. In other words, JITC does not load the parts of the source code that are not actually executed into memory. However, since program analysis and compilation are performed during execution, additional memory and power consumption may increase.

한편, C 언어와 같은 정적 프로그래밍 언어의 컴파일에 주로 사용되는 AOTC 방법은 프로그램의 소스 코드 전체를 (프로그램의) 실행 전에 미리 컴파일하여 기계 코드 형태로 프로그램 사용자에게 제공한다. AOTC의 가장 큰 장점은 런타임 중에 소스 코드를 컴파일하지 않기 때문에 수행 시간에 있어서 JITC와 비교해 높은 성능을 보여 준다는 점이다. Meanwhile, the AOTC method, which is mainly used for compiling static programming languages such as C, compiles the entire source code of a program before execution (of a program) and provides it to the program user in the form of a machine code. The biggest advantage of AOTC is that it shows higher performance compared to JITC in terms of execution time because it does not compile source codes during runtime.

이에 따라, 본 발명의 일 목적은 어플리케이션을 수정하지 않고, 서로 다른 종류의 메모리 장치들에 메모리 할당을 수행하는 전자 장치에 관한 것이다.Accordingly, an object of the present invention relates to an electronic device that performs memory allocation to different types of memory devices without modifying an application.

본 발명의 일 목적은 어플리케이션을 수정하지 않고, 서로 다른 종류의 메모리 장치들에 메모리 할당을 수행하는 전자 장치의 컴파일링 방법에 관한 것이다.An object of the present invention is to provide a method for compiling an electronic device that allocates memory to different types of memory devices without modifying an application.

본 발명의 일 목적은 어플리케이션을 수정하지 않고, 서로 다른 종류의 메모리 장치들에 메모리 할당을 수행하는 전자 장치의 동작 방법에 관한 것이다.An object of the present invention is to provide a method of operating an electronic device in which memory allocation is performed to different types of memory devices without modifying an application.

상기 일 목적을 달성하기 위한 본 발명의 실시예에 따른 전자 장치는 컴파일러, 런타임 모듈 및 메모리 서브 시스템을 포함한다. 상기 컴파일러는 어플리케이션의 실행과 관련된 소스 코드를 중간 표현으로 컴파일하고, 상기 중간 표현에 기초하여 타겟 코드를 생성하고, 상기 어플리케이션과 관련된 하나 이상의 객체들 각각의 컨텍스트 정보를 포함하는 프로파일링 정보에 기초하여 상기 하나 이상의 객체들 각각의 메모리 할당 시의 성능 비용을 산출한다. 상기 런타임 모듈은 상기 타겟 코드에 기초하여 상기 어플리케이션을 실행시킨다. 상기 메모리 서브 시스템은 상기 컴파일러와 연결되고, 서로 다른 데이터 보유 특성을 가지는 제1 메모리 장치 및 제2 메모리 장치를 포함한다. 상기 컴파일러는 상기 하나 이상의 객체들 각각의 상기 성능 비용에 기초하여 상기 하나 이상의 객체들 각각을 상기 제1 메모리 장치 및 상기 제2 메모리 장치 중 하나에 할당한다.An electronic device according to an embodiment of the present invention for achieving the above object includes a compiler, a runtime module, and a memory subsystem. The compiler compiles source codes related to execution of an application into an intermediate expression, generates a target code based on the intermediate expression, and based on profiling information including context information of each of one or more objects related to the application. A performance cost when allocating memory for each of the one or more objects is calculated. The runtime module executes the application based on the target code. The memory subsystem is connected to the compiler and includes a first memory device and a second memory device having different data retention characteristics. The compiler allocates each of the one or more objects to one of the first memory device and the second memory device based on the performance cost of each of the one or more objects.

실시예에 있어서, 상기 컴파일러는 프런트엔드 모듈, 최적화 모듈 및 백엔드 모듈을 포함할 수 있다. 상기 프런트엔드 모듈은 상기 소스 코드를 초기 중간 표현으로 컴파일할 수 있다. 상기 최적화 모듈은 상기 초기 중간 표현을 수신하고 상기 초기 중간 표현을 최적화하여 최종 중간 표현으로 컴파일하고, 상기 프로파일링 정보에 기초하여 상기 성능 비용을 산출할 수 있다. 상기 백엔드 모듈은 상기 최종 중간 표현에 기초하여 상기 타겟 코드를 생성할 수 있다.In an embodiment, the compiler may include a front-end module, an optimization module, and a back-end module. The front-end module may compile the source code into an initial intermediate expression. The optimization module may receive the initial intermediate expression, optimize the initial intermediate expression, compile it into a final intermediate expression, and calculate the performance cost based on the profiling information. The backend module may generate the target code based on the final intermediate expression.

상기 프로파일링 정보는 상기 어플리케이션이 수행될 때 호출되는 함수의 호출 경로 및 루프에 관련된 정보를 포함하는 상기 컨텍스트 정보에 기초한 상기 하나 이상의 객체들 각각이 할당받는 메모리의 사이즈 정보 및 로드/저장 횟수 정보를 포함할 수 있다.The profiling information includes information on the size of the memory to which each of the one or more objects is allocated and information on the number of loads/stores based on the context information including information related to a call path and a loop of a function called when the application is executed. Can include.

상기 최적화 모듈은 상기 프로파일링 정보에 기초하여 상기 하나 이상의 객체들 각각의 상기 메모리 할당 시 상기 어플리케이션의 성능에 기초하여 상기 성능 비용을 산출할 수 있다.The optimization module may calculate the performance cost based on the performance of the application when the memory is allocated to each of the one or more objects based on the profiling information.

상기 최적화 모듈은 상기 어플리케이션의 성능이 저하되지 않도록 상기 성능 비용에 기초하여 상기 하나 이상의 객체들 각각의 상기 메모리 할당을 수행할 수 있다.The optimization module may perform the memory allocation for each of the one or more objects based on the performance cost so as not to degrade the performance of the application.

상기 최적화 모듈은 하나 이상의 패스 모듈들을 포함하고, 상기 하나 이상의 패스 모듈들 각각은 할당 히스토리 기록 모듈, 참조 히스토리 기록 모듈 및 해제 히스토리 기록 모듈을 포함할 수 있다. 상기 할당 히스토리 기록 모듈은 상기 하나 이상의 객체들 각각에 대하여 메모리 할당 요청이 호출되는 경우, 상기 메모리 할당 요청의 시점과 관련된 제1 타임 스탬프, 상기 메모리 할당 요청과 관련된 객체의 식별자, 할당된 메모리의 어드레스 및 할당된 메모리의 크기 정보를 기록/저장할 수 있다. 상기 참조 히스토리 기록 모듈은 상기 객체가 할당 받은 메모리 영역에 대하여 상기 어플리케이션에서 로드/저장의 참조가 발생하는 경우 상기 객체에 대하여 참조가 발생한 시점과 관련된 제2 타임 스탬프, 상기 객체의 식별자 정보, 상기 참조의 유형 및 상기 객체로의 참조가 발생한 횟수를 기록/저장할 수 있다. 상기 해제 히스토리 기록 모듈은 상기 객체의 사용이 완료된 경우, 상기 객체에 할당된 메모리 영역의 할당을 해제하고, 메모리 할당 해제 요청의 시점과 관련된 제3 타임 스탬프, 상기 할당을 해제한 상기 객체의 식별자 정보 및 상기 할당이 해제된 메모리의 크기 정보를 기록/저장할 수 있다.The optimization module may include one or more pass modules, and each of the one or more pass modules may include an allocation history recording module, a reference history recording module, and a release history recording module. When a memory allocation request is called for each of the one or more objects, the allocation history recording module includes a first time stamp related to the time point of the memory allocation request, an identifier of an object related to the memory allocation request, and an address of the allocated memory. And information on the size of the allocated memory may be recorded/stored. When a load/store reference occurs in the application with respect to the memory area to which the object is allocated, the reference history recording module includes a second time stamp related to the time when the reference is made to the object, identifier information of the object, and the reference It is possible to record/store the type of and the number of times the reference to the object occurs. When the use of the object is completed, the release history recording module releases the allocation of the memory area allocated to the object, a third time stamp related to the time of the memory allocation release request, and identifier information of the object that releases the allocation And information on the size of the memory from which the allocation has been released may be recorded/stored.

상기 하나 이상의 패스 모듈들 각각은 상기 할당 히스토리 기록 모듈, 상기 참조 히스토리 기록 모듈 및 상기 해체 히스토리 기록 모듈에 저장된 정보를 별도의 파일로 저장하고, 상기 프로파일링 정보로 제공하는 프로파일링 정보 생성 모듈을 더 포함할 수 있다.Each of the one or more pass modules further includes a profiling information generation module storing information stored in the allocation history recording module, the reference history recording module, and the dismantling history recording module as separate files, and providing the profiling information as the profiling information. Can include.

상기 어플리케이션이 메모리 할당 함수를 호출하는 경우, 상기 하나 이상의 패스 모듈들 각각은 상기 프로파일링 정보에 기초하여 상기 하나 이상이 객체들 각각의 상기 메모리 할당 시의 상기 성능 비용을 추정하고, 상기 성능 비용에 기초하여 상기 어플리케이션 전체에 할당된 그리고 할당이 요청된 객체들 모두에 대하여 할당할 메모리 종류를 결정하고, 상기 결정된 메모리 종류에 따라 상기 하나 이상의 객체들 각각을 상기 제1 메모리 장치 및 상기 제2 메모리 장치 중 하나로 할당할 수 있다.When the application calls a memory allocation function, each of the one or more pass modules estimates the performance cost when allocating the memory of each of the one or more objects based on the profiling information, and calculates the performance cost. A memory type to be allocated for all of the objects allocated to the entire application and for which allocation is requested is determined based on the determined memory type, and each of the one or more objects is assigned to the first memory device and the second memory device according to the determined memory type. Can be assigned to either.

상기 하나 이상의 패스 모듈들 각각은 상기 성능 비용에 기초하여 미리 할당한 객체를 다른 타입의 메모리 장치로 재배치할 수 있다.Each of the one or more pass modules may rearrange an object previously allocated based on the performance cost to a different type of memory device.

상기 어플리케이션이 메모리 해제 함수를 호출하는 경우, 상기 하나 이상의 패스 모듈들 각각은 상기 메모리 해제가 요청된 객체의 메모리 할당을 해제하고, 상기 프로파일링 정보에 기초하여 현재 할당된 객체들의 상기 성능 비용을 재추정하고, 상기 재추정된 성능 비용에 기초하여 상기 현재 할당된 객체들의 재배치를 판단할 수 있다.When the application calls the memory release function, each of the one or more pass modules releases the memory allocation of the object for which the memory release is requested, and calculates the performance cost of the currently allocated objects based on the profiling information. It is possible to estimate and determine the relocation of the currently allocated objects based on the re-estimated performance cost.

상기 하나 이상의 패스 모듈들 각각은 상기 재추정된 성능 비용에 기초하여 상기 현재 할당된 객체들을 재배치하여 상기 어플리케이션의 성능을 향상시킬 수 있다.Each of the one or more pass modules may improve performance of the application by rearranging the currently allocated objects based on the re-estimated performance cost.

실시예에 있어서, 상기 제1 메모리 장치는 휘발성 메모리 장치이고, 상기 제2 메모리 장치는 비휘발성 메모리 장치이고, 상기 컴파일러는 상기 최적화 모듈, 상기 제1 메모리 장치 및 상기 제2 메모리 장치와 연결되는 메모리 인터페이스를 더 포함할 수 있다.In an embodiment, the first memory device is a volatile memory device, the second memory device is a nonvolatile memory device, and the compiler is a memory connected to the optimization module, the first memory device, and the second memory device. It may further include an interface.

상기 제1 메모리 장치는 DRAM이고 상기 제2 메모리 장치는 상변화 메모리 장치일 수 있다.The first memory device may be a DRAM and the second memory device may be a phase change memory device.

상기 일 목적을 달성하기 위한 본 발명의 실시예들에 따른 어플리케이션을 실행하는 전자 장치의 컴파일링 방법에서는, 상기 어플리케이션의 실행과 관련된 컨텍스트 정보를 인지하고, 상기 어플리케이션의 실행과 관련된 소스 코드를 최초 중간 표현으로 컴파일링하고, 상기 컨텍스트 정보에 기초하여 상기 어플리케이션과 관련된 하나 이상의 객체들 각각의 메모리 할당 시의 성능 비용에 기초하여 상기 하나 이상의 객체들 각각을 서로 다른 데이터 보유 특성을 가지는 제1 메모리 장치 및 제2 메모리 장치 중 하나에 할당하면서, 상기 최초 중간 표현을 최종 중간 표현으로 컴파일링하고, 상기 최종 중간 표현에 기초하여 상기 어플리케이션을 실행할 타겟 코드를 생성한다.In the compiling method of an electronic device that executes an application according to embodiments of the present invention for achieving the above object, context information related to execution of the application is recognized, and source code related to execution of the application is first intermediate A first memory device having different data retention characteristics for each of the one or more objects based on a performance cost when compiling into an expression and allocating memory for each of the one or more objects related to the application based on the context information, and While allocating to one of the second memory devices, the first intermediate expression is compiled into a final intermediate expression, and a target code to execute the application is generated based on the final intermediate expression.

상기 일 목적을 달성하기 위한 본 발명의 실시예들에 따른 전자 장치의 동작 방법에서는 어플리케이션의 실행과 관련된 소스 코드를 중간 표현으로 컴파일하면서, 상기 어플리케이션과 관련된 하나 이상의 객체들 각각의 컨텍스트 정보를 포함하는 프로파일링 정보에 기초하여 상기 하나 이상의 객체들 각각의 메모리 할당 시의 성능 비용을 산출하고, 상기 성능 비용에 기초하여 상기 하나 이상의 객체들 각각을 서로 다른 데이터 보유 특성을 가지는 제1 메모리 장치 및 제2 메모리 장치 중 하나에 할당하고, 상기 중간 표현에 기초하여 생성된 타겟 코드에 따라 상기 어플리케이션을 실행시킨다.In a method of operating an electronic device according to embodiments of the present invention for achieving the above object, while compiling a source code related to execution of an application into an intermediate expression, context information of each of one or more objects related to the application is included. A first memory device and a second memory device having different data retention characteristics for calculating a performance cost when allocating memory of each of the one or more objects based on profiling information, and each of the one or more objects based on the performance cost Allocates to one of the memory devices and executes the application according to the target code generated based on the intermediate expression.

실시예에 있어서, 상기 제1 메모리 장치는 휘발성 메모리 장치이고, 상기 제2 메모리 장치는 비휘발성 메모리 장치일 수 있다. 상기 제1 메모리 장치는 DRAM이고 상기 제2 메모리 장치는 상변화 메모리 장치일 수 있다.In an embodiment, the first memory device may be a volatile memory device, and the second memory device may be a nonvolatile memory device. The first memory device may be a DRAM and the second memory device may be a phase change memory device.

본 발명의 예시적인 실시예들에 따르면, 어플리케이션의 컴파일링 과정에서 이용되는 또는 생성되는 하나 이상의 객체들 각각을 함수 호출 및 루프 중 적어도 하나에 관계되는 컨텍스트 정보를 포함하는 프로파일링 정보에 기초하여 하나 이상의 객체들 각각의 메모리 할당 시의 성능 비용을 산출하고, 상기 산출된 성능 비용에 따라 상기 하나 이상의 객체들 각각을 제1 메모리 장치 및 제2 메모리 장치에 할당함으로써 서로 다른 종류의 메모리들을 사용하는 시스템에서 어플리케이션을 수정하지 않고, 메모리 할당을 수행하여 성능을 높일 수 있다.According to exemplary embodiments of the present invention, each of one or more objects used or generated during the compilation process of an application is one based on profiling information including context information related to at least one of a function call and a loop. A system that uses different types of memories by calculating a performance cost when allocating memory of each of the above objects and allocating each of the one or more objects to a first memory device and a second memory device according to the calculated performance cost You can increase performance by performing memory allocation without modifying the application.

도 1은 본 발명의 실시예들에 따른 전자 장치를 나타내는 블록도이다.
도 2는 본 발명의 실시예들에 따른 도 1의 컴파일러에서 최적화 모듈의 구성을 나타내는 블록도이다.
도 3은 본 발명의 실시예들에 따른 도 2의 최적화 모듈에서 하나의 패스 모듈의 구성을 나타내는 블록도이다.
도 4는 도 3의 프로파일링 정보에 포함될 수 있는 내용을 나타내는 표이다.
도 5는 본 발명의 실시예들에 따른 도 1의 컴파일러에서 메모리 인터페이스를 나타내는 블록도이다.
도 6은 본 발명의 실시예들에 따른 도 1의 전자 장치에서 런타임 모듈의 구성을 나타내는 블록도이다.
도 7은 도 1의 어플리케이션이 메모리 할당 함수 및 메모리 해제 함수를 호출하는 경우, 컴파일러의 동작을 나타내는 흐름도이다.
도 8은 도 1의 어플리케이션이 메모리 할당 함수를 호출하는 경우 컴파일러의 동작을 나타내는 흐름도이다.
도 9는 도 1의 어플리케이션이 메모리 해체 함수를 호출하는 경우 컴파일러의 동작을 나타내는 흐름도이다.
도 10은 본 발명의 실시예들에 따른 도 1의 메모리 서브 시스템에서 제1 메모리 장치를 나타내는 블록도이다.
도 11은 본 발명의 실시예들에 따른 도 1의 메모리 서브시스템에서 제2 메모리 장치를 나타내는 블록도이다.
도 12는 본 발명의 실시예들에 따른 전자 장치의 컴파일링 방법을 나타내는 흐름도이다.
도 13은 본 발명의 실시예들에 따른 전자 장치의 동작 방법을 나타내는 흐름도이다.
1 is a block diagram illustrating an electronic device according to embodiments of the present invention.
2 is a block diagram showing the configuration of an optimization module in the compiler of FIG. 1 according to embodiments of the present invention.
3 is a block diagram showing the configuration of one pass module in the optimization module of FIG. 2 according to embodiments of the present invention.
4 is a table showing contents that may be included in the profiling information of FIG. 3.
5 is a block diagram illustrating a memory interface in the compiler of FIG. 1 according to embodiments of the present invention.
6 is a block diagram illustrating a configuration of a runtime module in the electronic device of FIG. 1 according to embodiments of the present invention.
7 is a flowchart illustrating an operation of a compiler when the application of FIG. 1 calls a memory allocation function and a memory release function.
8 is a flowchart illustrating an operation of a compiler when the application of FIG. 1 calls a memory allocation function.
9 is a flowchart illustrating an operation of a compiler when the application of FIG. 1 calls a memory release function.
10 is a block diagram illustrating a first memory device in the memory subsystem of FIG. 1 according to example embodiments.
11 is a block diagram illustrating a second memory device in the memory subsystem of FIG. 1 according to example embodiments.
12 is a flowchart illustrating a method of compiling an electronic device according to embodiments of the present invention.
13 is a flowchart illustrating a method of operating an electronic device according to example embodiments.

본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.With respect to the embodiments of the present invention disclosed in the text, specific structural or functional descriptions have been exemplified only for the purpose of describing the embodiments of the present invention, and the embodiments of the present invention may be implemented in various forms. It should not be construed as being limited to the embodiments described in.

본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 구성요소에 대해 사용하였다.In the present invention, various modifications may be made and various forms may be applied, and specific embodiments will be illustrated in the drawings and described in detail in the text. However, this is not intended to limit the present invention to a specific form disclosed, it should be understood to include all changes, equivalents, and substitutes included in the spirit and scope of the present invention. In describing each drawing, similar reference numerals have been used for components.

제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. Terms such as first and second may be used to describe various elements, but the elements should not be limited by the terms. These terms are used only for the purpose of distinguishing one component from another component. For example, without departing from the scope of the present invention, a first element may be referred to as a second element, and similarly, a second element may be referred to as a first element.

어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. When a component is referred to as being "connected" or "connected" to another component, it is understood that it may be directly connected or connected to the other component, but other components may exist in the middle. Should be. On the other hand, when a component is referred to as being "directly connected" or "directly connected" to another component, it should be understood that there is no other component in the middle.

본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terms used in the present application are only used to describe specific embodiments, and are not intended to limit the present invention. Singular expressions include plural expressions unless the context clearly indicates otherwise. In the present application, terms such as "comprise" or "have" are intended to designate the presence of a set feature, number, step, action, component, part, or combination thereof, and one or more other features or numbers It is to be understood that the possibility of addition or presence of, steps, actions, components, parts, or combinations thereof is not preliminarily excluded.

다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다. Unless otherwise defined, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art to which the present invention belongs. Terms as defined in a commonly used dictionary should be interpreted as having a meaning consistent with the meaning in the context of the related technology, and should not be interpreted as an ideal or excessively formal meaning unless explicitly defined in this application. Does not.

이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.Hereinafter, preferred embodiments of the present invention will be described in more detail with reference to the accompanying drawings. The same reference numerals are used for the same elements in the drawings, and duplicate descriptions for the same elements are omitted.

도 1은 본 발명의 실시예들에 따른 전자 장치를 나타내는 블록도이다.1 is a block diagram illustrating an electronic device according to embodiments of the present invention.

도 1을 참조하면, 전자 장치(또는 사용자 단말, 10)은 컴파일러(100), 런타임 모듈(300) 및 메모리 서브 시스템(350)을 포함할 수 있다.Referring to FIG. 1, an electronic device (or user terminal) 10 may include a compiler 100, a runtime module 300, and a memory subsystem 350.

컴파일러(100)는 어플이케이션(20)의 실행과 관련된 소스 코드(SCD)를 중간 표현으로 컴파일하고, 상기 중간 표현에 기초하여 타겟 코드(TCD)를 생성하여 타겟 코드(TCD)를 런타임 모듈(300)에 제공할 수 있다. The compiler 100 compiles the source code (SCD) related to the execution of the application 20 into an intermediate expression, generates a target code (TCD) based on the intermediate expression, and converts the target code (TCD) into a runtime module ( 300) can be provided.

컴파일러(100)는 또한 어플이케이션(20)과 관련된 하나 이상의 객체들(31, 33, 35, 35, 37) 각각의 컨텍스트 정보를 포함하는 프로파일링 정보(OUPI)에 기초하여 하나 이상의 객체들(31, 33, 35, 37) 각각의 메모리 할당 시의 성능 비용을 산출하고, 상기 성능 비용에 기초하여 하나 이상의 객체들(31, 33, 35, 37) 각각을 메모리 서브 시스템(350)의 제1 메모리 장치(400) 및 제2 메모리 장치(500) 중 하나에 할당할 수 있다. The compiler 100 also includes one or more objects based on profiling information (OUPI) including context information of each of the one or more objects 31, 33, 35, 35, 37 related to the application 20. 31, 33, 35, 37) calculates a performance cost when allocating memory, and assigns each of the one or more objects 31, 33, 35, 37 to the first of the memory subsystem 350 based on the performance cost. It may be allocated to one of the memory device 400 and the second memory device 500.

런타임 모듈(300)은 타겟 코드(TCD)를 수신하고, 타겟 코드(TCD)에 기초하여 어플리케이션(20)을 실행시킬 수 있다.The runtime module 300 may receive the target code TCD and execute the application 20 based on the target code TCD.

메모리 서브 시스템(350)은 제1 메모리 장치(400) 및 제2 메모리 장치(500)를 포함할 수 있다. The memory subsystem 350 may include a first memory device 400 and a second memory device 500.

제1 메모리 장치(400)는 휘발성 메모리 장치로서 DRAM일 수 있다. 제2 메모리 장치(500)는 비휘발성 메모리 장치로서 상변화 메모리 장치일 수 있다. 제1 메모리 장치(400) 및 제2 메모리 장치(500) 각각의 구성과 동작에 대하여는 도 10 및 도 11을 참조하여 상세하게 설명된다. The first memory device 400 is a volatile memory device and may be a DRAM. The second memory device 500 is a nonvolatile memory device and may be a phase change memory device. The configuration and operation of each of the first and second memory devices 400 and 500 will be described in detail with reference to FIGS. 10 and 11.

컴파일러(100)는 프런트엔드 모듈(110), 최적화 모듈(200) 및 백엔드 모듈(170)을 포함할 수 있다. 컴파일러(100)는 또한 메모리 인터페이스(190)를 더 포함할 수 있다.The compiler 100 may include a frontend module 110, an optimization module 200 and a backend module 170. The compiler 100 may also include a memory interface 190.

프런트엔드 모듈(110)은 소스 코드(SCD)를 초기 중간 표현(IIR)로 컴파일한다. 최적화 모듈(200)은 초기 중간 표현(IIR)을 최종 중간 표현(OIR)으로 컴파일하고, 프로파일링 정보(OUPI)에 기초하여 하나 이상의 객체들(31, 33, 35, 35, 37) 각각의 성능 비용을 산출하고, 상기 성능 비용에 기초하여 하나 이상의 객체들(31, 33, 35, 35, 37) 각각을 제1 메모리 장치(400) 및 제2 메모리 장치(500) 중 하나에 할당한다.The frontend module 110 compiles the source code (SCD) into an initial intermediate representation (IIR). The optimization module 200 compiles the initial intermediate expression (IIR) into a final intermediate expression (OIR), and performs performance of each of the one or more objects 31, 33, 35, 35, 37 based on the profiling information (OUPI). A cost is calculated, and each of the one or more objects 31, 33, 35, 35, and 37 is allocated to one of the first memory device 400 and the second memory device 500 based on the performance cost.

상기 프로파일링 정보(OUPI)는 어플리케이션(20)이 수행될 때 호출되는 함수의 호출 경로 및 루프에 관련된 정보를 포함하는 컨텍스트 정보에 기초한 상기 하나 이상의 객체들(31, 33, 35, 35, 37) 각각이 할당받는 메모리의 사이즈 정보 및 로드/저장 횟수 정보를 포함할 수 있다.The profiling information (OUPI) is the one or more objects (31, 33, 35, 35, 37) based on context information including information related to a call path and loop of a function called when the application 20 is executed. Each may include information on the size of the allocated memory and information on the number of times of loading/storing.

최적화 모듈(200)은 상기 프로파일링 정보(OUPI)에 기초하여 상기 하나 이상의 객체들(31, 33, 35, 35, 37)의 메모리 할당 시 어플리케이션(20)의 성능에 기초하여 상기 성능 비용을 산출할 수 있다. 즉 최적화 모듈(200)은 메모리 할당 시의 어플리케이션의 성능 저하에 비례하여 성능 비용을 높게 산출할 수 있다. 최적화 모듈은 상기 성능 비용이 감소되도록 상기 메모리 할당을 수행할 수 있다.The optimization module 200 calculates the performance cost based on the performance of the application 20 when allocating the memory of the one or more objects 31, 33, 35, 35, 37 based on the profiling information (OUPI) can do. That is, the optimization module 200 may calculate a high performance cost in proportion to the performance degradation of the application during memory allocation. The optimization module may perform the memory allocation so that the performance cost is reduced.

백엔드 모듈(170)은 최종 중간 표현(OIR)에 기초하여 타겟 코드(TCD)를 생성하고, 생성된 타겟 코드(TCD)를 런타임 모듈(300)에 제공할 수 있다.The backend module 170 may generate a target code TCD based on the final intermediate expression OIR, and may provide the generated target code TCD to the runtime module 300.

메모리 인터페이스(190)는 최적화 모듈(200)과 연결되고, 제1 메모리 장치(400) 및 제2 메모리 장치(500)에 연결되어 하나 이상의 객체들(31, 33, 35, 37) 각각을 제1 메모리 장치(400) 및 제2 메모리 장치(500) 중 하나에 제공할 수 있다. 메모리 인터페이스(190)는 제1 경로(181)를 통하여 제1 메모리 장치(400)와 연결되고, 제2 경로(183)를 통하여 제2 메모리 장치(500)와 연결될 수 있다.The memory interface 190 is connected to the optimization module 200 and is connected to the first memory device 400 and the second memory device 500 so that each of the one or more objects 31, 33, 35, and 37 It may be provided to one of the memory device 400 and the second memory device 500. The memory interface 190 may be connected to the first memory device 400 through a first path 181 and may be connected to the second memory device 500 through a second path 183.

상기 컴파일러(100)는 LLVM(http://llvm.org/)과 같은 컴파일러 기반구조(infrastructure)를 가질 수 있다. 상기 컴파일러(100)는 C 또는 C++과 같은 언어로 작성된 어플리케이션 소스 코드(SCD)를 수신한다. The compiler 100 may have a compiler infrastructure such as LLVM (http://llvm.org/). The compiler 100 receives an application source code (SCD) written in a language such as C or C++.

프런트엔드 모듈(110)은 소스 코드(SCD)를 컴파일러(100)가 이해할 수 있는 중간 코드(intermediate code)로 변경한다. 상기 중간 코드는 중간 표현(IR; intermediate representation)이라 호칭될 수 있다. The front-end module 110 changes the source code (SCD) to an intermediate code that the compiler 100 can understand. The intermediate code may be referred to as an intermediate representation (IR).

백엔드 모듈(170)은 최종 중간 표현(OIR)을 컴파일하여 런타임 모듈(300)에서 실행가능한 바이너리의 타겟 코드(또는 실행 코드, TCD)를 생성한다.The backend module 170 compiles the final intermediate expression (OIR) to generate a target code (or executable code, TCD) of a binary executable in the runtime module 300.

도 2는 본 발명의 실시예들에 따른 도 1의 컴파일러에서 최적화 모듈의 구성을 나타내는 블록도이다.2 is a block diagram showing the configuration of an optimization module in the compiler of FIG. 1 according to embodiments of the present invention.

도 2를 참조하면, 최적화 모듈(200)은 하나 이상의 패스 모듈들(210, 260)을 포함할 수 있다. Referring to FIG. 2, the optimization module 200 may include one or more pass modules 210 and 260.

도 2에서는 최적화 모듈(200)이 두 개의 패스 모듈들(210, 260)을 포함하는 경우를 설명하였으나, 패스 모듈의 수는 프로그래머에 의하여 변경 가능하다,In FIG. 2, a case where the optimization module 200 includes two pass modules 210 and 260 has been described, but the number of pass modules can be changed by a programmer.

패스 모듈(210)은 초기 중간 표현(IIR)에 대하여 최적화를 수행하여 제1 중간 표현(IR1)을 생성하고, 패스 모듈(260)은 제1 중간 표현(IR1)에 대하여 최적화를 수행하여 최종 중간 표현(OIR)을 생성한다. The pass module 210 optimizes the initial intermediate expression (IIR) to generate a first intermediate expression (IR1), and the pass module 260 optimizes the first intermediate expression (IR1) to obtain a final intermediate expression. Generate the representation (OIR).

하나 이상의 패스 모듈들(210, 260) 중 적어도 하나는 상술한 성능 비용을 산출하여 하나 이상의 객체들(31, 33, 35, 35, 37) 각각에 대한 메모리 할당을 수행할 수 있다.At least one of the one or more pass modules 210 and 260 may perform memory allocation for each of the one or more objects 31, 33, 35, 35, and 37 by calculating the above-described performance cost.

도 3은 본 발명의 실시예들에 따른 도 2의 최적화 모듈에서 하나의 패스 모듈의 구성을 나타내는 블록도이다.3 is a block diagram showing the configuration of one pass module in the optimization module of FIG. 2 according to embodiments of the present invention.

도 3을 참조하면, 패스 모듈(210)은 할당 히스토리 기록 모듈(220), 참조 히스토리 기록 모듈(230), 해제 히스토리 기록 모듈(240) 및 프로파일 정보 생성 모듈(245)를 포함할 수 있다.Referring to FIG. 3, the pass module 210 may include an allocation history recording module 220, a reference history recording module 230, a release history recording module 240, and a profile information generation module 245.

할당 히스토리 기록 모듈(220)은 하나 이상의 객체들(31, 33, 35, 35, 37) 각각에 대하여 메모리 할당 요청이 호출되는 경우, 상기 메모리 할당 요청의 시점과 관련된 제1 타임 스탬프(TP1), 상기 메모리 할당 요청과 관련된 객체의 식별자(OID1), 할당된 메모리의 어드레스(ADDR1) 및 할당된 메모리의 크기 정보(SZ11)를 기록/저장할 수 있다.When a memory allocation request is called for each of the one or more objects 31, 33, 35, 35, 37, the allocation history recording module 220 includes a first time stamp TP1 related to the time point of the memory allocation request, The object identifier OID1, the allocated memory address ADDR1, and the allocated memory size information SZ11 related to the memory allocation request may be recorded/stored.

참조 히스토리 기록 모듈(230)은 상기 객체가 할당 받은 메모리 영역에 대하여 상기 어플리케이션에(20)서 로드/저장의 참조가 발생하는 경우, 상기 객체에 대하여 참조가 발생한 시점과 관련된 제2 타임 스탬프(TP2), 상기 객체의 식별자 정보(OID2), 상기 참조의 유형(RT) 및 상기 객체로의 참조가 발생한 횟수(RN)를 기록/저장할 수 있다.When a load/store reference occurs in the application 20 with respect to the memory area allocated to the object, the reference history recording module 230 performs a second time stamp (TP2) related to the time when the reference occurs to the object. ), the object identifier information (OID2), the type of reference (RT), and the number of times the reference to the object occurs (RN) may be recorded/stored.

해제 히스토리 기록 모듈(240)은 상기 객체의 사용이 완료된 경우, 상기 객체에 할당된 메모리 영역의 할당을 해제하고, 메모리 할당 해제 요청의 시점과 관련된 제3 타임 스탬프(TP3), 상기 할당을 해제한 상기 객체의 식별자 정보(OID3) 및 상기 할당이 해제된 메모리의 크기 정보(SZ31)를 기록/저장할 수 있다.When the use of the object is completed, the release history recording module 240 releases the allocation of the memory area allocated to the object, and releases a third time stamp (TP3) related to the time of the memory allocation release request, and releases the allocation. The object identifier information (OID3) and the allocated memory size information (SZ31) may be recorded/stored.

프로파일링 정보 생성 모듈(245)은 할당 히스토리 기록 모듈(220), 참조 히스토리 기록 모듈(230) 및 해제 히스토리 기록 모듈(240) 각각에 저장된 정보를 별도의 파일로 저장하고, 상기 저장된 정보를 프로파일링 정보(OUPI)로 제공할 수 있다. The profiling information generation module 245 stores information stored in each of the allocation history recording module 220, the reference history recording module 230, and the release history recording module 240 as separate files, and profils the stored information. It can be provided as information (OUPI).

도 4는 도 3의 프로파일링 정보에 포함될 수 있는 내용을 나타내는 표이다.4 is a table showing contents that may be included in the profiling information of FIG. 3.

도 4를 참조하면, 하나 이상의 객체들(31, 33, 35, 37)은 각각 컨텍스트 정보에 따라 서로 다른 식별자 정보들(OID11, OID12, OID13, OID14)을 부여받을 수 있다. Referring to FIG. 4, one or more objects 31, 33, 35, and 37 may each receive different identifier information OID11, OID12, OID13, and OID14 according to context information.

객체(31)는 할당 받는 메모리 사이즈 정보(SZ1)와 로드/저장의 횟수(LD/ST_N1)를 프로파일링 정보(OUPI)로 가질 수 있다. 객체(32)는 할당 받는 메모리 사이즈 정보(SZ2)와 로드/저장의 횟수(LD/ST_N2)를 프로파일링 정보(OUPI)로 가질 수 있다. 객체(35)는 할당 받는 메모리 사이즈 정보(SZ3)와 로드/저장의 횟수(LD/ST_N3)를 프로파일링 정보(OUPI)로 가질 수 있다. 객체(37)는 할당 받는 메모리 사이즈 정보(SZ4)와 로드/저장의 횟수(LD/ST_N4)를 프로파일링 정보(OUPI)로 가질 수 있다.The object 31 may have the allocated memory size information SZ1 and the number of load/store times LD/ST_N1 as profiling information OUPI. The object 32 may have memory size information (SZ2) to be allocated and the number of load/store times (LD/ST_N2) as profiling information (OUPI). The object 35 may have memory size information SZ3 to be allocated and the number of times of load/storage (LD/ST_N3) as profiling information (OUPI). The object 37 may have the allocated memory size information SZ4 and the number of load/store times LD/ST_N4 as profiling information OUPI.

도 5는 본 발명의 실시예들에 따른 도 1의 컴파일러에서 메모리 인터페이스를 나타내는 블록도이다.5 is a block diagram illustrating a memory interface in the compiler of FIG. 1 according to embodiments of the present invention.

도 5를 참조하면, 메모리 인터페이스(190)는 제1 라이브러리(191) 및 제2 라이브러리(193)를 포함할 수 있다.Referring to FIG. 5, the memory interface 190 may include a first library 191 and a second library 193.

제1 라이브러리(191)는 제1 메모리 장치(400)에 대한 리퀘스트를 처리하는 glibc 라이브러리일 수 있고, 제1 메모리 장치(400)에 대한 할당을 처리하는 라이브러리 함수일 수 있다.The first library 191 may be a glibc library that processes a request for the first memory device 400, or may be a library function that processes an allocation for the first memory device 400.

제2 라이브러리(193)는 제1 메모리 장치(500)에 대한 리퀘스트를 처리하는 pmem 라이브러리일 수 있고, 제2 메모리 장치(500)에 대한 할당을 처리하는 라이브러리 함수일 수 있다.The second library 193 may be a pmem library that processes a request for the first memory device 500 or a library function that processes allocation for the second memory device 500.

도 6은 본 발명의 실시예들에 따른 도 1의 전자 장치에서 런타임 모듈의 구성을 나타내는 블록도이다.6 is a block diagram illustrating a configuration of a runtime module in the electronic device of FIG. 1 according to embodiments of the present invention.

도 6을 참조하면, 런타임 모듈(300)은 장치 모니터(310) 및 스케쥴러(320), 컴파일러 런타임 모듈(330)을 포함할 수 있다. 런타임 모듈(300)은 선택적으로 OS(operation system) 레벨의 추가적인 API 모듈(340) 또는 GPU 구동을 위한 OpenCL 드라이버 모듈(350)을 더 포함할 수도 있다. Referring to FIG. 6, the runtime module 300 may include a device monitor 310, a scheduler 320, and a compiler runtime module 330. The runtime module 300 may optionally further include an additional API module 340 at an operation system (OS) level or an OpenCL driver module 350 for driving a GPU.

스케쥴러(320)는 타겟 코드(TCD)읠 실행 전에 전자 장치(10)에 포함되는 연산 디바이스들의 상태를 확인하기 위하여 장치 모니터(310)를 시스템 소프트웨어의 서비스 형태로 이용하여 연산 디바이스들의 상태 정보를 컴파일러 런타임 모듈(330)과 통신할 수 있다.The scheduler 320 uses the device monitor 310 as a service type of the system software to check the status of the computing devices included in the electronic device 10 before executing the target code (TCD), and uses the device monitor 310 as a service type of the system software to compile the status information of the computing devices. It can communicate with the runtime module 330.

스케쥴러(320)는 상기 상태 정보를 이용하여 연산 디바이스들에 할당될 효율적인 워크로드 값을 결정하고, 상기 결정된 워크로드에 따라서 타겟 코드(TCD)를 연산 디바이스들에 구동시킨다.The scheduler 320 determines an efficient workload value to be allocated to the computing devices by using the state information, and drives the target code TCD to the computing devices according to the determined workload.

컴파일러 런타임 모듈(330)은 컴파일러 런타임 라이브러리를 제공한다. 상기 컴파일러 런타임 라이브러리는 컴파일러(100)와 밀접하게 연동하여 상기 스케줄러(320)가 상기 어플리케이션(20)의 타겟 코드(TCD)를 구동할 수 있게 한다.The compiler runtime module 330 provides a compiler runtime library. The compiler runtime library closely interlocks with the compiler 100 so that the scheduler 320 can drive the target code TCD of the application 20.

도 7은 도 1의 어플리케이션이 메모리 할당 함수 및 메모리 해제 함수를 호출하는 경우, 컴파일러의 동작을 나타내는 흐름도이다.7 is a flowchart illustrating an operation of a compiler when the application of FIG. 1 calls a memory allocation function and a memory release function.

도 1 내지 도 5 및 도 7을 참조하면, 도 1의 어플리케이션(20)이 메모리 할당 함수를 호출하는 경우, 도 2의 패스 모듈(210)은 프로파일링 정보(OUPI)에 기초하여 상기 하나 이상이 객체들(31, 33, 35, 37) 각각의 상기 메모리 할당 시의 상기 성능 비용을 추정(산출)하고(S110), 상기 성능 비용에 기초하여 상기 어플리케이션(20) 전체에 할당된 그리고 할당이 요청된 객체들 모두에 대하여 할당할 메모리 종류를 결정하고(S120), 상기 결정된 메모리 종류에 따라 상기 하나 이상의 객체들 각각(31, 33, 35, 37)을 상기 제1 메모리 장치(400) 및 상기 제2 메모리 장치(500) 중 하나로 할당한다(S130). 1 to 5 and 7, when the application 20 of FIG. 1 calls the memory allocation function, the pass module 210 of FIG. 2 is configured to determine the one or more based on profiling information (OUPI). Estimating (calculating) the performance cost at the time of allocating the memory of each of the objects 31, 33, 35, 37 (S110), allocated to the entire application 20 based on the performance cost, and requested the allocation A memory type to be allocated to all of the objects is determined (S120), and each of the one or more objects 31, 33, 35, 37 is assigned to the first memory device 400 and the first memory type according to the determined memory type. 2 It is allocated to one of the memory devices 500 (S130).

실시예에 따라서, 패스 모듈(210)은 상기 성능 비용에 기초하여 미리 할당된 객체를 다른 타입의 메모리 장치로 재배치할 수 있다. According to an exemplary embodiment, the pass module 210 may rearrange an object allocated in advance based on the performance cost to another type of memory device.

도 8은 도 1의 어플리케이션이 메모리 할당 함수를 호출하는 경우 컴파일러의 동작을 나타내는 흐름도이다.8 is a flowchart illustrating an operation of a compiler when the application of FIG. 1 calls a memory allocation function.

도 1 내지 도 5 및 도 8을 참조하면, 도 1의 어플리케이션(20)이 메모리 할당 함수를 호출하는 경우, 도 2의 패스 모듈(210)은 프로파일링 정보(OUPI)에 기초하여 상기 하나 이상이 객체들(31, 33, 35, 37) 각각의 상기 메모리 할당 시의 상기 성능 비용을 추정(산출)하고(S210), 상기 성능 비용에 기초하여 상기 어플리케이션(20) 전체에 할당된 그리고 할당이 요청된 객체들 모두에 대하여 할당할 메모리 종류를 결정하고(S220), 상기 결정된 메모리 종류에 따라 상기 하나 이상의 객체들 각각(31, 33, 35, 37)을 상기 제1 메모리 장치(400) 및 상기 제2 메모리 장치(500) 중 하나로 할당한다(S240). 실시예에 따라서, 패스 모듈(210)은 상기 성능 비용에 기초하여 미리 할당된 객체를 다른 타입의 메모리 장치로 재배치할 수 있다(S230).Referring to FIGS. 1 to 5 and 8, when the application 20 of FIG. 1 calls a memory allocation function, the pass module 210 of FIG. 2 includes the one or more values based on profiling information (OUPI). Estimating (calculating) the performance cost at the time of allocating the memory of each of the objects 31, 33, 35, 37 (S210), allocated to the entire application 20 based on the performance cost, and requested the allocation A memory type to be allocated to all of the objects is determined (S220), and each of the one or more objects 31, 33, 35, 37 is assigned to the first memory device 400 and the first memory type according to the determined memory type. 2 It is allocated to one of the memory devices 500 (S240). According to an embodiment, the pass module 210 may rearrange the object allocated in advance based on the performance cost to another type of memory device (S230).

도 9는 도 1의 어플리케이션이 메모리 해체 함수를 호출하는 경우 컴파일러의 동작을 나타내는 흐름도이다.9 is a flowchart illustrating an operation of a compiler when the application of FIG. 1 calls a memory release function.

도 1 내지 도 5 및 도 9를 참조하면, 도 1의 어플리케이션(20)이 메모리 해제 함수를 호출하는 경우, 도 2의 패스 모듈(210)은 메모리 해제가 요청된 객체의 메모리 할당을 해제하고(S310), 프로파일링 정보(OUPI)에 기초하여 현재 할당된 객체들의 성능 비용을 재추정(산출)하고(S320), 상기 재산출된 성능 비용에 기초하여 상기 현재 할당된 객체들의 배치를 판단할 수 있다(S330). 실시예에 따라서, 패스 모듈(210)은 상기 재산출된 성능 비용에 기초하여 상기 현재 할당된 객체들을 재배치하여 어플리케이션(20)의 성능을 향상시킬 수 있다(S340).1 to 5 and 9, when the application 20 of FIG. 1 calls the memory release function, the pass module 210 of FIG. 2 releases the memory allocation of the object for which memory release is requested ( S310), the performance cost of currently allocated objects is reestimated (calculated) based on profiling information (OUPI) (S320), and the arrangement of the currently allocated objects may be determined based on the recalculated performance cost. Yes (S330). According to an embodiment, the pass module 210 may improve the performance of the application 20 by rearranging the currently allocated objects based on the recalculated performance cost (S340).

도 10은 본 발명의 실시예들에 따른 도 1의 메모리 서브 시스템에서 제1 메모리 장치를 나타내는 블록도이다.10 is a block diagram illustrating a first memory device in the memory subsystem of FIG. 1 according to example embodiments.

도 10에서는 제1 메모리 장치(400)가 DRAM으로 구현되는 경우를 가정한다.In FIG. 10, it is assumed that the first memory device 400 is implemented as a DRAM.

도 10을 참조하면, DRAM으로 구현되는 제1 메모리 장치(400)는 커맨드/어드레스 입력 버퍼(410), 제어 로직 회로(420), 뱅크 제어 로직(430A~430D), 메모리 셀 어레이(440A-440D), 기입 드라이버 및 데이터 입출력 센스 앰프부들(450A~450D), ECC 엔진들(460A~460D), 입출력 데이터 버퍼(470) 및 입출력 회로(480)를 포함한다.Referring to FIG. 10, a first memory device 400 implemented as a DRAM includes a command/address input buffer 410, a control logic circuit 420, bank control logics 430A to 430D, and memory cell arrays 440A to 440D. ), write driver and data input/output sense amplifier units 450A to 450D, ECC engines 460A to 460D, input/output data buffer 470, and input/output circuit 480.

메모리 셀 어레이(440A~440D)는 복수개의 메모리 셀들이 행들 및 열들로 배열되는 제1 내지 제4 뱅크 어레이들(440A~440D)을 포함할 수 있다. 제1 내지 제4 뱅크 어레이들(440A~440D) 각각에는 메모리 셀들과 연결되는 워드라인들과 비트라인들을 선택하는 로우 디코더와 칼럼 디코더가 연결될 수 있다. The memory cell arrays 440A to 440D may include first to fourth bank arrays 440A to 440D in which a plurality of memory cells are arranged in rows and columns. A row decoder and a column decoder for selecting word lines and bit lines connected to memory cells may be connected to each of the first to fourth bank arrays 440A to 440D.

커맨드/어드레스 입력 버퍼(410)는 외부로부터 수신되는 클럭 신호(CLK)과 커맨드(CMD) 및 어드레스(ADDR)를 수신할 수 있다. 커맨드(CMD)와 어드레스(ADDR)는 동일한 단자들, 이른바 CA 패드들을 통하여 입력될 수 있다. CA 패드들을 통하여 커맨드(CMD)와 어드레스(ADDR)가 순차적으로 입력될 수 있다. The command/address input buffer 410 may receive a clock signal CLK, a command CMD, and an address ADDR received from the outside. The command CMD and the address ADDR may be input through the same terminals, so-called CA pads. Command CMD and address ADDR may be sequentially input through CA pads.

제어 로직 회로(420)는 커맨드/어드레스 입력 버퍼(410)를 통해 수신되는 커맨드(CMD)와 어드레스(ADDR)를 수신하여, 내부 커맨드(ICMD) 및 어드레스 신호를 발생할 수 있다. 내부 커맨드(ICMD)는 내부 독출 커맨드와 내부 기입 커맨드를 포함할 수 있다. 어드레스 신호는 뱅크 어드레스(BA), 로우 어드레스(RA) 및 칼럼 어드레스(CA)를 포함할 수 있다. 내부 커맨드(ICMD)와 어드레스 신호(BA/RA/CA)는 뱅크 제어 로직들(430A~430D)로 제공될 수 있다. 즉, 제어 로직 회로(420)는 메모리 셀 어레이(440A~440D)에 대한 액세스를 제어할 수 있다.The control logic circuit 420 may receive a command CMD and an address ADDR received through the command/address input buffer 410 and generate an internal command ICMD and an address signal. The internal command ICMD may include an internal read command and an internal write command. The address signal may include a bank address BA, a row address RA, and a column address CA. The internal command ICMD and the address signals BA/RA/CA may be provided to the bank control logics 430A to 430D. That is, the control logic circuit 420 may control access to the memory cell arrays 440A to 440D.

제어 로직 회로(420)는 커맨드 디코더(421) 및 모드 레지스터(422)를 포함할 수 있다. 커맨드 디코더(421)는 커맨드(CMD)를 디코딩하여 내부 커맨드(ICMD)를 생성할 수 있고, 모드 레지스터(222)는 커맨드(CMD)와 어드레스(ADDR)에 기초하여 제1 메모리 장치(400)의 동작 모드를 설정할 수 있다. The control logic circuit 420 may include a command decoder 421 and a mode register 422. The command decoder 421 may decode the command CMD to generate an internal command ICMD, and the mode register 222 may generate an internal command ICMD of the first memory device 400 based on the command CMD and the address ADDR. You can set the operation mode.

뱅크 제어 로직들(430A~430D) 각각은 뱅크 어드레스(BA)에 상응하여 활성화될 수 있다. 활성화된 뱅크 제어 로직들(430A~430D)는 내부 커맨드(ICMD)와 로우 어드레스(RA) 및 칼럼 어드레스(CA)에 응답하여 뱅크 제어 신호들을 생성할 수 있다. 뱅크 제어 신호에 응답하여, 활성화된 뱅크 제어 로직들(430A~430D)와 연결되는 제1 내지 제4 뱅크 어레이들(440A~440D)의 로우 디코더와 칼럼 디코더가 활성화될 수 있다.Each of the bank control logics 430A to 430D may be activated corresponding to the bank address BA. The activated bank control logics 430A to 430D may generate bank control signals in response to an internal command ICMD, a row address RA, and a column address CA. In response to the bank control signal, a row decoder and a column decoder of the first to fourth bank arrays 440A to 440D connected to the activated bank control logics 430A to 430D may be activated.

제1 내지 제4 뱅크 어레이들(440A~440D)의 로우 디코더는 로우 어드레스(RA)를 디코딩하여 로우 어드레스(RA)에 상응하는 워드라인을 인에이블시킬 수 있다. 제1 내지 제4 뱅크 어레이들(440A~440D)의 칼럼 어드레스(CA)는 칼럼 어드레스 래치에 일시적으로 저장될 수 있다. 칼럼 어드레스 래치는 버스트 모드에서 칼럼 어드레스(CA)를 점진적으로 증가시킬 수 있다. 일시적으로 저장된 또는 점진적으로 증가된 칼럼 어드레스(CA)는 칼럼 디코더로 제공될 수 있다. 칼럼 디코더는 칼럼 어드레스(CA)를 디코딩하여 칼럼 어드레스(CA)에 상응하는 칼럼 선택 신호(CSL)를 활성화시킬 수 있다.The row decoder of the first to fourth bank arrays 440A to 440D may enable a word line corresponding to the row address RA by decoding the row address RA. The column addresses CA of the first to fourth bank arrays 440A to 440D may be temporarily stored in the column address latch. The column address latch may gradually increase the column address CA in the burst mode. The temporarily stored or gradually increased column address CA may be provided to the column decoder. The column decoder may decode the column address CA to activate the column selection signal CSL corresponding to the column address CA.

뱅크 제어 로직들(430A~430D) 각각은 뱅크 제어 신호에 응답하여 제1 내지 제4 뱅크 어레이들(440A~440D)과 연결되는 ECC 엔진들(460A~460D)의 동작을 제어하는 ECC 인코딩 신호(ENC)와 ECC 디코딩 신호(DEC)를 발생할 수 있다. Each of the bank control logics 430A to 430D is an ECC encoding signal that controls the operation of the ECC engines 460A to 460D connected to the first to fourth bank arrays 440A to 440D in response to the bank control signal ( ENC) and ECC decoding signal (DEC) can be generated.

기입 드라이버 및 데이터 입출력 센스 앰프부들(450A~450D)는 제1 내지 제4 뱅크 어레이들(440A~440D) 각각에서 출력되는 독출 데이터(DTA)를 감지 증폭하고, 제1 내지 제4 뱅크 어레이들(440A~440D) 각각에 저장될 기입 데이터(DTA)를 전달할 수 있다.The write driver and data input/output sense amplifier units 450A to 450D sense and amplify the read data DTA output from each of the first to fourth bank arrays 440A to 440D, and the first to fourth bank arrays ( Write data DTA to be stored in each of 440A to 440D may be delivered.

ECC 엔진들(460A~460D)은 기입 동작 시, 뱅크 제어 로직들(430A~430D)에서 출력되는 ECC 인코딩 신호(ENC)에 응답하여 제1 내지 제4 뱅크 어레이들(440A~440D) 각각에 저장될 기입 데이터(DTA)에 대해 ECC 인코딩 동작을 수행하여 패리티 비트들을 생성할 수 있다.During the write operation, the ECC engines 460A to 460D store in each of the first to fourth bank arrays 440A to 440D in response to the ECC encoding signal ENC output from the bank control logics 430A to 430D. Parity bits may be generated by performing an ECC encoding operation on the to-be-write data DTA.

ECC 엔진들(460A~460D)은 독출 동작시, 뱅크 제어 로직들(430A~430D)에서 출력되는 ECC 디코딩 신호(DEC)에 응답하여 제1 내지 제4 뱅크 어레이들(440A~440D) 각각에서 독출되는 데이터(DTA)와 패리티 비트들을 이용하여 ECC 디코딩 동작을 수행하여 독출 데이터에 발생된 에러 비트를 검출/정정할 수 있다.During the read operation, the ECC engines 460A to 460D read from each of the first to fourth bank arrays 440A to 440D in response to the ECC decoding signal DEC output from the bank control logics 430A to 430D. An ECC decoding operation may be performed using the data DTA and parity bits to detect/correct an error bit generated in the read data.

입출력 데이터 버퍼(470)는 제1 내지 제4 뱅크 어레이들(440A~440D)로/로부터 입출력되는 데이터(DTA)를 게이팅하는 회로들과 함께, 제1 내지 제4 뱅크 어레이들(440A~440D)로부터 출력된 데이터를 저장하기 위한 독출 데이터 래치들과 제1 내지 제4 뱅크 어레이들(440A~440D)에 데이터를 기입하기 위한 기입 데이터 래치들을 포함할 수있다.The input/output data buffer 470 includes circuits for gating data DTA input/output to/from the first to fourth bank arrays 440A to 440D, and the first to fourth bank arrays 440A to 440D. It may include read data latches for storing the data output from and write data latches for writing data to the first to fourth bank arrays 440A to 440D.

입출력 데이터 버퍼(470)는 독출 데이터 래치들을 통하여 제1 내지 제4 뱅크 어레이들(440A~440D)로부터 출력되는 병렬 데이터 비트들을 직렬 데이터 비트들로 변환할 수 있다. 입출력 데이터 버퍼(470)는 기입 데이터 래치를 이용하여 직렬하게 수신되는 기입 데이터를 병렬 데이터 비트들로 변환할 수 있다. The input/output data buffer 470 may convert parallel data bits output from the first to fourth bank arrays 440A to 440D into serial data bits through read data latches. The input/output data buffer 470 may convert serially received write data into parallel data bits using a write data latch.

입출력 회로(480)는 입출력 데이터 버퍼(470)에서 출력되는 직렬 데이터 비트들을 수신하고, 버스트 길이에 대응하는 데이터 비트들(DQs)로 순차 배열하여 데이터 입출력 패드들로 출력할 수 있다. 입출력 회로(480)는 직렬하게 수신된 버스트 길이의 기입 데이터를 입출력 데이터 버퍼(470)로 제공할 수 있다.The input/output circuit 480 may receive serial data bits output from the input/output data buffer 470, sequentially arrange data bits DQs corresponding to the burst length, and output them to data input/output pads. The input/output circuit 480 may provide serially received write data having a burst length to the input/output data buffer 470.

도 11은 본 발명의 실시예들에 따른 도 1의 메모리 서브시스템에서 제2 메모리 장치를 나타내는 블록도이다.11 is a block diagram illustrating a second memory device in the memory subsystem of FIG. 1 according to example embodiments.

도 11에서는 제2 메모리 장치(500)가 상변화 메모리 장치로 구현되는 경우를 가정한다.In FIG. 11, it is assumed that the second memory device 500 is implemented as a phase change memory device.

도 11을 참조하면, 상변화 메모리 장치 구현되는 제2 메모리 장치(500)는 메모리 셀 어레이(510), 기입/독출 회로(540) 및 제어 회로(550)를 포함할 수 있다. 또한, 제2 메모리 장치(500)는 로우 디코더(510), 칼럼 디코더(530), 전압 생성기(570) 및 기준 신호 생성기(560)를 더 포함할 수 있다. 또한, 기입/독출 회로(540)는 기입 드라이버(541), 센스 앰프(542), 기입 버퍼(543), 페이지 버퍼(544) 및 베리파이 회로(545)를 포함할 수 있다. Referring to FIG. 11, a second memory device 500 implemented as a phase change memory device may include a memory cell array 510, a write/read circuit 540, and a control circuit 550. Further, the second memory device 500 may further include a row decoder 510, a column decoder 530, a voltage generator 570, and a reference signal generator 560. Also, the write/read circuit 540 may include a write driver 541, a sense amplifier 542, a write buffer 543, a page buffer 544, and a verify circuit 545.

메모리 셀 어레이(510)에 구비되는 메모리 셀들은 워드라인들(WL) 및 비트라인들(BL)에 연결될 수 있다. 비트 라인들(BL) 및 워드 라인들(WL)을 통해 각종 전압 신호나 전류 신호가 제공됨에 따라, 선택된 메모리 셀들에 대해서는 데이터가 기입되거나 독출되며, 나머지 비선택된 메모리 셀들에 대해서는 기입이나 독출이 수행되는 것이 방지될 수 있다.Memory cells included in the memory cell array 510 may be connected to word lines WL and bit lines BL. As various voltage signals or current signals are provided through the bit lines BL and the word lines WL, data is written or read for selected memory cells, and writing or reading is performed for the remaining non-selected memory cells. Can be prevented.

커맨드(CMD)에 수반하여 액세스할 메모리 셀을 지시하기 위한 어드레스(또는 액세스 어드레스, ADDR)가 수신될 수 있으며, 어드레스(ADDR)는 메모리 셀 어레이(510)의 워드 라인들(WL)을 선택하기 위한 로우 어드레스(R_ADDR)와 메모리 셀 어레이(510)의 비트 라인들(BL)을 선택하기 위한 칼럼 어드레스(C_ADDR)를 포함할 수 있다. 로우 디코더(220)는 로우 어드레스(R_ADDR)에 응답하여 워드 라인 선택 동작을 수행하며, 칼럼 디코더(230)는 칼럼 어드레스(C_ADDR)에 응답하여 비트 라인 선택 동작을 수행한다.An address (or an access address, ADDR) for indicating a memory cell to be accessed may be received along with the command CMD, and the address ADDR selects the word lines WL of the memory cell array 510 A row address R_ADDR for selection and a column address C_ADDR for selecting bit lines BL of the memory cell array 510 may be included. The row decoder 220 performs a word line selection operation in response to the row address R_ADDR, and the column decoder 230 performs a bit line selection operation in response to the column address C_ADDR.

기입/독출 회로(540)는 비트 라인들(BL)에 연결되어 메모리 셀에 데이터를 기입하거나, 메모리 셀로부터 데이터를 독출할 수 있다. 예컨대, 전압 생성기(570)로부터의 셋 전압(VST)이나 리셋 전압(VRST) 등이 선택된 메모리 셀로 제공될 수 있으며, 또한 독출 동작시 전압 생성기(570)로부터의 독출 전압(VRD)이 선택된 메모리 셀로 제공될 수 있다. 기입/독출 회로(540)는 데이터에 따른 기입 전압이나 기입 전류를 칼럼 디코더(530)를 통해 메모리 셀 어레이(510)로 제공할 수 있다. 또한, 데이터 독출 동작시 기입/독출 회로(540)는 데이터를 판정하기 위하여 비트 라인(BL)의 일 노드(예컨대, 센싱 노드)에 연결되는 비교부를 구비하고, 센싱 노드의 센싱 전압이 나 센싱 전류에 대한 비교 동작을 통해 데이터 값을 판독할 수 있다. 기준 전압(VREF) 및/또는 기준 전류(IREF)가 기입/독출 회로(400)로 제공됨에 따라 데이터 판독 동작에 이용될 수 있다. The write/read circuit 540 may be connected to the bit lines BL to write data to or read data from the memory cell. For example, the set voltage VST or the reset voltage VRST from the voltage generator 570 may be provided to the selected memory cell, and in the read operation, the read voltage VRD from the voltage generator 570 is selected to the selected memory cell. Can be provided. The write/read circuit 540 may provide a write voltage or a write current according to data to the memory cell array 510 through the column decoder 530. In addition, during the data read operation, the write/read circuit 540 includes a comparison unit connected to a node (eg, a sensing node) of the bit line BL to determine data, and the sensing voltage or sensing current of the sensing node The data value can be read through the comparison operation on. As the reference voltage VREF and/or the reference current IRF are provided to the write/read circuit 400, they may be used for a data read operation.

기입/독출 회로(540)는 독출된 데이터에 대한 판독 결과에 기입 도작의 성공 여부를 나타내는 패스/페일 신호(P/F)를 제어 회로(550)에 제공할 수 있다. 제어 회로(550)는 패스/페일 신호(P/F)를 참조하여 의하여 메모리 셀 어레이(510)의 기입 및 독출 동작을 제어할 수 있다. The write/read circuit 540 may provide the control circuit 550 with a pass/fail signal P/F indicating whether the write attempt is successful in the read result of the read data. The control circuit 550 may control write and read operations of the memory cell array 510 by referring to the pass/fail signals P/F.

제어 회로(550)는 외부 장치로부터 수신한 커맨드(CMD), 어드레스(ADDR), 제어 신호(CTRL) 및 패스/페일 신호(P/F)를 기초로 하여, 복수의 제어 신호들(CTL1~CTL3)을 생성할 수 있다. 제어 회로(550)는 제1 제어 신호(CTL1)는 전압 생성기(570)에 제공하고, 제2 제어 신호(CTL2)는 기준 신호 생성기(560)에 인가하고, 제3 제어 신호(CTL3)는 기입/독출 회로(540)에 인가할 수 있다.The control circuit 550 includes a plurality of control signals CTL1 to CTL3 based on a command CMD, an address ADDR, a control signal CTRL, and a pass/fail signal P/F received from an external device. ) Can be created. The control circuit 550 provides the first control signal CTL1 to the voltage generator 570, applies the second control signal CTL2 to the reference signal generator 560, and writes the third control signal CTL3. / Can be applied to the read circuit 540.

메모리 셀 어레이(510)는 복수의 제1 신호 라인들과 복수의 제2 신호 라인들이 교차하는 영역들에 각각 배치되는 복수의 메모리 셀들(미도시)을 포함할 수 있다. 복수의 메모리 셀들 각각은 하나의 비트를 저장하는 싱글 레벨 셀(SLC, single level cell)일 수 있으며, 또는 적어도 2 비트 이상의 데이터를 저장할 수 있는 멀티 레벨 셀(MLC, multi-level cell)일 수 있다. The memory cell array 510 may include a plurality of memory cells (not shown) disposed in regions where a plurality of first signal lines and a plurality of second signal lines cross each other. Each of the plurality of memory cells may be a single level cell (SLC) that stores one bit, or may be a multi-level cell (MLC) capable of storing at least two bits or more of data. .

또는, 메모리 셀 어레이(510)는 싱글 레벨 셀과 멀티 레벨 셀을 함께 포함하여도 무방하다. 하나의 메모리 셀에 하나의 비트의 데이터가 기록되는 경우, 메모리 셀들은 기록된 데이터에 따라 두 개의 저항 레벨 산포를 가질 수 있다. 또는, 하나의 메모리 셀에 2 개의 비트의 데이터가 기록되는 경우, 메모리 셀들은 기록된 데이터에 따라 네개의 저항 레벨 산포를 가질 수 있다. 또 다른 실시예에서, 하나의 메모리 셀에 3 비트의 데이터가 저장되는 트리플 레벨 셀(TLC, triple level cell)의 경우, 메모리 셀들은 기록된 데이터에 따라 여덟 개의 저항 레벨 산포를 가질 수 있다. Alternatively, the memory cell array 510 may include both single-level cells and multi-level cells. When one bit of data is written to one memory cell, the memory cells may have two resistance level distributions according to the written data. Alternatively, when two bits of data are written to one memory cell, the memory cells may have four resistance level distributions according to the written data. In another embodiment, in the case of a triple level cell (TLC) in which three bits of data are stored in one memory cell, the memory cells may have eight resistance level distributions according to the written data.

일 실시예에서, 메모리 셀 어레이(510)는 2차원 수평 구조의 메모리 셀들을 포함할 수 있다. 다른 실시예에서, 메모리 셀 어레이(510)는 3차원 수직 구조의 메모리 셀들을 포함할 수 있다.In an embodiment, the memory cell array 510 may include memory cells having a two-dimensional horizontal structure. In another embodiment, the memory cell array 510 may include memory cells having a three-dimensional vertical structure.

한편, 메모리 셀 어레이(210)는 가변 저항 소자(미도시)를 포함하는 저항형 메모리 셀들 또는 저항성 메모리 셀들을 포함할 수 있다. 예를 들어, 가변 저항 소자가 상변화(phase change) 물질(GST, Ge-Sb-Te)로서 온도에 따라 저항이 변화하는 경우에는 저항성 메모리 장치는 PRAM이 될 수 있다. 다른 예를 들어, 가변 저항 소자가 상부 전극, 하부 전극 및 그 사이에 있는 전이금속 산화물(complex metal oxide)로 형성된 경우에는 저항성 메모리 장치는 RRAM이 될 수 있다. 또 다른 예를 들어, 가변 저항 소자가 자성체의 상부 전극, 자성체의 하부 전극및 그 사이에 있는 유전체로 형성된 경우에는 저항성 메모리 장치는 MRAM이 될 수 있다.Meanwhile, the memory cell array 210 may include resistive memory cells or resistive memory cells including a variable resistance element (not shown). For example, when the variable resistance element is a phase change material (GST, Ge-Sb-Te) whose resistance changes according to temperature, the resistive memory device may be a PRAM. For another example, when the variable resistance element is formed of an upper electrode, a lower electrode, and a complex metal oxide interposed therebetween, the resistive memory device may be an RRAM. For another example, when the variable resistance element is formed of an upper electrode of a magnetic material, a lower electrode of the magnetic material, and a dielectric material therebetween, the resistive memory device may be an MRAM.

도 12는 본 발명의 실시예들에 따른 전자 장치의 컴파일링 방법을 나타내는 흐름도이다.12 is a flowchart illustrating a method of compiling an electronic device according to embodiments of the present invention.

도 1 내지 도 9 및 도 12를 참조하면, 본 발명의 실시예들에 따른 어플리케이션(20)을 실행하는 전자 장치(10)의 컴파일링 방법에서는 컴파일러(100)가 어플리케이션(20)의 실행과 관련된 컨텍스트 정보를 인지한다(S410). 컴파일러(100)의 프런트엔드 모듈(110)이 어플리케이션(20)의 실행과 관련된 어플리케이션(20)의 실행과 관련된 소스 코드(SCD)를 최조 중간 표현(IIR)으로 컴파일링한다(S420).1 to 9 and 12, in the method of compiling the electronic device 10 that executes the application 20 according to the embodiments of the present invention, the compiler 100 is related to the execution of the application 20. Recognize context information (S410). The front-end module 110 of the compiler 100 compiles the source code (SCD) related to the execution of the application 20 related to the execution of the application 20 to the earliest intermediate expression (IIR) (S420).

컴파일러(100)의 최적화 모듈(200)이 컨텍스트 정보에 기초하여 어플리케이션(20)과 관련된 하나 이상의 객체들(31, 33, 35, 37) 각각의 메모리 할당 시의 성능 비용에 기초하여 하나 이상의 객체들 각각(31, 33, 35, 37)을 서로 다른 데이터 보유 특성을 가지는 제1 메모리 장치(400) 및 제2 메모리 장치(500) 중 하나에 할당하면서, 최초 중간 표현(IIR)을 최종 중간 표현(OIR)으로 컴파일링한다(S430).One or more objects based on the performance cost when the optimization module 200 of the compiler 100 allocates memory of each of the one or more objects 31, 33, 35, and 37 related to the application 20 based on context information. Assigning each (31, 33, 35, 37) to one of the first memory device 400 and the second memory device 500 having different data retention characteristics, and assigning the first intermediate expression (IIR) to the final intermediate expression ( OIR) is compiled (S430).

컴파일러(100)의 백엔드 모듈(170)이 최종 중간 표현(OIR)에 기초하여 어플케이션(20)을 실행할 타겟 코드(TCD)를 생성하고(S440) 생성된 타겟 코드(TCD)를 런타임 모듈(300)에 제공한다.The backend module 170 of the compiler 100 generates a target code (TCD) to execute the application 20 on the basis of the final intermediate expression (OIR) (S440) and transfers the generated target code (TCD) to the runtime module 300 ).

도 13은 본 발명의 실시예들에 따른 전자 장치의 동작 방법을 나타내는 흐름도이다.13 is a flowchart illustrating a method of operating an electronic device according to example embodiments.

도 도 1 내지 도 9 및 도 13을 참조하면, 본 발명의 실시예들에 따른 전자 장치(10)의 동작 방법에서는 컴파일러(100)가 어플리케이션(20)의 실행과 관련된 소스 코드(SCD)를 중간 표현으로 컴파일하면서, 어플리케이션(20)과 관련된 하나 이상의 객체들 하나 이상의 객체들(31, 33, 35, 37) 각각의 컨텍스트 정보를 포함하는 프로파일링 정보(OUPI)에 기초하여 상기 하나 이상의 객체들 하나 이상의 객체들(31, 33, 35, 37) 각각의 메모리 할당 시의 성능 비용을 산출한다(S510).1 to 9 and 13, in the operating method of the electronic device 10 according to the embodiments of the present invention, the compiler 100 intermediates the source code (SCD) related to the execution of the application 20. While compiling to an expression, one or more objects related to the application 20, one or more objects based on profiling information (OUPI) including context information of each of the one or more objects 31, 33, 35, 37 The performance cost of allocating memory for each of the objects 31, 33, 35, and 37 is calculated (S510).

컴파일러(100)가 상기 성능 비용에 기초하여 하나 이상의 객체들 각각(31, 33, 35, 37)을 서로 다른 데이터 보유 특성을 가지는 제1 메모리 장치(400) 및 제2 메모리 장치(500) 중 하나에 할당한다(S520).One of the first memory device 400 and the second memory device 500 having different data retention characteristics for each of the one or more objects 31, 33, 35, and 37 by the compiler 100 based on the performance cost. Allocate to (S520).

전자 장치(10)의 런타임 모듈(300)이 중간 표현에 기초하여 생성된 타겟 코드(TCD)에 따라 어플리케이션(20)을 실행시킨다(S530).The runtime module 300 of the electronic device 10 executes the application 20 according to the target code TCD generated based on the intermediate expression (S530).

본 발명의 실시예들에 따르면, 어플리케이션의 컴파일링 과정에서 이용되는 또는 생성되는 하나 이상의 객체들 각각을 함수 호출 및 루프 중 적어도 하나에 관계되는 컨텍스트 정보를 포함하는 프로파일링 정보에 기초하여 하나 이상의 객체들 각각의 메모리 할당 시의 성능 비용을 산출하고, 상기 산출된 성능 비용에 따라 상기 하나 이상의 객체들 각각을 제1 메모리 장치 및 제2 메모리 장치에 할당함으로써 서로 다른 종류의 메모리들을 사용하는 시스템에서 어플리케이션을 수정하지 않고, 메모리 할당을 수행하여 성능을 높일 수 있다.According to embodiments of the present invention, each of the one or more objects used or generated in the compilation process of the application is one or more objects based on profiling information including context information related to at least one of a function call and a loop. In a system that uses different types of memories, an application in a system using different types of memories is performed by calculating a performance cost when allocating memory of each of the two objects and allocating each of the one or more objects to a first memory device and a second memory device according to the calculated performance cost. You can increase performance by performing memory allocation without modifying.

본 발명은 클라우딩 컴퓨팅과 같은 서로 다른 메모리들을 사용하는 시스템에 사용될 수 있다.The present invention can be used in a system that uses different memories, such as cloud computing.

상기에서는 본 발명의 실시예들을 참조하여 설명하였지만, 해당 기술분야에서 통상의 지식을 가진 자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다. Although the above has been described with reference to embodiments of the present invention, those of ordinary skill in the art will variously modify and change the present invention within the scope not departing from the spirit and scope of the present invention described in the following claims. You will understand that you can.

Claims (16)

어플리케이션의 실행과 관련된 소스 코드를 중간 표현으로 컴파일하고, 상기 중간 표현에 기초하여 타겟 코드를 생성하고, 상기 어플리케이션과 관련된 하나 이상의 객체들 각각의 컨텍스트 정보를 포함하는 프로파일링 정보에 기초하여 상기 하나 이상의 객체들 각각의 메모리 할당 시의 성능 비용을 산출하는 컴파일러;
상기 타겟 코드에 기초하여 상기 어플리케이션을 실행시키는 런타임 모듈; 및
상기 컴파일러와 연결되고, 서로 다른 데이터 보유 특성을 가지는 제1 메모리 장치 및 제2 메모리 장치를 포함하는 메모리 서브 시스템을 포함하고,
상기 컴파일러는 상기 하나 이상의 객체들 각각의 상기 성능 비용에 기초하여 상기 하나 이상의 객체들 각각을 상기 제1 메모리 장치 및 상기 제2 메모리 장치 중 하나에 할당하고,
상기 컴파일러는,
상기 소스 코드를 초기 중간 표현으로 컴파일하는 프런트엔드 모듈;
상기 초기 중간 표현을 수신하고 상기 초기 중간 표현을 최적화하여 최종 중간 표현으로 컴파일하고, 상기 프로파일링 정보에 기초하여 상기 성능 비용을 산출하는 최적화 모듈; 및
상기 최종 중간 표현에 기초하여 상기 타겟 코드를 생성하는 백엔드 모듈을 포함하고,
상기 프로파일링 정보는 상기 어플리케이션이 수행될 때 호출되는 함수의 호출 경로 및 루프에 관련된 정보를 포함하는 상기 컨텍스트 정보에 기초한 상기 하나 이상의 객체들 각각이 할당받는 메모리의 사이즈 정보 및 로드/저장 횟수 정보를 포함하는 전자 장치.
Compiling a source code related to execution of an application into an intermediate expression, generating a target code based on the intermediate expression, and the at least one based on profiling information including context information of each of the one or more objects related to the application A compiler that calculates a performance cost when allocating memory for each of the objects;
A runtime module executing the application based on the target code; And
A memory subsystem connected to the compiler and including a first memory device and a second memory device having different data retention characteristics,
The compiler allocates each of the one or more objects to one of the first memory device and the second memory device based on the performance cost of each of the one or more objects,
The above compiler,
A frontend module that compiles the source code into an initial intermediate expression;
An optimization module for receiving the initial intermediate expression, optimizing the initial intermediate expression, compiling into a final intermediate expression, and calculating the performance cost based on the profiling information; And
And a backend module that generates the target code based on the final intermediate expression,
The profiling information includes information on the size of the memory to which each of the one or more objects is allocated and information on the number of loads/stores based on the context information including information related to a call path and a loop of a function called when the application is executed. Electronic device comprising.
삭제delete 삭제delete 제1항에 있어서,
상기 최적화 모듈은 상기 프로파일링 정보에 기초하여 상기 하나 이상의 객체들 각각의 상기 메모리 할당 시 상기 어플리케이션의 성능에 기초하여 상기 성능 비용을 산출하는 전자 장치.
The method of claim 1,
The optimization module calculates the performance cost based on the performance of the application when the memory is allocated to each of the one or more objects based on the profiling information.
제4항에 있어서,
상기 최적화 모듈은 상기 어플리케이션의 성능이 저하되지 않도록 상기 성능 비용에 기초하여 상기 하나 이상의 객체들 각각의 상기 메모리 할당을 수행하는 전자 장치.
The method of claim 4,
The optimization module performs the memory allocation for each of the one or more objects based on the performance cost so as not to degrade the performance of the application.
제1항에 있어서, 상기 최적화 모듈은 하나 이상의 패스 모듈들을 포함하고,
상기 하나 이상의 패스 모듈들 각각은
상기 하나 이상의 객체들 각각에 대하여 메모리 할당 요청이 호출되는 경우, 상기 메모리 할당 요청의 시점과 관련된 제1 타임 스탬프, 상기 메모리 할당 요청과 관련된 객체의 식별자, 할당된 메모리의 어드레스 및 할당된 메모리의 크기 정보를 기록/저장하는 할당 히스토리 기록 모듈;
상기 객체가 할당 받은 메모리 영역에 대하여 상기 어플리케이션에서 로드/저장의 참조가 발생하는 경우 상기 객체에 대하여 참조가 발생한 시점과 관련된 제2 타임 스탬프, 상기 객체의 식별자 정보, 상기 참조의 유형 및 상기 객체로의 참조가 발생한 횟수를 기록/저장하는 참조 히스토리 기록 모듈; 및
상기 객체의 사용이 완료된 경우, 상기 객체에 할당된 메모리 영역의 할당을 해제하고, 메모리 할당 해제 요청의 시점과 관련된 제3 타임 스탬프, 상기 할당을 해제한 상기 객체의 식별자 정보 및 상기 할당이 해제된 메모리의 크기 정보를 기록/저장하는 해제 히스토리 기록 모듈을 포함하는 전자 장치.
The method of claim 1, wherein the optimization module comprises one or more pass modules,
Each of the one or more pass modules
When a memory allocation request is called for each of the one or more objects, a first time stamp related to the time point of the memory allocation request, an identifier of the object related to the memory allocation request, an address of the allocated memory, and the size of the allocated memory An allocation history recording module for recording/storing information;
When a load/store reference occurs in the application with respect to the memory area allocated to the object, a second time stamp related to the time when the reference was made to the object, the identifier information of the object, the type of the reference, and the object. A reference history recording module for recording/storing the number of times of reference occurs; And
When the use of the object is completed, the allocation of the memory area allocated to the object is released, a third time stamp related to the time of the memory allocation release request, the identifier information of the object that has released the allocation, and the allocation is released Electronic device including a release history recording module for recording/storing size information of a memory.
제6항에 있어서, 상기 하나 이상의 패스 모듈들 각각은
상기 할당 히스토리 기록 모듈, 상기 참조 히스토리 기록 모듈 및 상기 해제 히스토리 기록 모듈에 저장된 정보를 별도의 파일로 저장하고, 상기 프로파일링 정보로 제공하는 프로파일링 정보 생성 모듈을 더 포함하는 전자 장치.
The method of claim 6, wherein each of the one or more pass modules
The electronic device further comprises a profiling information generation module storing information stored in the allocation history recording module, the reference history recording module, and the release history recording module as separate files and providing the profiling information as the profiling information.
제6항에 있어서,
상기 어플리케이션이 메모리 할당 함수를 호출하는 경우, 상기 하나 이상의 패스 모듈들 각각은
상기 프로파일링 정보에 기초하여 상기 하나 이상이 객체들 각각의 상기 메모리 할당 시의 상기 성능 비용을 추정하고,
상기 성능 비용에 기초하여 상기 어플리케이션 전체에 할당된 그리고 할당이 요청된 객체들 모두에 대하여 할당할 메모리 종류를 결정하고,
상기 결정된 메모리 종류에 따라 상기 하나 이상의 객체들 각각을 상기 제1 메모리 장치 및 상기 제2 메모리 장치 중 하나로 할당하는 전자 장치.
The method of claim 6,
When the application calls a memory allocation function, each of the one or more pass modules
Estimating the performance cost when the memory is allocated for each of the one or more objects based on the profiling information,
Determine the type of memory to be allocated for all objects allocated to the entire application and for which allocation is requested based on the performance cost,
An electronic device that allocates each of the one or more objects to one of the first memory device and the second memory device according to the determined memory type.
제8항에 있어서,
상기 하나 이상의 패스 모듈들 각각은 상기 성능 비용에 기초하여 미리 할당한 객체를 다른 타입의 메모리 장치로 재배치하는 전자 장치.
The method of claim 8,
Each of the one or more pass modules rearranges an object previously allocated based on the performance cost to a different type of memory device.
제6항에 있어서,
상기 어플리케이션이 메모리 해제 함수를 호출하는 경우, 상기 하나 이상의 패스 모듈들 각각은
상기 메모리 해제가 요청된 객체의 메모리 할당을 해제하고,
상기 프로파일링 정보에 기초하여 현재 할당된 객체들의 상기 성능 비용을 재추정하고,
상기 재추정된 성능 비용에 기초하여 상기 현재 할당된 객체들의 재배치를 판단하는 전자 장치.
The method of claim 6,
When the application calls the memory release function, each of the one or more pass modules
Release the memory allocation of the object for which the memory release is requested,
Re-estimating the performance cost of currently allocated objects based on the profiling information,
An electronic device that determines rearrangement of the currently allocated objects based on the re-estimated performance cost.
제10항에 있어서,
상기 하나 이상의 패스 모듈들 각각은 상기 재추정된 성능 비용에 기초하여 상기 현재 할당된 객체들을 재배치하여 상기 어플리케이션의 성능을 향상시키는 전자 장치.
The method of claim 10,
Each of the one or more pass modules rearranges the currently allocated objects based on the re-estimated performance cost to improve performance of the application.
제1항에 있어서,
상기 제1 메모리 장치는 휘발성 메모리 장치이고, 상기 제2 메모리 장치는 비휘발성 메모리 장치이고,
상기 컴파일러는 상기 최적화 모듈, 상기 제1 메모리 장치 및 상기 제2 메모리 장치와 연결되는 메모리 인터페이스를 더 포함하는 전자 장치.
The method of claim 1,
The first memory device is a volatile memory device, the second memory device is a nonvolatile memory device,
The compiler further includes a memory interface connected to the optimization module, the first memory device, and the second memory device.
제12항에 있어서,
상기 제1 메모리 장치는 DRAM이고 상기 제2 메모리 장치는 상변화 메모리 장치인 전자 장치.
The method of claim 12,
The first memory device is a DRAM and the second memory device is a phase change memory device.
어플리케이션을 실행하는 전자 장치의 컴파일링 방법으로서,
상기 어플리케이션의 실행과 관련된 컨텍스트 정보를 인지하는 단계;
상기 어플리케이션의 실행과 관련된 소스 코드를 최초 중간 표현으로 컴파일링하는 단계;
상기 컨텍스트 정보에 기초하여 상기 어플리케이션과 관련된 하나 이상의 객체들 각각의 컨텍스트 정보를 포함하는 프로파일링 정보에 기초하여 산출된, 메모리 할당 시의 성능 비용에 기초하여 상기 하나 이상의 객체들 각각을 서로 다른 데이터 보유 특성을 가지는 제1 메모리 장치 및 제2 메모리 장치 중 하나에 할당하면서, 상기 최초 중간 표현을 최종 중간 표현으로 컴파일링하는 단계; 및
상기 최종 중간 표현에 기초하여 상기 어플리케이션을 실행할 타겟 코드를 생성하는 단계를 포함하고,
상기 프로파일링 정보는 상기 어플리케이션이 수행될 때 호출되는 함수의 호출 경로 및 루프에 관련된 정보를 포함하는 상기 컨텍스트 정보에 기초한 상기 하나 이상의 객체들 각각이 할당받는 메모리의 사이즈 정보 및 로드/저장 횟수 정보를 포함하는 전자 장치의 컴파일링 방법.
As a method of compiling an electronic device that runs an application,
Recognizing context information related to execution of the application;
Compiling a source code related to execution of the application into an initial intermediate expression;
Holding different data for each of the one or more objects based on the performance cost at the time of memory allocation, calculated based on profiling information including context information of each of the one or more objects related to the application based on the context information Compiling the first intermediate expression into a final intermediate expression while allocating to one of a first memory device and a second memory device having characteristics; And
Generating a target code to execute the application based on the final intermediate expression,
The profiling information includes information on the size of the memory to which each of the one or more objects is allocated and information on the number of loads/stores based on the context information including information related to a call path and a loop of a function called when the application is executed. Compiling method of an electronic device including.
전자 장치의 동작 방법으로서,
어플리케이션의 실행과 관련된 소스 코드를 중간 표현으로 컴파일하면서, 상기 어플리케이션과 관련된 하나 이상의 객체들 각각의 컨텍스트 정보를 포함하는 프로파일링 정보에 기초하여 상기 하나 이상의 객체들 각각의 메모리 할당 시의 성능 비용을 산출하는 단계;
상기 성능 비용에 기초하여 상기 하나 이상의 객체들 각각을 서로 다른 데이터 보유 특성을 가지는 제1 메모리 장치 및 제2 메모리 장치 중 하나에 할당하는 단계; 및
상기 중간 표현에 기초하여 생성된 타겟 코드에 따라 상기 어플리케이션을 실행시키는 단계를 포함하고,
상기 프로파일링 정보는 상기 어플리케이션이 수행될 때 호출되는 함수의 호출 경로 및 루프에 관련된 정보를 포함하는 상기 컨텍스트 정보에 기초한 상기 하나 이상의 객체들 각각이 할당받는 메모리의 사이즈 정보 및 로드/저장 횟수 정보를 포함하는 전자 장치의 동작 방법.
As a method of operating an electronic device,
Compiling the source code related to the execution of the application into an intermediate expression, calculating the performance cost when allocating memory for each of the one or more objects based on profiling information including context information of each of the one or more objects related to the application Step to do;
Allocating each of the one or more objects to one of a first memory device and a second memory device having different data retention characteristics based on the performance cost; And
And executing the application according to the target code generated based on the intermediate expression,
The profiling information includes information on the size of the memory to which each of the one or more objects is allocated and information on the number of loads/stores based on the context information including information related to a call path and a loop of a function called when the application is executed. Operating method of an electronic device including.
제15항에 있어서,
상기 제1 메모리 장치는 휘발성 메모리 장치이고, 상기 제2 메모리 장치는 비휘발성 메모리 장치이고,
상기 제1 메모리 장치는 DRAM이고 상기 제2 메모리 장치는 상변화 메모리 장치인 전자 장치의 동작 방법.
The method of claim 15,
The first memory device is a volatile memory device, the second memory device is a nonvolatile memory device,
The first memory device is a DRAM and the second memory device is a phase change memory device.
KR1020180078122A 2018-07-05 2018-07-05 Electronic device, a method of compiling in an electronic device and a method of operating an electronic device KR102150386B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180078122A KR102150386B1 (en) 2018-07-05 2018-07-05 Electronic device, a method of compiling in an electronic device and a method of operating an electronic device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180078122A KR102150386B1 (en) 2018-07-05 2018-07-05 Electronic device, a method of compiling in an electronic device and a method of operating an electronic device

Publications (2)

Publication Number Publication Date
KR20200005009A KR20200005009A (en) 2020-01-15
KR102150386B1 true KR102150386B1 (en) 2020-09-01

Family

ID=69156679

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180078122A KR102150386B1 (en) 2018-07-05 2018-07-05 Electronic device, a method of compiling in an electronic device and a method of operating an electronic device

Country Status (1)

Country Link
KR (1) KR102150386B1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220101967A (en) * 2021-01-12 2022-07-19 삼성전자주식회사 Electronic device and memory management method of the electronic device

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101845328B1 (en) * 2011-08-22 2018-04-04 삼성전자 주식회사 Terminal and method for performing application thereof

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Anirudh Badam et al, "SSDAlloc: Hybrid SSD/RAM Memory Management Made Easy", Proceedings of the 8th USENIX Conference on Networked Systems Design and Implementation(2011.04.)
Jorge Guerra et al, "Software Persistent Memory", Proceedings of the 2012 USENIX Conference on Annual Technical Conference(2012.06.)

Also Published As

Publication number Publication date
KR20200005009A (en) 2020-01-15

Similar Documents

Publication Publication Date Title
Raha et al. Quality-aware data allocation in approximate DRAM
US20160239381A1 (en) Memory system
US11644979B2 (en) Selective accelerated sampling of failure- sensitive memory pages
CN106802870B (en) high-efficiency Nor-Flash controller of embedded system chip and control method
US11309054B2 (en) Method of controlling repair of volatile memory device and storage device performing the same
US11079967B2 (en) Memory system, memory controller and operating method of memory controller
KR20220055717A (en) Memory system and operating method of memory system
KR20170104107A (en) Object storage system managing error-correction-code-related data in key-value mapping information
KR102150386B1 (en) Electronic device, a method of compiling in an electronic device and a method of operating an electronic device
US11626182B2 (en) Selective power-on scrub of memory units
Cui et al. Improving 3-D NAND SSD read performance by parallelizing read-retry
KR102165928B1 (en) Electronic device, a method of compiling in an electronic device and a method of operating an electronic device
KR102469958B1 (en) Nonvolatile memory device configured to be accessed without block address and method of operating the same
US11836377B2 (en) Data transfer management within a memory device having multiple memory regions with different memory densities
US10964395B2 (en) Memory system, memory device and memory controller
CN113643745A (en) Management of peak current of memory dies in a memory subsystem
US10725862B2 (en) Data recovery method to error correction code in memory
US8812767B2 (en) Method of controlling memory, memory control circuit, storage device and electronic device
CN111798913A (en) Memory system, memory controller and operating method thereof
KR20210028335A (en) Memory system, memory controller, and operating method
US11276452B2 (en) Memory device including a plurality of area having different refresh periods, memory controller controlling the same and memory system including the same
US11698731B2 (en) Performance throttling based on power-off time
KR102491652B1 (en) Storage controller determining a distribution type, method of operating the same, and method of operating storage device having the same
US11742029B2 (en) Adjusting read-level thresholds based on write-to-write delay
EP4152332A1 (en) Storage controller determining distribution type, method of operating the same, and method of operating storage device including the same

Legal Events

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