KR20070032294A - 처리 유닛의 동적 로드 및 언로드 - Google Patents

처리 유닛의 동적 로드 및 언로드 Download PDF

Info

Publication number
KR20070032294A
KR20070032294A KR1020067018235A KR20067018235A KR20070032294A KR 20070032294 A KR20070032294 A KR 20070032294A KR 1020067018235 A KR1020067018235 A KR 1020067018235A KR 20067018235 A KR20067018235 A KR 20067018235A KR 20070032294 A KR20070032294 A KR 20070032294A
Authority
KR
South Korea
Prior art keywords
program module
program
local memory
module
processor
Prior art date
Application number
KR1020067018235A
Other languages
English (en)
Inventor
다츠야 이와모토
Original Assignee
가부시키가이샤 소니 컴퓨터 엔터테인먼트
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 가부시키가이샤 소니 컴퓨터 엔터테인먼트 filed Critical 가부시키가이샤 소니 컴퓨터 엔터테인먼트
Priority to KR1020067018235A priority Critical patent/KR20070032294A/ko
Publication of KR20070032294A publication Critical patent/KR20070032294A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명에 따르면, 처리 환경에서의 향상된 명령 조작을 위한 방법들과 장치들이 제공된다. 프로그램 레퍼런스는 하나 이상의 프로그램 모듈들과 관련되어 있다. 프로그램 모듈들은 로컬 메모리에 로드될 수 있고 코드 또는 데이터와 같은 정보가 프로그램 레퍼런스에 근거하여 프로그램 모듈들로부터 획득되어질 수 있다. 신규 프로그램 모듈들이 현재의 프로그램 모듈들에 근거하여 형성될 수 있다. 프로그램 모듈 내에서 직접 레퍼런스들을 생성하는 것과 프로그램 모듈들 사이에서 간접 레퍼런스들을 방지하는 것이 신규 프로그램 모듈들을 최적화할 수 있다. 프로그램 모듈은 삽입점에 근거하여 로컬 메모리에 사전 로드될 수 있다. 삽입점은 통계적으로 판단될 수 있다. 본 발명은 제한된 용량의 메모리를 가진 멀티프로세서 시스템들에 대해 특히 도움이 된다.
레퍼런스, 로컬 메모리, 프로그램 모듈, 삽입점

Description

처리 유닛의 동적 로드 및 언로드{DYNAMIC LOADING AND UNLOADING FOR PROCESSING UNIT}
본 발명은 일반적으로 컴퓨터 프로그램 실행에 관한 것이다. 더욱 상세하게는, 본 발명은 목적 모듈에 근거하여 프로세서의 로컬 저장 장치에서 컴퓨터 모듈을 조작하고 컴퓨터 모듈을 로드함으로써 프로그램 실행을 개선하는 것에 관한 것이다.
컴퓨터 시스템은 점차로 더욱 복잡해지고 있고, 구성부품의 사이즈(size)를 축소시키고 제조 비용을 절감시키면서 동일한 시간 동안 보다 높은 처리 속도를 달성하고 있다. 이러한 진보는, 실시간의 멀티미디어 게임 및 다른 컴퓨터 사용 집중 애플리케이션(application)과 같은 많은 애플리케이션의 성공에 중요하다. 때때로, 컴퓨터 시스템은 처리 효율을 향상시키기 위하여, 병렬로(또는 일제히) 동작하는 멀티프로세서를 통합시킨다.
기본적인 레벨(level)에서, 프로세서 또는 복수의 프로세서는 코드(code) 및/또는 데이터(총칭하여 "정보")를 조작한다. 정보는 전형적으로 메인 메모리(main memory)에 저장된다. 예를 들어, 메인 메모리는, 프로세서(들)를 포함하는 칩(chip)으로부터 물리적으로 분리된 동적 임의 액세스 메모리(Dynamic Random Access Memory; "DRAM") 칩일 수 있다. 메인 메모리가 프로세서로부터 물리적으로나 논리적으로 분리된 경우, 메인 메모리에 포함된 정보에 액세스(access)하는데 요구되는 부가적인 시간에 있어서, 예를 들어, 수십 또는 수백 밀리세컨드(millisecond)일 수 있는 상당한 지연이 존재할 수 있다. 필수 정보가 메인 메모리로부터 전송될 때까지, 프로세서는 동작을 대기하거나 중지해야만 할 것이기 때문에, 높은 지연은 처리에 악영향을 준다.
이러한 높은 지연 문제를 해결하기 위하여, 많은 컴퓨터 시스템이 캐시 메모리(cache memory)를 구현한다. 캐시 메모리는 프로세서와 메인 메모리 사이에 위치되는 일시적인 저장 장치이다. 일반적으로, 캐시 메모리는 메인 메모리와 비교하여 작은 액세스 지연("낮은 지연")을 갖지만, 더욱 매우 작은 사이즈의 저장 장치를 갖는다. 이용 시, 캐시 메모리는 반복된 액세스에 대한 데이터를 일시적으로 저장함으로써, 프로세서의 성능을 개선한다. 캐시 메모리의 효율성은 액세스의 집약성에 의존한다. 예를 들어, "9 대 1" 규칙을 이용하여, 90%의 시간이 10%의 데이터를 액세스하는데 소비되는 경우, 많은 시간이 소량의 데이터를 액세스하는데 소비되기 때문에, 메인 메모리 또는 외부 저장 장치로부터 소량의 데이터를 검색하는 것은 상당히 효과적이지 않다. 이에 따라, 자주 이용되는 데이터는 캐시에 저장되어야 한다.
종래의 하드웨어 캐시 시스템은 저장 장치 관리의 기본적인 유닛인 "캐시 라인(cache line)"을 포함한다. 캐시 라인은 캐시 메모리와 메인 메모리 사이에서 최적의 사이즈의 데이터 전송이 이루어지도록 선택된다. 이 기술 분야에서 공지된 기 술로서, 캐시 시스템은 메인 메모리에 캐시 라인을 매핑(mapping)하는 일정 규칙을 가지고 동작한다. 예를 들면, 캐시 "태그(tag)"는, 메인 메모리의 어느 부분(들)이 캐시 라인 상에 저장되는지와, 메인 메모리의 그 부분의 상태를 나타내는데 사용된다.
프로그램 실행에 악영향을 줄 수 있는 메모리 액세스 이외의 다른 제한은, 메모리 사이즈이다. 메인 메모리는 필요한 동작을 수행하기에 지나치게 작을 수 있다. 이러한 경우, 외부 저장 장치를 사용함으로써 메인 메모리에 물리적으로 존재하는 어드레스 영역보다 큰 시스템 어드레스 영역을 제공하기 위하여, "가상 메모리"가 이용될 수 있다. 한편, 전형적으로, 외부 저장 장치는 메인 메모리보다 매우 높은 지연을 가질 수 있다.
가상 메모리를 구현하기 위하여, 프로세서의 메모리 관리 유닛(Memory Management Unit; "MMU")을 이용하는 것이 보통인데, MMU는 CPU 또는 개별 요소의 일부일 수 있다. MMU는 메모리의 물리적 어드레스로 가상 어드레스(프로그램 소프트웨어에 의해 이용되는 어드레스)를 매핑하는 것을 관리한다. MMU는 액세스가 물리적 어드레스에 연결지어지지 않은 가상 어드레스로 이루어지는 경우를 검출할 수 있다. 이러한 경우, 가상 메모리 관리자 소프트웨어가 호출된다. 가상 어드레스가 외부 저장 장치에 저장되어 있는 경우, 메인 메모리로 로드될 것이며, 매핑이 가상 어드레스에 대하여 이루어질 것이다.
고도의 프로세서 아키텍처(architecture), 특히 멀티프로세서(multiprocessor) 아키텍처에 있어서, 각각의 처리 유닛은 로컬 메모리를 갖는 데, 로컬 메모리는 메인 메모리의 저장 장치를 보충할 수 있다. 로컬 메모리는 때때로 고속이지만, 제한된 저장 용량을 갖는다. 소프트웨어에 의해 이용되는 어드레스(address)와 로컬 메모리의 물리적 어드레스 사이에 가상화는 없다. 이는, 처리 유닛이 이용할 수 있는 메모리의 양을 제한한다. 처리 유닛은 직접 메모리 액세스 제어기(DMA(Direct Memory Accss) Controller; "DMAC") 또는 다른 하드웨어를 통하여 메인 메모리에 액세스할 수 있지만, 시스템 어드레스 공간과 로컬 메모리 어드레스 공간을 링크시키는 하드웨어 메커니즘은 없다.
그러나 높은 지연 메인 메모리는 처리 효율을 감소시키는데 기여하고, 멀티프로세서 시스템에 있어서 성능의 심각한 병목 현상(bottleneck)을 발생시킨다. 이에 따라, 이러한 문제를 극복하기 위한 향상된 정보 조작에 대한 요구가 존재한다. 본 발명은 이러한 그리고 다른 문제를 해결하고, 특히 엄격한 메모리 제한을 갖는 멀티프로세서 아키텍처에 적합하다.
본 발명의 일 실시예에 따르면, 로컬 메모리를 갖는 처리 장치의 동작 관리 방법이 제공된다. 방법은, 프로그램 레퍼런스(programming reference)와 관련되는 프로그램 모듈이 로컬 메모리에 로드되는지의 여부를 판단하는 단계와, 프로그램 모듈이 로컬 메모리에 로드되지 않는 경우 로컬 메모리로 프로그램 모듈을 로드하는 단계와, 프로그램 레퍼런스에 근거하여 프로그램 모듈로부터 정보를 획득하는 단계를 포함한다.
하나의 대안에 있어서, 프로그램 모듈로부터 획득된 정보는 데이터 및 코드 중 적어도 어느 하나를 포함한다. 다른 대안에 있어서, 프로그램 모듈은 메인 메모리로부터 로컬 메모리에 로드된 목적 모듈을 포함한다. 또 다른 대안에 있어서, 프로그램 레퍼런스는 프로그램 모듈 내에의 직접 레퍼런스를 포함한다. 부가적 대안에 있어서, 프로그램 레퍼런스는 제 2 프로그램 모듈에의 간접 레퍼런스를 포함한다.
다른 대안에 있어서, 프로그램 모듈은 제 1 프로그램 모듈이고, 방법은 메인 메모리에 제 1 프로그램 모듈 및 제 2 프로그램 모듈을 저장하는 단계를 더 포함하며, 로드하는 단계는 메인 메모리로부터 로컬 메모리로 제 1 프로그램 모듈을 로드하는 단계를 포함한다. 이러한 경우에, 프로그램 레퍼런스는 제 1 프로그램 모듈 내에의 직접 레퍼런스를 포함할 수 있다. 대안적으로, 프로그램 레퍼런스는 제 2 프로그램 모듈에의 간접 레퍼런스를 포함할 수 있다. 이러한 예에 있어서, 정보가 제 2 프로그램 모듈로부터 획득된 경우, 방법은, 제 2 프로그램 모듈이 로컬 메모리에 로드되는지의 여부를 판단하는 단계와, 제 2 프로그램 모듈이 로컬 메모리에 로드되지 않는 경우 로컬 메모리로 제 2 프로그램 모듈을 로드하는 단계와, 제 1 프로그램 모듈로 정보를 제공하는 단계를 포함하는 것이 바람직하다.
본 발명의 다른 실시예에 따르면, 로컬 메모리를 갖는 처리 장치의 동작 관리 방법이 제공된다. 방법은, 메인 메모리로부터 제 1 프로그램 모듈을 획득하는 단계와, 메인 메모리로부터 제 2 프로그램 모듈을 획득하는 단계와, 제 1 프로그램 모듈에 의해 이용된 프로그램 레퍼런스가 제 2 프로그램 모듈에의 간접 레퍼런스를 포함하는지의 여부를 판단하는 단계와, 프로그램 레퍼런스가 간접 레퍼런스를 포함하는 경우 신규 프로그램 모듈을 형성하는 단계를 포함하며, 프로그램 레퍼런스가 신규 프로그램 모듈의 복수개의 부분 사이에의 직접 레퍼런스가 되도록 신규 프로그램 모듈은 제 1 프로그램 모듈의 적어도 일부분을 포함한다.
하나의 대안에 있어서, 방법은 로컬 메모리로 신규 프로그램 모듈을 로드하는 단계를 더 포함한다. 다른 대안에 있어서, 신규 프로그램 모듈을 형성하는 단계 전에, 제 1 및 제 2 프로그램 모듈이 로컬 메모리에 로드된다. 부가적 대안에 있어서, 제 1 프로그램 모듈은 제 1 코드 함수를 포함하고, 제 2 프로그램 모듈은 제 2 코드 함수를 포함하며, 신규 프로그램 모듈은 제 1 및 제 2 코드 함수 중 적어도 어느 하나를 포함하여 형성된다. 이러한 경우에, 제 1 프로그램 모듈은 데이터 그룹을 더 포함하는 것이 바람직하고, 신규 프로그램 모듈은 데이터 그룹을 더 포함하여 형성된다.
다른 대안에 있어서, 프로그램 레퍼런스는 제 2 프로그램 모듈에의 간접 레퍼런스이고, 방법은 제1 프로그램 모듈에 의해 이용된 프로그램 레퍼런스에 근거하여 신규 프로그램 모듈에 의한 이용을 위해 신규 프로그램 레퍼런스를 판단하는 단계를 더 포함하며, 신규 프로그램 레퍼런스가 신규 프로그램 내에의 직접 레퍼런스가 되도록 신규 프로그램 모듈은 제 1 프로그램 모듈의 적어도 일부분 및 제 2 프로그램 모듈의 적어도 일부분을 포함하여 형성된다.
본 발명의 또 다른 실시예에 따르면, 로컬 메모리를 갖는 처리 장치의 동작 처리 방법이 제공된다. 방법은 로컬 메모리에 로드된 제 1 프로그램 모듈을 실행하는 단계와, 제 2 프로그램 모듈의 삽입점을 판단하는 단계와, 제 1 프로그램 모듈의 실행 중에 로컬 메모리에 제 2 프로그램 모듈을 로드하는 단계와, 제2 프로그램 모듈의 실행을 개시하기 위하여 예측 실행 시간을 판단하는 단계와, 제 2 프로그램 모듈의 로드가 완료되는지의 여부를 판단하는 단계와, 제 1 프로그램 모듈이 종료된 후에 제 2 프로그램 모듈을 실행하는 단계를 포함한다.
하나의 대안에 있어서, 방법은, 로드가 완료되지 않는 경우, 제 2 프로그램 모듈의 실행을 지연시키는 단계를 더 포함한다. 이러한 경우에, 실행을 지연시키는 단계는 로드가 완료될 때까지 하나 이상의 NOP를 수행하는 단계를 포함하는 것이 바람직하다. 다른 실시예에 있어서, 삽입점은 통계적으로 판단된다. 부가적 대안에 있어서, 삽입점의 유효성은 실행 상태에 기반을 두고 판단된다.
본 발명의 다른 실시예에 따르면, 처리 시스템이 제공된다. 처리 시스템은, 프로그램 모듈을 저장하는 것이 가능한 로컬 메모리와, 로컬 메모리에 접속된 프로세서를 포함한다. 프로세서는 프로그램 모듈과 프로그램 레퍼런스를 관련시키는 기능, 프로그램 모듈이 로컬 메모리에 현재 로드되는지의 여부를 판단하는 기능, 프로그램 모듈이 로컬 메모리에 현재 로드되지 않는 경우 로컬 메모리로 프로그램 모듈을 로드하는 기능 및 프로그램 레퍼런스에 근거하여 프로그램 모듈로부터 정보를 획득하는 기능을 포함하는 관리 기능을 수행할 논리를 포함한다. 로컬 메모리는 프로세서와 통합되는 것이 바람직하다.
본 발명의 다른 실시예에 따르면, 처리 시스템이 제공된다. 처리 시스템은, 프로그램 모듈을 저장하는 것이 가능한 로컬 메모리와, 로컬 메모리에 접속된 프로세서를 포함한다. 프로세서는, 메인 메모리에 프로그램 모듈 중 제 1 및 제 2 프로그램 모듈을 저장하는 기능, 메인 메모리로부터 로컬 메모리로 제 1 및 제 2 프로그램 모듈 중 선택된 프로그램 모듈을 로드하는 기능, 선택된 프로그램 모듈과 프로그램 레퍼런스를 관련시키는 기능 및 프로그램 레퍼런스에 근거하여 정보를 획득하는 기능을 포함하는 관리 기능을 수행할 논리를 포함한다. 바람직하게는 메인 메모리는 온칩(on-chip) 메모리를 포함한다. 더욱 바람직하게는, 메인 메모리는 프로세서와 통합된다.
본 발명의 부가적 실시예에 따르면, 처리 시스템이 제공된다. 처리 시스템은, 프로그램 모듈을 저장하는 것이 가능한 로컬 메모리와, 로컬 메모리에 접속된 프로세서를 포함한다. 프로세서는, 메인 메모리로부터 제 1 프로그램 모듈을 획득하는 기능, 메인 메모리로부터 제 2 프로그램 모듈을 획득하는 기능, 제 1 프로그램 모듈에 의한 이용을 위해 제 1 프로그램 레퍼런스를 판단하는 기능, 제 1 프로그램 레퍼런스가 신규 프로그램 모듈 내에의 직접 레퍼런스가 되도록 제 1 프로그램 모듈의 적어도 일부분을 포함하는 신규 프로그램 모듈을 형성하는 기능 및 로컬 메모리로 신규 프로그램 모듈을 로드하는 기능을 포함하는 관리 기능을 수행할 논리를 포함한다.
본 발명의 다른 실시예에 따르면, 처리 시스템이 제공된다. 처리 시스템은, 프로그램 모듈을 저장하는 것이 가능한 로컬 메모리와, 로컬 메모리에 접속된 프로세서를 포함한다. 프로세서는, 제 1 프로그램 모듈의 삽입점을 판단하는 기능, 프로세서에 의한 제 2 프로그램 모듈 실행 중에 로컬 메모리에 제 1 프로그램 모듈을 로드하는 기능, 제 2 프로그램 모듈의 실행이 종료되고 로드가 완료된 후에 제 1 프로그램 모듈을 실행하는 기능을 포함하는 관리 기능을 수행할 논리를 포함한다.
본 발명의 부가적 실시예에 따르면, 프로세서의 의한 이용을 위해 프로그램을 저장하는 저장 매체가 제공된다. 프로그램은 프로세서가, 프로그램 레퍼런스와 관련된 프로그램 모듈을 식별, 프로그램 모듈이 프로세서와 관련된 로컬 메모리에 현재 로드되는지의 여부를 판단, 프로그램 모듈이 로컬 메모리에 현재 로드되지 않는 경우 로컬 메모리로 프로그램 모듈을 로드 및 프로그램 레퍼런스에 근거하여 프로그램 모듈로부터 정보를 획득을 수행하도록 한다.
본 발명의 다른 실시예에 따르면, 프로세서에 의한 이용을 위해 프로그램을 저장하는 저장 매체가 제공된다. 프로그램은 프로세서가, 메인 메모리에 제 1 및 제 2 프로그램 모듈을 저장, 메인 메모리로부터 프로세서와 관련된 로컬 메모리로 프로그램 레퍼런스와 관련되는 제 1 프로그램 모듈을 로드 및 프로그램 레퍼런스에 근거하여 정보를 획득을 수행하도록 한다.
본 발명의 다른 실시예에 따르면, 프로세서에 의한 이용을 위해 프로그램을 저장하는 저장 매체가 제공된다. 프로그램은 프로세서가, 메인 메모리로부터 제 1 프로그램 모듈을 획득하고, 메인 메모리로부터 제 2 프로그램 모듈을 획득하고, 제 1 프로그램 모듈에 의해 이용된 프로그램 레퍼런스가 제 2 프로그램 모듈에의 간접 레퍼런스를 포함하는지의 여부를 판단하며, 프로그램 레퍼런스가 간접 레퍼런스를 포함하는 경우 프로그램 레퍼런스가 신규 프로그램 모듈의 복수개의 부분 사이에의 직접 레퍼런스가 되도록 제 1 프로그램 모듈의 적어도 일부분을 포함하는 신규 프로그램 모듈을 형성하도록 한다.
본 발명의 부가적 실시예에 따르면, 프로세서에 의한 이용을 위해 프로그램을 저장하는 저장 매체가 제공된다. 프로그램은 프로세서가, 프로세서와 관련된 로컬 메모리에 로드된 제 1 프로그램 모듈을 실행하고, 제 2 프로그램 모듈의 삽입점을 판단하고, 제 1 프로그램 모듈의 실행 중에 로컬 메모리에 제 2 프로그램 모듈을 로드하고, 제 2 프로그램 모듈의 실행을 개시하기 위하여 예측 실행 시간을 판단하고, 제 2 프로그램 모듈의 로드가 완료되는지의 여부를 판단하며, 제 1 프로그램 모듈이 종료된 후에 제 2 프로그램 모듈을 실행하도록 한다.
본 발명의 다른 실시예에 따르면, 처리 시스템이 제공된다. 처리 시스템은, 버스(bus), 처리 유닛 및 버스에 의해 처리 유닛에 접속되는 적어도 하나의 부처리 유닛을 구비하는 처리 요소를 포함한다. 처리 유닛 중 적어도 하나와 적어도 하나의 부처리 유닛은, 로컬 메모리로 제 1 프로그램 모듈을 로드하고, 프로그램 레퍼런스에 근거하여 제 1 프로그램 모듈로부터 정보를 획득하기 위하여, 프로그램 레퍼런스가 제 1 프로그램 모듈에 속하는지의 여부를 판단하도록 동작한다.
본 발명의 다른 실시예에 따르면, 컴퓨터 처리 시스템이 제공된다. 컴퓨터 처리 시스템은, 사용자 입력 장치와, 표시 장치의 부착을 위한 표시 인터페이스(display interface)와, 프로그램 모듈을 저장하는 것이 가능한 로컬 메모리와, 로컬 메모리에 접속된 프로세서를 포함한다. 프로세서는 하나 이상의 처리 요소를 포함한다. 처리 요소 중 적어도 하나는 프로그램 레퍼런스가 제 1 프로그램 모듈에 속하는지의 여부를 판단하는 기능, 로컬 메모리로 제 1 프로그램 모듈을 로드하는 기능 및 프로그램 레퍼런스에 근거하여 제 1 프로그램 모듈로부터 정보를 획득하는 기능을 포함하는 관리 기능을 수행할 논리를 포함한다.
본 발명의 다른 실시예에 따르면, 컴퓨터 네트워크가 제공된다. 컴퓨터 네트워크는 통신 네트워크를 통하여 서로 접속되는 다수개의 컴퓨터 처리 시스템들을 포함한다. 컴퓨터 처리 시스템 각각은, 사용자 입력 장치와, 표시 장치의 부착을 위한 표시 인터페이스와, 프로그램 모듈을 저장하는 것이 가능한 로컬 메모리와, 로컬 메모리로 접속된 프로세서를 포함한다. 프로세서는 하나 이상의 처리 요소를 포함한다. 처리 요소 중 적어도 하나는 프로그램 레퍼런스가 제 1 프로그램 모듈에 속하는지의 여부를 판단하는 기능, 로컬 메모리로 제 1 프로그램 모듈을 로드하는 기능 및 프로그램 레퍼런스에 근거하여 제 1 프로그램 모듈로부터 정보를 획득하는 기능을 포함하는 관리 기능을 수행할 논리를 포함한다. 바람직하게는 컴퓨터 처리 시스템들 중 적어도 하나는 멀티미디어 게이밍 애플리케이션(multimedia gaming application)들을 처리할 수 있는 게이밍 유닛(gaming unit)을 포함한다.
도 1은 본 발명의 실시형태에 따라 이용될 수 있는 처리 요소의 전형적인 구조를 나타내는 도이다.
도 2는 본 발명의 실시형태와 함께 이용가능한 처리 요소의 멀티처리 시스템의 전형적인 구조를 나타내는 도이다.
도 3은 부처리 유닛의 전형적인 구조를 나타내는 도이다.
도 4A 및 4B는 본 발명의 바람직한 실시형태에 따른 메인 메모리와 로컬 저장 장치 사이의 저장 장치 관리 도 및 관련된 논리 순서도를 나타낸다.
도 5A 및 5B는 본 발명의 바람직한 실시형태에 따른 프로그램 모듈 재그룹화 도를 나타낸다.
도 6A 및 6B는 본 발명의 바람직한 실시형태에 따른 호출 트리 재그룹화 도를 나타낸다.
도 7A 및 7B는 본 발명의 바람직한 실시형태에 따른 프로그램 모듈 사전 로드 논리 및 다이어그램(diagram)을 나타낸다.
도 8은 본 발명의 실시형태에 따른 컴퓨팅 네트워크(computing network)를 나타낸다.
첨부된 도면에 도시된 본 발명의 바람직한 실시예들을 기술함에 있어서, 특정한 용어는 명료성을 위하여 이용될 것이다. 한편, 본 발명은 이용되는 특정한 사항으로 한정되지 않으며, 각각의 특정한 사항은 유사한 목적을 달성하기 위하여 유사한 규칙으로 동작하는 모든 기술적 동등함을 포함하는 것으로 이해될 것이다.
도 1을 참조하면, 본 발명의 실시형태에 따라 사용될 수 있는 기본적인 처리 모듈 또는 처리 요소(Processing Element; "PE"; 100)의 블록도를 도시한다. 이러한 도면에 도시된 바와 같이, PE(100)는 입출력 인터페이스(102), 처리 유닛(Processing Unit; "PU"; 104), 직접 메모리 액세스 제어기(Direct Memory Access Controller; "DMAC"; 106) 및 다수개의 부처리 유닛(Sub-Processing Unit; "SPU"; 108), 즉 SPU들(108a 내지 108d)을 포함하는 것이 바람직하다. 네 개의 SPU(108a 내지 108d)가 도시되고 있으나, PE(100)는 임의의 개수의 이러한 디바이 스를 포함할 수 있다. 로컬(또는 내부) PE 버스(120)는 PU(104), SPU(108), 입출력 인터페이스(102), DMAC(106) 및 메모리 인터페이스(110) 사이에서 데이터 및 애플리케이션을 전송한다. 예를 들어, 로컬 PE 버스(120)는 통상의 아키텍처를 갖거나 패킷 교환 네트워크(packet switch network)로서 실현될 수 있다. 패킷 교환 네트워크로서의 실현은, 많은 하드웨어를 요구하기 때문에, 이용가능한 대역폭을 증가시킨다. 입출력 인터페이스(102)는 입출력 버스(124)를 통하여, 프레임 버퍼, 디스크 드라이브 등과 같은 하나 이상의 외부 입출력 디바이스(도시되지 않음)에 접속할 수 있다.
PE(100)는 디지털 논리를 실현하는 다양한 방법을 이용하여 구성될 수 있다. 한편, PE(100)는 실리콘 기판 상의 CMOS를 사용하는 단일 집적 회로로서 구성되는 것이 바람직하다. PE(100)는 높은 대역폭 메모리 접속부(122)를 통하여 메모리(130)와 밀접하게 관련된다. 메모리(130)는 PE(100)의 메인 메모리로서 기능하는 것이 바람직하다. 실제의 구현에 있어서, 메모리(130)는, PE(100)를 포함하는 프로세서 칩의 일부로서 통합되거나, 그렇지 않은 경우, 분리되지 않은 외부의 "오프칩(off chip)"의 메모리일 수 있다. 예를 들면, 메모리(130)는, 정적 랜덤 액세스 메모리(Static Random Access Memory; "SRAM"), 마그네틱 랜덤 액세스 메모리(Magnetic Random Access Memory; "MRAM"), 광학 메모리, 홀로그래픽 메모리 등과 같은 다른 수단을 사용하여 구현될 수 있다. DMAC(106) 및 메모리 인터페이스(110)는 메모리(130) 및 PE(100)의 SPU(108)와 PU(104) 사이에서의 데이터의 전송을 용이하게 한다.
예를 들면, PU(104)는 데이터 및 애플리케이션의 독립적인 처리가 가능한 표준적인 프로세서일 수 있다. 동작에 있어서, PU(104)는 SPU(108)에 의한 데이터 및 애플리케이션의 처리를 예정하고 지휘한다. 다른 구성에 있어서, PE(100)는 다중 PU(104)를 포함할 수 있다. PU(104) 각각은 지정된 SPU(108) 그룹 중 하나, 모두 또는 일부를 제어할 수 있다. SPU(108)는, 단일 명령, 다중 데이터(Single Instruction, Multiple Data; "SIMD") 프로세서인 것이 바람직하다. PU(104)의 제어 하에서, SPU(108)는 병렬이면서 독립된 방식으로 데이터 및 애플리케이션의 처리를 수행할 수 있다. DMAC(106)는 공유 메모리(130)에 저장된 데이터 및 애플리케이션으로의 PU(104) 및 SPU(108)에 의한 액세스를 제어한다. 바람직하게는, PE(100)과 같은 복수개의 PE는, 향상된 처리 능력을 제공하기 위하여, 함께 연결되거나 묶이고, 또는 그렇지 않은 경우, 서로 논리적으로 관련될 수 있다.
도 2는, 이하에서 기술되는 바와 같이, 본 발명의 실시형태에 따라 동작될 수 있는 다중 PE들(200; PE1, PE2, PE3, PE4)을 포함하는 처리 아키텍처를 도시한다. 바람직하게는, PE(200)는 단일 칩 상에 존재한다. PE(200)는, 도 1의 PE(100)에 대하여 전술한 바와 같이, PU 및/또는 SPU와 같은 하부시스템을 포함할 수도 있고, 포함하지 않을 수도 있다. PE(200)는, 요구되는 처리의 타입에 따라서, 동일한 타입일 수도 있고 다른 타입일 수도 있다. 예를 들어, 하나 이상의 PE(200)들은 일반적인 마이크로프로세서, 디지털 신호 프로세서, 그래픽 프로세서, 마이크로제어기 등일 수 있다. PE1과 같은 PE(200)들 중 어느 하나는 PE2, PE3, 및 PE4에 의한 처리의 일부 또는 모두를 제어하거나 감독할 수 있다.
PE(200)들은 공유 버스(202)로 연락되는 것이 바람직하다. 메모리 제어기 또는 DMAC(206)는 메모리 버스(204)를 통하여 공유 버스(202)에 접속될 수 있다. DMAC(206)는 메모리(208)에 접속되는데, 메모리(208)는, 메모리(130)에 대하여 전술한 바와 같은 타입 중 어느 하나일 수 있다. 실제의 구현에 있어서, 메모리(208)는, 하나 이상의 PE(200)를 포함하는 프로세서 칩의 일부로서 통합되거나, 그렇지 않은 경우, 분리되지 않은 외부의 오프칩의 메모리일 수 있다. 예를 들어, 메모리(208)는, 칩 상의 분리된 위치에 있거나 하나 이상의 PE(200)와 통합될 수 있다. 또한, 입출력 제어기(212)는 입출력 버스(210)를 통하여 공유 버스(202)에 접속될 수 있다. 입출력 제어기(212)는, 프레임 버퍼, 디스크 드라이브 등과 같은 하나 이상의 입출력 디바이스(214)에 접속할 수 있다.
전술한 처리 모듈 및 아키텍처는 단지 예들에 불과하며, 본 발명의 다양한 실시형태는, 2003년 2월 25일 등록된 "Memory Protection System and Method for Computer Architecture for Broadband Networks"란 명칭의 미국특허 제6,526,491호 및 2001년 3월 22일에 출원된 "Computer Architecture and Software Cells for Broadband Networks"란 명칭의 미국출원 제09/816,004호에 기재된 타입의 멀티프로세서 시스템으로 한정되지 않고, 이들을 포함하는 다른 구조와 함께 사용될 수 있다.
도 3은 본 발명의 실시형태에 따라 사용될 수 있는 SPU(300)를 도시한다. 하나 이상의 SPU(300)가 PE(100) 내에 통합될 수 있다. PERK 다중 PU(104)들을 포함하는 경우, PU(104) 각각은 지정된 SPU(300) 그룹 중 하나, 모두 또는 일부를 제어 할 수 있다.
SPU(300)는 로컬 저장 장치(Local Store; "LS"; 302), 레지스터(304), 하나 이상의 부동 소수점 유닛(Floating Point Unit; "FPU"; 306) 및 하나 이상의 정수 유닛(Integer Unit; "IU"; 308)을 포함하거나, 논리적으로 관계되는 것이 바람직하다. 그리고, SPU(300)의 구성요소들은, 이하에서 기술될 것과 같이, 하부구성요소들을 포함한다. 요구되는 처리 능력에 따라서, 보다 많은 또는 보다 적은 수의 FPU(306)들 및 IU(308)들이 사용될 수 있다. 바람직한 실시예에 있어서, LS(302)는 적어도 128 킬로바이트의 저장 용량을 포함하고, 레지스터(304)의 수용량은 128×128 비트이다. FPU(306)들은 1 초당 적어도 320억 부동 소수점 연산(32 GFLOPS)의 속도로 동작하는 것이 바람직하며, IU(308)는 1 초당 적어도 320억 연산(32 GOPS)의 속도로 동작하는 것이 바람직하다.
LS(302)는 캐시 메모리가 아닌 것이 바람직하다. SPU(300)에 대한 캐시 일관성 지지는 불필요하다. 대신에, LS(302)는 SRAM으로서 구성되는 것이 바람직하다. PU(104)는 PU(104)에 의해 초기화된 직접 메모리 액세스에 대한 캐시 일관성 지지를 요구할 수 있다. 한편, 캐시 일관성 지지는, SPU(300)에 의해 초기화된 직접 메모리 액세스에 대하여 또는 외부 디바이스, 예컨대 입출력 디바이스(214)로나 입출력 디바이스(214)로부터의 액세스에 대하여 요구되지 않는다. LS(302)는, 예를 들어 특정한 SPU(300)와 관련된 물리적 메모리, SPU(300)과 관련된 가상 메모리 영역, 물리적 메모리 및 가상 메모리의 조합, 또는 동등한 하드웨어, 소프트웨어 및/또는 펌웨어(firmware) 구조로서 실행될 수 있다. LS(302)가 SPU(300)의 외부에 있 다면, SPU-특정 로컬 버스를 경유하거나 또는 로컬 PE 버스(120)와 같은 시스템 버스를 경유하는 것과 같이 SPU(300)에 결합될 수 있다.
SPU(300)는 버스 인터페이스(버스 I/F;312)를 통하여 SPU(300)로 그리고 SPU(300)로부터 애플리케이션들과 데이터를 전송하기 위한 버스(310)를 포함한다. 바람직한 실시형태에서, 버스(310)는 1024 비트 폭을 가진다. SPU(300)는 내부 버스들(314, 316 및 318)을 더 포함한다. 바람직한 실시형태에서, 버스(314)는 256 비트의 폭을 가지고 로컬 저장 장치(302)와 레지스터(304) 사이의 통신을 제공한다. 버스들(316 및 318)은 각각, 레지스터(304)와 FPU(306), 및 레지스터(304)와 정수 유닛(308) 사이의 통신들을 제공한다. 바람직한 실시형태에서, 레지스터(304)로부터 FPU(306) 또는 IU(308)로의 버스들(316 및 318)의 폭은 384 비트이고, 버스들(316 및 318)의 폭은 FPU(306) 또는 IU(308)로부터 레지스터(304)로의 버스들(316 및 318)의 폭은 128 비트이다. 레지스터(304)로부터 FPU(306) 또는 IU(308)로의 버스들의 더 큰 폭은, 처리 동안 레지스터(304)로부터의 더 큰 데이터 흐름을 도모한다. 일 실시예에서, 각각의 계산에서 최대 3 단어가 필요하다. 그러나, 각각의 계산 결과는 통상적으로 1 단어이다.
본 발명을 이용하여, 가상화의 결여와 로컬 메모리 어드레스 공간과 시스템 어드레스 공간 사이의 다른 병목 현상을 극복하는 것이 가능하다. LS(302)에서의 데이터 로드 및 언로드가 소프트웨어를 통해 바람직하게 수행되기 때문에, 데이터 및/또는 코드가 특정 시간에서 로드되어야 하는지 여부를 판단할 수 있다는 사실을 이용할 수 있다. 이것은 프로그램 모듈들을 이용하여 성취된다. 본 명세서에서 사 용되는 용어 "프로그램 모듈"은 메모리에 할당된 임의의 논리군의 프로그램 자원들을 포함한다. 예를 들어, 프로그램 모듈은 컴파일러와 같은 논리 수단에 의해 그룹화될 수 있는 데이터 및/또는 코드를 포함할 수 있다. 프로그램 또는 다른 계산 작업들이 하나 이상의 프로그램 모듈들을 이용하여 실행될 수 있다.
도 4A는 프로그램 모듈들을 이용한 본 발명의 일 실시형태에 따른 저장 장치 관리 도(400)를 나타낸다. 메인 메모리, 예를 들어, 메모리(130)는 하나 이상의 프로그램 모듈들을 포함한다. 도 4A에서, 제 1 프로그램 모듈(프로그램 모듈 A; 402), 및 제 2 프로그램 모듈(프로그램 모듈 B; 404)은 메인 메모리(130)에 저장된다. 바람직한 실시예에서, 프로그램 모듈은 "*.o" 파일로 알려진 컴파일타임 목적 모듈(compile-time object module)일 수 있다. 목적 모듈들은 프로그램 부분들 사이의 매우 분명한 논리 분할을 제공한다. 목적 모듈이 컴파일 동안 생성되기 때문에, 목적 모듈은, 모듈 내에서 만들어 지든지(직접 레퍼런싱;direct referencing) 또는 밖에서 만들어 지든지(외부 레퍼런싱(external referencing) 또는 간접 레퍼런싱(indirect referencing))에 상관없이 정확한 어드레스 레퍼런싱(address referencing)을 제공한다. 간접 레퍼런싱은 이하에서 기술되듯이 관리 루틴을 호출함으로써 바람직하게 실행된다.
바람직하게는, 프로그램들은 프로그램 모듈에 의하여 LS(302)로 로드된다. 더욱 바람직하게는, 프로그램들은 목적 모듈에 의하여 LS(302)로 로드된다. 도 4A에 도시된 것처럼, 프로그램 모듈 A는 제 1 프로그램 모듈(406)로서 LS(302)에 로드될 수 있고, 프로그램 모듈 B는 제 2 프로그램 모듈(408)로서 로드될 수 있다. 직접 레퍼런싱이 프로그램 모듈(406) 내에서 데이터 또는 코드를 액세스하도록 화살표(410)에 의해 표시된 것처럼 수행되어질 때, 레퍼런스들(즉, 코드 및/또는 데이터에 대한 포인터(pointer)들) 모두 오버헤드(overhead) 없이 액세스될 수 있다. 간접 레퍼런싱이 점선 화살표들(412 및 413)에 의해 도시된 것처럼 프로그램 모듈(406)로부터 프로그램 모듈(408)로 모듈 밖에서 행해질 때, 관리 루틴(414)이 바람직하게 호출된다. 프로세서의 논리에 의해 바람직하게 실행된 관리 루틴(414)은 필요하다면 프로그램 모듈을 로드할 수 있고, 이미 로드되었다면 프로그램 모듈을 액세스할 수 있다. 예를 들어, 간접 레퍼런스(점선 화살표; 412)가 제 1 프로그램 모듈(프로그램 모듈 A; 406)에서 행해진다고 가정하자. 게다가, 로컬 저장 장치(302)에서 발견되지 않는 프로그램 모듈 B로 간접 레퍼런스(점선 화살표; 412)가 행해진다고 가정하자. 그러면, 관리 루틴(414)은 주 메모리(130) 내에 프로그램 모듈(404)로서 있는 프로그램 모듈 B를 프로그램 모듈(408)로서 로컬 저장 장치(302)에 로드할 수 있다.
도 4B는 본 발명의 바람직한 실시형태에 따른 저장 장치 관리를 나타내는 논리 순서도(440)이다. 저장 장치 관리는 단계 S442에서 시작된다. 그 다음에 단계 S444에서, 레퍼런스가 어느 프로그램 모듈에 속해 있는 지를 판단하는 검사가 수행된다. 관리 루틴(414; 도 4A)은 검사를 수행하거나 또는 검사의 결과들이 예를 들어 또 다른 처리, 애플리케이션 또는 장치에 의해 관리 루틴(414)으로 제공된다. 레퍼런스가 판단되면, 프로그램 모듈이 LS(302)로 로드되었는 지 여부를 판단하는 검사가 단계 S446에서 수행된다. 프로그램 모듈이 LS(302)에 로드되면, 프로그램 모듈로부터 레퍼런스된 값(데이터)이, 단계 S448에서 도 4A의 프로그램 모듈(406)과 같은 요구 엔티티(requesting entity)에 복귀된다. 프로그램 모듈이 LS(302)에 로드되지 않는다면, 레퍼런스된 모듈은 단계 S450에서 LS(302)로 로드된다. 로드가 이루어지면, 단계 S448에서 데이터가 요구 엔티티에 복귀되는 처리가 진행된다. 저장 장치 관리 루틴은 단계 S452에서 종료한다. 관리 루틴(414)은 도(400)의 저장 장치 관리를 수행하거나 검사한다.
프로그램 모듈들이 컴파일 동안 형성된 목적 모듈들을 이용하여 실행된다면, 목적 모듈들이 어떻게 만들어지는 지가 저장 장치 관리 처리의 유효성에 영향을 끼칠 수 있다. 예를 들어, 코드 함수의 데이터가 코드 함수와 관련하여 적절하지 않다면, 처리 병목(processing bottleneck)이 일어난다. 따라서, 프로그램들 및/또는 데이터를 다중 소스 파일들로 분리할 때 주의하여야 한다.
이러한 문제점은, 코드 및 데이터를 포함하여 프로그램을 분석함으로써 방지될 수 있다. 일 실시형태에서, 코드 및/또는 데이터는 바람직하게는 분리된 모듈들로 분할된다. 또 다른 실시형태에서, 코드 및/또는 데이터는 사용에 따라 데이터의 함수들 또는 그룹들로 분할된다. 컴파일러 또는 다른 처리 도구가 데이터의 함수들과 그룹들 사이에서 만들어진 레퍼런스들을 분석할 수 있다. 그 다음에, 프로그램 모듈 그룹화를 최적화하기 위해, 존재하는 프로그램 모듈들이 분석에 근거하여 데이터 및/또는 코드를 그룹화함으로써 신규 프로그램 모듈들로 재분할될 수 있다. 이것은 외부 모듈 액세스에 의해 생성된 오버헤드(overhead)를 최소화할 것이다. 모듈을 어떻게 분할할 것인가를 판단하는 처리가 모듈의 코드를 함수들에 의해 분 할함으로써 바람직하게 시작된다. 예를 들어, 트리 구조가 함수들의 "호출" 관계들로부터 추출될 수 있다. 외부 호출이 없는 함수, 또는 외부에서 레퍼런스되지 않는 함수는 "로컬" 함수로서 식별될 수 있다. 외부 레퍼런스들을 갖는 함수들은 레퍼런스 타겟 모듈들에 의해 그룹화될 수 있고, 외부 레퍼런스를 갖는 것으로 식별된다. 유사한 그룹화들이 외부에서 레퍼런스되는 함수들에 대해 실행될 수 있고, 그러한 함수들은 외부 레퍼런스에 의해 식별된다. 모듈의 데이터 부분(들)은 동등한 분석을 받는 것이 바람직하다. 모듈 그룹화들은 "최적합(best fit)" 조합을 선택하도록 비교/매치(match)되는 것이 바람직하다. 예를 들어, LS(302)의 크기, 선호되는 전송 크기, 및/또는 할당에 근거하여 최적합이 선택되어진다. 바람직하게는, 레퍼런스가 더욱 가능성 있게 사용되어질 거라면, 레퍼런스는 최적합 분석에서 더욱 가중치가 부여될 것이다. 도구들은 또한 최적화된 그룹화를 자동화하는 데에 사용되어질 수 있다. 예를 들어, 컴파일러 및/또는 링커(linker)는 최적합 실행가능 파일을 생성하기 위해 하나 이상의 컴파일/링크 반복들을 수행한다. 레퍼런스들은 또한 실행시간 프로파일링(runtime profiling)에 의해 통계적으로 분석될 수 있다.
바람직한 실시형태에서, 재그룹화 처리를 위한 입력은 프로그램을 형성하기 위해 함께 링크될 다중 목적 파일들을 포함한다. 이러한 실시형태에서, 요망되는 출력은 로드 완성에 대한 대기 지연을 최소화하도록 그룹화되는 다중 로드 모듈들을 포함한다.
도 5A는, SPU의 LS(302)에 로드되는 제 1 프로그램 모듈(502) 및 제 2 프로그램 모듈(504)를 갖는 프로그램 모듈 그룹(500)을 도시한다. 다중스레드 처 리(multithreaded process)에서 다른 스레드(thread)들 사이에서 동일 코드 모듈을 공유하는 것이 가능하기 때문에, 제 1 프로그램 모듈(502)을 제 1 로컬 저장 장치에 로드하는 것과 제 2 프로그램 모듈을 제 2 로컬 저장 장치에 로드하는 것이 가능하다. 선택적으로, 전체 프로그램 모듈 그룹(500)이 한 쌍의 로컬 저장 장치에 로드된다. 그러나, 데이터 모듈들은 분리된 인스턴스(instance)들을 필요로 한다. 관리 루틴이 공유된 코드 모듈과 관련된 분할된 데이터 모듈들을 관리하는 동안 공유된 코드 모듈이 사용되어질 수 있도록 동적 로드 및 언로드의 방법을 확장하는 것이 가능하다. 도 5A에 도시된 것처럼, 제 1 프로그램 모듈(502)은 코드 함수들(506 및 508)과 데이터 그룹들(510 및 512)을 포함한다. 코드 함수(506)는 작업(A)에 대한 코드를 포함한다. 코드 함수(508)는 작업(B 및 C)에 대한 코드를 포함한다. 데이터 그룹(510)은 데이터 군(data set; A)를 포함한다. 데이터 그룹(512)은 데이터 군들(B, C 및 D)을 포함한다. 유사하게, 제 2 프로그램 모듈(504)은 코드 함수들(514, 516) 및 데이터 그룹들(518, 520)을 포함한다. 코드 함수(514)는 작업들(D 및 E)에 대한 코드를 포함한다. 코드 함수(516)는 작업(F)에 대한 코드를 포함한다. 데이터 그룹(518)은 데이터 군들(D 및 E)를 포함한다. 데이터 그룹(520)은 데이터 군들(F 및 G)을 포함한다.
도 5A의 실시예에서, 코드 함수(506)는 데이터 그룹(510)을 직접 레퍼런스할 수 있고(화살표; 521), 코드 함수(514)를 간접적으로 레퍼런스할 수 있다. 코드 함수(508)는 데이터 그룹(512)을 직접적으로 레퍼런스할 수 있다(화살표; 523). 코드 함수(514)는 데이터 그룹(520)을 직접적으로 레퍼런스한다(화살표; 524). 마지막으 로, 코드 함수(516)는 데이터 그룹(518)을 직접 레퍼런스한다(화살표; 526). 코드 함수들(506 및 514) 사이의 간접 레퍼런스(점선 화살표; 522)는 원하지 않는 오버헤드를 생성한다. 그러므로, 코드 함수들 및 데이터 그룹들을 재그룹화하는 것이 바람직하다.
도 5B는 도 5A의 프로그램 모듈 그룹(500)의 예시적인 재그룹화를 도시한다. 도 5B에서, 신규 프로그램 모듈들(530, 532 및 534)이 생성된다. 프로그램 모듈(530)은 코드 함수들(536, 538)과 데이터 그룹들(540, 542)을 포함한다. 코드 함수(536)는 작업(A)에 대한 코드를 포함한다. 코드 함수(538)는 작업들(D 및 E)에 대한 코드를 포함한다. 데이터 그룹(540)은 데이터 군(A)을 포함한다. 데이터 그룹(542)은 데이터 군들(F 및 G)을 포함한다. 프로그램 모듈(532)은 코드 함수(544) 및 데이터 그룹(546)을 포함한다. 코드 함수(544)는 작업들(B 및 C)에 대한 코드를 포함한다. 데이터 그룹(546)은 데이터 군들(B, C 및 D)을 포함한다. 프로그램 모듈(534)은 코드 함수(548) 및 데이터 그룹(550)을 포함한다. 코드 함수(548)는 작업(F)에 대한 코드를 포함한다. 데이터 그룹(550)은 데이터 군들(D 및 E)을 포함한다.
도 5B의 그룹화에서, 코드 함수(536)는 데이터 그룹(540)을 직접 레퍼런스하고(화살표; 521'), 코드 함수(538)를 직접 레퍼런스한다(화살표; 522'). 코드 함수(544)는 데이터 그룹(546)을 직접 레퍼런스한다(화살표; 523'). 코드 함수(538)는 데이터 그룹(542)을 직접 레퍼런스한다(화살표; 524'). 마지막으로, 코드 함수(548)는 데이터 그룹(550)을 직접 레퍼런스한다(화살표; 526'). 간접 레퍼런싱이 제거되는 동안 직접 레퍼런싱이 최대가 되기 때문에 그룹화가 도 5B에서 최적화가 된다.
더욱 상세한 실시예에서, 도 6A는 SPU의 LS(302)에 로드될 수 있는 제 1 모듈(602), 제 2 모듈(604), 제 3 모듈(606) 및 제 4 모듈(608)을 갖는 함수 호출 트리(600)를 도시한다. 도 6A에 도시된 것처럼, 제 1 모듈(602)은 코드 함수들(610, 612, 614, 616 및 618)을 포함한다. 코드 함수(610)는 작업(A)에 대한 코드를 포함한다. 코드 함수(612)는 작업(B)에 대한 코드를 포함한다. 코드 함수(614)는 작업(C)에 대한 코드를 포함한다. 코드 함수(616)는 작업(D)에 대한 코드를 포함한다. 코드 함수(618)는 작업(E)에 대한 코드를 포함한다. 제 1 모듈(602)은 코드 함수들(610, 612, 614, 616 및 618) 각각과 관련된 데이터 그룹들(620, 622, 624, 626 및 628)을 또한 포함한다. 데이터 그룹(620)은 데이터 군(또는 그룹)(A)을 포함한다. 데이터 그룹(622)은 데이터 군(B)을 포함한다. 데이터 그룹(624)은 데이터 군(C)을 포함한다. 데이터 그룹(626)은 데이터 군(D)을 포함한다. 데이터 그룹(628)은 데이터 군(E)을 포함한다.
제 2 모듈(604)은 코드 함수들(630 및 632)을 포함한다. 코드 함수(630)는 작업(F)에 대한 코드를 포함한다. 코드 함수(632)는 작업(G)에 대한 코드를 포함한다. 제 2 모듈(604)은 코드 함수들(630 및 632)과 각각 관련된 데이터 그룹들(634 및 636)을 포함한다. 데이터 그룹(638)은 제 2 모듈(604)에 또한 포함된다. 데이터 그룹(634)은 데이터 군 (또는 그룹)(F)을 포함한다. 데이터 그룹(636)은 데이터 군(G)을 포함한다. 데이터 그룹(638)은 데이터 군(FG)을 포함한다.
제 3 모듈(606)은 코드 함수들(640 및 642)을 포함한다. 코드 함수(640)는 작업(H)에 대한 코드를 포함한다. 코드 함수(642)는 작업(I)에 대한 코드를 포함한다. 제 3 모듈(606)은 코드 함수들(640 및 642)과 각각 관련된 데이터 그룹들(644 및 646)을 포함한다. 데이터 그룹(648)은 제 3 모듈(606)에 또한 포함된다. 데이터 그룹(644)은 데이터 군(또는 그룹)(H)을 포함한다. 데이터 그룹(646)은 데이터 군(I)을 포함한다. 데이터 그룹(648)은 데이터 군(IE)을 포함한다.
제 4 모듈(608)은 코드 함수들(650 및 652)을 포함한다. 코드 함수(650)는 작업(J)에 대한 코드를 포함한다. 코드 함수(652)는 작업(K)에 대한 코드를 포함한다. 제 4 모듈(608)은 코드 함수들(640 및 642)과 각각 관련된 데이터 그룹들(654 및 656)을 포함한다. 데이터 그룹(654)은 데이터 군(또는 그룹)(J)을 포함한다. 데이터 그룹(656)은 데이터 군(K)을 포함한다.
도 6A의 실시예에서, 제 1 코드 모듈(602)과 관련하여, 코드 함수(610)는 코드 함수(612)(화살표; 613), 코드 함수(614)(화살표; 615), 코드 함수(616)(화살표; 617), 및 코드 함수(618)(화살표; 619)를 직접 레퍼런스한다. 코드 함수(614)는 코드 함수(630)(점선 화살표; 631) 및 코드 함수(632)(점선 화살표; 633)를 간접적으로 레퍼런스한다. 코드 함수(616)는 코드 함수(640)(점선 화살표; 641) 및 코드 함수(642)(점선 화살표; 643)를 간접적으로 레퍼런스한다. 코드 함수(618)는 코드 함수(642)(점선 화살표; 645) 및 데이터 그룹(648)(점선 화살표; 647)을 간접적으로 레퍼런스한다.
제 2 코드 모듈(604)과 관련하여, 코드 함수(630)는 데이터 그룹(638)을 직 접 레퍼런스한다(화살표; 637). 코드 함수(632)는 또한 데이터 그룹(638)을 직접 레퍼런스한다(화살표; 639). 제 3 코드 모듈(606)과 관련하여, 코드 함수(640)는 코드 함수(650)를 간접적으로 레퍼런스한다(점선 화살표; 651). 코드 함수(640)는 또한 코드 함수(652)를 간접적으로 레퍼런스한다(점선 화살표; 653). 코드 함수(642)는 데이터 그룹(648)을 직접 레퍼런스한다(화살표; 649). 제 4 코드 모듈(608)과 관련하여, 코드 함수(650)는 직접 코드 함수(652)를 레퍼런스한다(화살표; 655).
함수 호출 트리(600)에서, 8개의 로컬 호출들(직접 레퍼런스들)과 8개의 외부 호출들(간접 레퍼런스들)이 있다. 8개의 외부 호출들은 상당한 양의 원하지 않는 오버헤드를 생성한다. 그러므로, 간접 레퍼런스들을 최소화하기 위해 호출 트리(600)의 요소들을 재그룹화하는 것이 바람직하다.
도 6B는 SPU의 LS(302)에 로드된 제 1 모듈(662), 제 2 모듈(664), 제 3 모듈(666) 및 제 4 모듈(668)을 갖는 재그룹화된 함수 호출 트리(660)를 도시한다. 도 6B에 도시된 것처럼, 제 1 모듈(662)은 데이터 그룹들(620 및 622)뿐만 아니라, 코드 함수들(610 및 612)을 포함한다. 제 2 모듈(664)은 코드 함수들(614, 630 및 632)을 포함한다. 제 2 모듈(604)은 데이터 그룹들(634, 636 및 638)을 포함한다. 제 3 모듈(666)은 코드 함수들(616, 618 및 642)을 포함한다. 제 3 모듈(666)은 데이터 그룹들(626, 628, 646 및 648)을 포함한다. 제 4 모듈(668)은 데이터 그룹들(644, 654 및 656)뿐만 아니라, 코드 함수들(640, 650 및 652)을 포함한다.
도 6B의 실시예에서, 제 1 코드 모듈(662)과 관련하여, 코드 함수(610)는 코 드 함수(612)를 직접 레퍼런스한다(화살표; 613). 그러나, 재그룹화에 기인하여, 제 1 코드 모듈(662)은 코드 함수(614)(점선 화살표; 615'), 코드 함수(616)(점선 화살표; 617') 및 코드 함수(618)(점선 화살표; 619')를 간접적으로 레퍼런스한다.
제 2 코드 모듈(664)과 관련하여, 코드 함수(614)는 코드 함수(630)(화살표; 631') 및 코드 함수(632)(화살표; 633')를 직접 레퍼런스한다. 코드 함수(630)는 데이터 그룹(638)을 직접 레퍼런스하고(화살표; 637), 코드 함수(632)는 데이터 그룹(638)을 직접 레퍼런스 한다(화살표; 639).
제 3 코드 모듈(666)과 관련하여, 코드 함수(616)는 코드 함수(640)를 간접적으로 레퍼런스하지만(점선 화살표; 641), 코드 함수(642)를 직접 레퍼런스한다(화살표; 643'). 코드 함수(618)는 코드 함수(642)(화살표; 645') 및 데이터 그룹(648)(화살표; 647')을 직접 레퍼런스한다. 코드 함수(642)는 데이터 그룹(648)을 직접 레퍼런스한다(화살표; 649).
제 4 코드 모듈(668)과 관련하여, 코드 함수(640)는 코드 함수(650)를 직접 레퍼런스한다(화살표; 651'). 코드 함수(640)는 코드 함수(652)를 직접 레퍼런스한다(화살표; 653'). 코드 함수(650)는 코드 함수(652)를 직접 레퍼런스한다(화살표; 655).
함수 호출 트리(660)에는 12개의 로컬 호출들(직접 레퍼런스들)과 4개의 외부 호출들(간접 레퍼런스들)이 있다. 간접 레퍼런스들의 개수를 절반으로 감소시킴으로써 원하지 않는 오버헤드의 양이 최소화된다.
LS(302)에 로드될 수 있는 모듈들의 개수는 LS(302)의 크기와 모듈들 자체의 크기에 의해 제한된다. 그러나, 레퍼런스들이 어떻게 어드레스(address)되는 지에 대한 코드 분석은, 필요하기 전에 LS(302)에의 프로그램 모듈들의 로드 또는 언로드를 가능하게 하는 강력한 도구를 제공한다. 코드 분석이 프로그램 모듈이 필요하게 될 프로그램 내의 특정 포인트에서 결정될 수 있다면, 모듈들을 로드하는 대기 시간을 감소시키기 위해 로드가 미리 수행되어질 수 있다. 주어진 모듈이 사용되어질 것이 확실하지 않더라도, 많은 경우들에서, 사용되어질 것이 (75% 이상) 가능성이 있다면 모듈을 미리 로드하는 것이 더욱 효율적이다.
레퍼런스가 실제 사용되어질 가능성에 따라, 레퍼런스들은 정확하게 행해질 수 있거나, 또는 즉시 회답 검사(on-demand checking)가 허용될 수 있다. 이러한 로드 루틴들에 대한 프로그램에서의 삽입점은 컴파일러 또는 동등한 도구를 이용하여 통계적으로 판단될 수 있다. 모듈이 생성되기 전에 삽입점은 또한 통계적으로 판단되어질 수 있다. 삽입점의 타당성은 실행시간 조건들에 근거하여 판단되어질 수 있다. 예를 들어, 로드가 수행되어야 하는지 여부를 판단하는 로드 루틴이 이용되어질 수 있다. 바람직하게는, 실행시간에 로드되는 1 군의 프로그램 모듈들에 대해 로드 및 언로드의 양이 최소화된다. 실행시간 프로파일링 분석은 로드될 각각의 모듈의 위치들을 판단하기 위해 날짜 정보까지 제공할 수 있다. 전형적인 스택(stack) 관리 때문에, 임의의 로드 위치들이 추가적인 호출들을 가지고 있지 않은 모듈들에 대해 선택되어져야 한다. 예를 들어, 통상의 스택 관리 처리에서, 스택 프레임(frame)들이 복귀 포인터(return pointer)들에 의해 구성된다. 함수가 복귀할 때, 호출 모듈을 가지는 모듈은 호출될 때와 동일한 위치에 위치되어야 한다. 모듈이 복귀할 때 같은 위치에 로드되는 한, 모듈이 새로 호출될 때마다 모듈을 다른 위치에 로드하는 것이 가능하다. 그러나, 외부 함수 호출로부터 복귀시킬 때, 관리 루틴은 호출 모듈을 원 위치로 로드한다.
도 7A는 단계 S702에서 시작하는 사전 로드 처리를 도시하는 순서도(700)이다. 단계 S704에서, 삽입점이 프로그램 모듈에 대해 판단된다. 위에서 논의된 것처럼, 삽입점은, 예를 들어 컴파일러 또는 프로파일링 분석에 의해 판단된다. 실행 분기의 경로가 트리 구조에 의해 나타내어질 수 있다. 레퍼런스가, 예를 들어 0% 내지 100%의 확률의 범위에 근거하여 사용되어지거나 사용되어질 가능성이 있는 지 여부를 판단하는 것이 트리 구조에서의 위치이다. 100%의 확률은 레퍼런스가 명확히 사용되어질 것이라는 것을 의미하고 0%의 확률은 레퍼런스가 사용되어지지 않을 것이라는 것을 의미한다. 삽입점들은 분기 이후에 위치되어야 한다. 그 다음에, 단계 S706에서, 모듈 또는 모듈들은 DMA 전송에 의해 로드된다. 코드 실행에서 지연을 최소화하기 위해 로드가 배경 처리에서 바람직하게 수행된다. 그 다음에, 단계 S708에서 로드가 완료되었는 지 여부가 판단된다. 처리가 완료되지 않는다면, 단계 S710에서 코드 실행이 프로그램 모듈들의 전체 로드를 할 수 있도록 중단될 수 있다. 로드가 완료되면, 처리는 단계 S712에서 종료된다.
도 7B는 도 7A에 따른 프로그램 모듈 사전 로드의 일 실시예를 도시한다. 도면에 도시된 것처럼, 코드 실행(722)은 프로세서, 예를 들어 SPU(300)에 의해 수행된다. 처음에는 제 1 함수(A)가 프로세서에 의해 실행되어 질 수 있다. 위에서 논의된 것처럼, 삽입점(724)이 제 2 함수(B)에 대해 판단되어진다면, 함수(B)를 가지는 프로 그램 모듈은, 예를 들어 DMA 전송(726)에 의해 로드된다. DMA 전송(726)은 TLOAD로 도시된 것처럼 일정 기간의 시간이 걸린다. 프로세서가, 예를 들어 함수(A)의 프로그램 점프(728)에 기인하여 함수(B)를 수행할 준비가 되어 있다면, 프로그램 모듈(B)의 로드가 단계S708에서 완료되었는 지 여부가 판단된다. 도 7B에 도시된 것처럼, 전송(726)은 점프(728)가 일어난 시간까지 완료되지 않는다. 그러므로, 대기 기간(TWAIT)은 전송(726)이 완료될 때까지 생긴다. 프로세서는, 예를 들어 TWAIT 동안 하나 이상의 "NOPs(no operations)"를 수행한다. TWAIT 가 종료한다면, 프로세서는 포인트(730)에서 함수(B)를 처리하기 시작한다. 그러므로, 대기 시간(TWAIT)을 고려하면서, 모듈의 사전 로드는 시간(DT)을 절약한다는 것을 볼 수 있다.
본 발명에 따른 프로그램 모듈 최적화의 중요한 이익은 모듈들의 로드 및 언로드의 대기에 소비되는 시간의 최소화이다. 실행시키는 하나의 요소는 모듈 전송들의 지연 및 대역폭이다. 실제 전송 동안 소비되는 시간은 다음 요소들과 직접 관련된다: (a) 레퍼런스가 행해지는 횟수; (b) 전송 설정에 대한 지연; (c) 전송 크기; 및 (d) 전송 대역폭. 또 다른 요소는 이용가능한 메모리 공간의 크기.
정적 분석이 코드 구조 처리의 일부분으로서 사용되어질 지라도, 일반적으로 함수들 사이의 관계들을 제공하는 데에 제한되고 호출들이 한 주기의 시간 동안 주어진 함수에 대해 얼마나 많은 호출들이 행해지는 지에 대한 정보를 제공하지 않는다. 바람직하게는, 이러한 통계 데이터에 대한 레퍼런스는 재그룹화의 요소로서 이 용된다. 코드에 대한 추가적인 분석이 함수 호출들이 함수 내에서 행해지는 주파수 및 횟수에 대한 일정 레벨의 정보를 제공하는 데에 이용되어질 수 있다. 일 실시형태에서, 최적화는 통계 분석만을 이용하여 얻어질 수 있는 정보에 제한된다.
최적화 알고리즘에 포함될 수 있는 또 다른 요소는 모듈들의 크기와 예상되는 구조이다. 예를 들어, 호출자 모듈이 피호출자 모듈을 로드하기 위해 언로드되어야 한다면, 언로드는 함수 호출을 완료하기 위해 더 많은 지연을 추가한다.
최적화 알고리즘 설계에 있어서, 바람직하게는 하나 이상의 요소들(예를 들어, 가중치 요소들)이 포함되어, 최적화를 정량화하는 데에 이용된다. 하나의 요소에서, 함수의 레퍼런스들이 바람직하게는 호출들의 주파수, 모듈이 호출되는 횟수, 및 모듈의 크기와 관련하여 가중치가 생긴다. 예를 들어, 모듈이 호출되는 횟수는 모듈의 크기가 곱해질 수 있다. 정적 분석 모드에서, 하위 호출 트리를 호출하는 함수는 호출이 더욱 빈번히 일어난다는 것을 가리키도록 가중치가 더욱 부여된다.
또 다른 요소에서, 호출이 모듈 내에 있는 경우(로컬 레퍼런스), 가중치가 감소되거나 0의 가중치가 주어진다. 또 다른 요소에서, 다른 가중치들이 코드 구조의 분석을 가진 함수로부터 호출하기 위해 설정될 수 있다. 예를 들어, 1회만 행해진 호출은 루프의 일부로서 여러 번 행해진 호출보다 낮게 가중치가 부여되는 것이 바람직하다. 게다가, 루프 반복 횟수가 결정되는 경우, 상기 횟수는 루프 호출에 대한 가중치 요소로서 이용되어질 수 있다. 또 다른 요소에서, 단일 함수에 의해 이용되어진 정적 데이터 레퍼런스는 상기 함수에 첨부되어 고려되어야 한다. 또 다른 요소에서, 정적 데이터가 다른 함수들과 공유된다면, 단일 모듈에서 상기 함수 들을 포함하는 것이 바람직하다.
또 다른 요소에서, 전체 프로그램이 충분히 작다면, 프로그램은 단일 모듈 내에 배치되는 것이 바람직하다. 그렇지 않으면, 프로그램은 다중 모듈로 분할되어야 한다. 또 다른 요소에서, 프로그램 모듈이 다중 모듈들로 분할된다면, 호출자와 피호출자 모듈들이 서로 메모리에 맞게 모듈들을 구성하는 것이 바람직하다. 프로그램을 모듈로 분할하는 것과 관련된 전술한 2개의 요소들은 바람직한 최적화 알고리즘을 달성하기 위해 다른 요소들의 관점에서 평가되어야 한다. 위에서 논의된 도면들은 하나 이상의 선택된 요소들에 따른 다양한 재조직화를 도시한다.
도 8은 본 발명에 따른 홀로 또는 네트워크 구성에서 사용되어질 수 있는 다양한 컴퓨팅(computing) 장치들을 도시하는 컴퓨터 네트워크 구성도이다. 컴퓨팅 장치들은, 전형적인 PC들, 랩탑들, 서버들, 게임 콘솔들, PDA들 등과 같은 다양한 유형들의 사용자 입력들, 표시들, 메모리들 및 프로세서들을 이용하는 컴퓨터형 장치들을 포함할 수 있다. 예를 들어, 도 8은 LAN, WAN, 인터넷 등과 같은 통신 네트워크(870)를 경유하여 연결되고, 유선, 무선 또는 이들의 조합으로 될 수 있는 복수의 컴퓨터 처리 시스템들(810, 820, 830, 840, 850 및 860)을 가진 컴퓨터 네트워크(800)를 도시한다.
각각의 컴퓨터 처리 시스템은 키보드(811)와 마우스(812) (및 펜-인풋(pen-input), 조이스틱(joystick), 버튼(button), 터치 스크린(touch screen) 등과 같은 공지된 입력 장치들)와 같은 사용자 입력 장치들, 예를 들어, CRT, LCD, 또는 플라즈마 스크린 모니터(plasma screen monitor), TV, 프로젝터 등을 포함하는 디스플 레이(display)에 연결된 표시 인터페이스(display interface)(813)를 가지는 하나 이상의 컴퓨팅 장치들을 포함할 수 있다. 각각의 컴퓨터는 또한 컴퓨터 처리 시스템 내에 위치된 하나 이상의 메모리들 및 하나 이상의 프로세서들과 같은 장치들 내에 발견된 통상의 처리 구성요소들을 포함하는 것이 바람직하다. 이러한 컴퓨팅 장치 내의 메모리들과 프로세서들은 본 발명의 다양한 실시형태들에 따라 프로그램 레퍼런스들을 이용하여 프로그램 모듈들의 처리를 수행하도록 되어 있다. 메모리들은, 본 발명에 따라 코드 함수들 및 데이터 그룹들을 저장하기 위한 로컬 및 외부 메모리들을 포함할 수 있다.
본 발명은 특정 실시형태들과 관련하여 기술되었을 지라도, 이러한 실시형태들은 본 발명의 원리들과 응용예들을 예시한다. 많은 변형예들이 예시적인 실시형태들에 행해지고, 첨부된 청구범위에 의해 정해진 본 발명의 사상과 범위로부터 벗어나지 않고 다른 배열들이 행해질 수 있다.
본 발명은 컴퓨터 프로그램 실행 기술에 이용될 수 있다.

Claims (34)

  1. 로컬 메모리(local memory)를 갖는 처리 장치의 동작 관리 방법으로서,
    프로그램 레퍼런스(programming reference)와 관련되는 프로그램 모듈이 상기 로컬 메모리에 로드(load)되는지의 여부를 판단하는 단계;
    상기 프로그램 모듈(module)이 상기 로컬 메모리에 로드되지 않는 경우, 상기 로컬 메모리로 상기 프로그램 모듈을 로드하는 단계; 및
    상기 프로그램 레퍼런스에 근거하여 상기 프로그램 모듈로부터 정보를 획득하는 단계;를 포함하는 것을 특징으로 하는 방법.
  2. 제 1항에 있어서,
    상기 프로그램 모듈로부터 획득된 상기 정보는 데이터 및 코드 중 적어도 어느 하나를 포함하는 것을 특징으로 하는 방법.
  3. 제 1항 또는 제 2항에 있어서,
    상기 프로그램 모듈은 메인 메모리로부터 상기 로컬 메모리에 로드된 목적 모듈을 포함하는 것을 특징으로 하는 방법.
  4. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 프로그램 레퍼런스는 상기 프로그램 모듈 내에의 직접 레퍼런스를 포함 하는 것을 특징으로 하는 방법.
  5. 제 1항 내지 제 4항 중 어느 한 항에 있어서,
    상기 프로그램 레퍼런스는 제 2 프로그램 모듈에의 간접 레퍼런스를 포함하는 것을 특징으로 하는 방법.
  6. 제 1항 내지 제 5항 중 어느 한 항에 있어서,
    상기 프로그램 모듈은 제 1 프로그램 모듈이고,
    메인 메모리에 상기 제 1 프로그램 모듈과 제 2 프로그램 모듈을 저장하는 단계;를 더 포함하며,
    상기 로드하는 단계는 상기 메인 메모리로부터 상기 로컬 메모리로 상기 제 1 프로그램 모듈을 로드하는 단계를 포함하는 것을 특징으로 하는 방법.
  7. 제 6항에 있어서,
    상기 프로그램 레퍼런스는 상기 제 1 프로그램 모듈 내에의 직접 레퍼런스를 포함하는 것을 특징으로 하는 방법.
  8. 제 6항 또는 제 7항에 있어서,
    상기 프로그램 레퍼런스는 상기 제 2 프로그램 모듈에의 간접 레퍼런스를 포함하는 것을 특징으로 하는 방법.
  9. 제 8항에 있어서,
    상기 정보는 상기 제 2 프로그램 모듈로부터 획득되고,
    상기 제 2 프로그램 모듈이 상기 로컬 메모리에 로드되는지의 여부를 판단하는 단계;
    상기 제 2 프로그램 모듈이 상기 로컬 메모리에 로드되지 않는 경우, 상기 로컬 메모리로 상기 제 2 프로그램 모듈을 로드하는 단계; 및
    상기 제 1 프로그램 모듈로 상기 정보를 제공하는 단계;를 더 포함하는 것을 특징으로 하는 방법.
  10. 로컬 메모리를 갖는 처리 장치의 동작 관리 방법으로서,
    메인 메모리로부터 제 1 프로그램 모듈을 획득하는 단계;
    상기 메인 메모리로부터 제 2 프로그램 모듈을 획득하는 단계;
    상기 제 1 프로그램 모듈에 의해 이용된 프로그램 레퍼런스가 상기 제 2 프로그램 모듈에의 간접 레퍼런스를 포함하는지의 여부를 판단하는 단계; 및
    상기 프로그램 레퍼런스가 상기 간접 레퍼런스를 포함하는 경우, 신규 프로그램 모듈을 형성하는 단계;를 포함하며,
    상기 프로그램 레퍼런스가 상기 신규 프로그램 모듈의 복수개의 부분들 사이에의 직접 레퍼런스가 되도록, 상기 신규 프로그램 모듈은 상기 제 1 프로그램 모듈의 적어도 일부분을 포함하는 것을 특징으로 하는 방법.
  11. 제 10항에 있어서,
    상기 로컬 메모리로 상기 신규 프로그램 모듈을 로드하는 단계;를 더 포함하는 것을 특징으로 하는 방법.
  12. 제 10항 또는 제 11항에 있어서,
    상기 신규 프로그램 모듈을 형성하는 단계 전에, 상기 제 1 및 제 2 프로그램 모듈들은 상기 로컬 메모리에 로드되는 것을 특징으로 하는 방법.
  13. 제 10항 내지 제 12항 중 어느 한 항에 있어서,
    상기 제 1 프로그램 모듈은 제 1 코드 함수를 포함하고,
    상기 제 2 프로그램 모듈은 제 2 코드 함수를 포함하며,
    상기 신규 프로그램 모듈은 상기 제 1 및 제 2 코드 함수들 중 적어도 어느 하나를 포함하여 형성되는 것을 특징으로 하는 방법.
  14. 제 10항 내지 제 13항 중 어느 한 항에 있어서,
    상기 제 1 프로그램 모듈은 데이터 그룹을 더 포함하며,
    상기 신규 프로그램 모듈은 상기 데이터 그룹을 더 포함하여 형성되는 것을 특징으로 하는 방법.
  15. 제 10항 내지 제 14항 중 어느 한 항에 있어서,
    상기 프로그램 레퍼런스는 제 2 프로그램 모듈에의 간접 레퍼런스이고,
    상기 제 1 프로그램 모듈에 의해 이용된 상기 프로그램 레퍼런스에 근거하여 신규 프로그램 모듈에 의한 이용을 위해 상기 신규 프로그램 레퍼런스를 판단하는 단계;를 더 포함하며,
    상기 신규 프로그램 레퍼런스가 상기 신규 프로그램 모듈 내에의 직접 레퍼런스가 되도록, 상기 신규 프로그램 모듈은 상기 제 1 프로그램 모듈의 적어도 일부분 및 상기 제 2 프로그램 모듈의 적어도 일부분을 포함하여 형성되는 것을 특징으로 하는 방법.
  16. 로컬 메모리를 갖는 처리 장치의 동작 처리 방법으로서,
    상기 로컬 메모리에 로드된 제 1 프로그램 모듈을 실행하는 단계;
    제 2 프로그램 모듈의 삽입점을 판단하는 단계;
    상기 제 1 프로그램 모듈의 실행 중에 상기 로컬 메모리에 상기 제 2 프로그램 모듈을 로드하는 단계;
    상기 제 2 프로그램 모듈의 실행을 개시하기 위하여 예측 실행 시간을 판단하는 단계;
    상기 제 2 프로그램 모듈의 로드가 완료되는지의 여부를 판단하는 단계; 및
    상기 제 1 프로그램 모듈의 실행이 종료된 후에, 상기 제 2 프로그램 모듈을 실행하는 단계;를 포함하는 것을 특징으로 하는 방법.
  17. 제 16항에 있어서,
    로드가 완료되지 않는 경우, 상기 제 2 프로그램 모듈의 실행을 지연시키는 단계;를 더 포함하는 것을 특징으로 하는 방법.
  18. 제 17항에 있어서,
    상기 실행을 지연시키는 단계는 로드가 완료될 때까지 하나 이상의 NOP들을 수행하는 단계를 포함하는 것을 특징으로 하는 방법.
  19. 제 16항 내지 제 18항 중 어느 한 항에 있어서,
    상기 삽입점은 통계적으로 판단되는 것을 특징으로 하는 방법.
  20. 제 16항 내지 제 19항 중 어느 한 항에 있어서,
    상기 삽입점의 유효성은 실행 상태에 기반을 두고 판단되는 것을 특징으로 하는 방법.
  21. 프로그램 모듈을 저장하는 것이 가능한 로컬 메모리; 및
    상기 로컬 메모리에 접속된 프로세서;를 포함하는 처리 시스템에 있어서,
    상기 프로세서는,
    상기 프로그램 모듈과 프로그램 레퍼런스를 관련시키는 기능, 상기 프로그램 모듈이 상기 로컬 메모리에 현재 로드되는지의 여부를 판단하는 기능, 상기 프로그램 모듈이 상기 로컬 메모리 내에 현재 로드되지 않는 경우 상기 로컬 메모리로 상기 프로그램 모듈을 로드하는 기능 및 상기 프로그램 레퍼런스에 근거하여 상기 프로그램 모듈로부터 정보를 획득하는 기능을 포함하는 관리 기능을 수행할 논리를 포함하는 것을 특징으로 하는 처리 시스템.
  22. 제 21항에 있어서,
    상기 로컬 메모리는 상기 프로세서와 통합되는 것을 특징으로 하는 처리 시스템.
  23. 프로그램 모듈을 저장하는 것이 가능한 로컬 메모리; 및
    상기 로컬 메모리에 접속된 프로세서;를 포함하는 처리 시스템으로서,
    상기 프로세서는,
    메인 메모리에 상기 프로그램 모듈 중 제 1 및 제 2 프로그램 모듈을 저장하는 기능, 상기 메인 메모리로부터 상기 로컬 메모리로 상기 제 1 및 제 2 프로그램 모듈 중 선택된 프로그램 모듈을 로드하는 기능, 상기 선택된 프로그램 모듈과 프로그램 레퍼런스를 관련시키는 기능 및 상기 프로그램 레퍼런스에 근거하여 정보를 획득하는 기능을 포함하는 관리 기능을 수행할 논리를 포함하는 것을 특징으로 하는 시스템.
  24. 제 23항에 있어서,
    상기 메인 메모리는 온칩(on-chip) 메모리를 포함하는 것을 특징으로 하는 시스템.
  25. 제 23항 또는 제 24항에 있어서,
    상기 메인 메모리는 상기 프로세서와 통합되는 것을 특징으로 하는 시스템.
  26. 프로그램 모듈을 저장하는 것이 가능한 로컬 메모리; 및
    상기 로컬 메모리에 접속된 프로세서;를 포함하는 처리 시스템으로서,
    상기 프로세서는,
    메인 메모리로부터 제 1 프로그램 모듈을 획득하는 기능, 상기 메인 메모리로부터 제 2 프로그램 모듈을 획득하는 기능, 상기 제 1 프로그램 모듈에 의한 이용을 위해 제 1 프로그램 레퍼런스를 판단하는 기능, 상기 제 1 프로그램 레퍼런스가 신규 프로그램 모듈 내에의 직접 레퍼런스가 되도록 상기 제 1 프로그램 모듈의 적어도 일부분을 포함하는 상기 신규 프로그램 모듈을 형성하는 기능 및 상기 로컬 메모리로 상기 신규 프로그램 모듈을 로드하는 기능을 포함하는 관리 기능을 수행할 논리를 포함하는 것을 특징으로 하는 시스템.
  27. 프로그램 모듈을 저장하는 것이 가능한 로컬 메모리; 및
    상기 로컬 메모리에 접속된 프로세서;를 포함하는 처리 시스템으로서,
    상기 프로세서는,
    제 1 프로그램 모듈의 삽입점을 판단하는 기능, 상기 프로세서에 의한 제 2 프로그램 모듈의 실행 중에 상기 로컬 메모리에 상기 제 1 프로그램 모듈을 로드하는 기능 및 상기 제 2 프로그램 모듈의 실행이 종료되고 로드가 완료된 후에 상기 제 1 프로그램 모듈을 실행하는 기능을 포함하는 관리 기능을 수행할 논리를 포함하는 것을 특징으로 하는 시스템.
  28. 프로세서에 의한 이용을 위해 프로그램을 저장하는 저장 매체로서,
    상기 프로그램은 상기 프로세서가:
    프로그램 레퍼런스와 관련된 프로그램 모듈을 식별;
    상기 프로그램 모듈이 상기 프로세서와 관련된 로컬 메모리에 현재 로드되었는지의 여부를 판단;
    상기 프로그램 모듈이 상기 로컬 메모리에 현재 로드되지 않는 경우 상기 로컬 메모리로 상기 프로그램 모듈을 로드; 및
    상기 프로그램 레퍼런스에 근거하여 상기 프로그램 모듈로부터 정보를 획득;을 수행하도록 하는 것을 특징으로 하는 저장 매체.
  29. 프로세서에 의한 이용을 위해 프로그램을 저장하는 저장 매체로서,
    상기 프로그램은 상기 프로세서가:
    메인 메모리에 제 1 및 제 2 프로그램 모듈들을 저장;
    상기 메인 메모리로부터 상기 프로세서와 관련된 로컬 메모리로 프로그램 레퍼런스와 관련되는 상기 제 1 프로그램 모듈을 로드; 및
    상기 프로그램 레퍼런스에 근거하여 정보를 획득;을 수행하도록 하는 것을 특징으로 하는 저장 매체.
  30. 프로세서에 의한 이용을 위해 프로그램을 저장하는 저장 매체로서,
    상기 프로그램은 상기 프로세서가:
    메인 메모리로부터 제 1 프로그램 모듈을 획득하고,
    상기 메인 메모리로부터 제 2 프로그램 모듈을 획득하고,
    상기 제 1 프로그램 모듈에 의해 이용된 프로그램 레퍼런스가 상기 제 2 프로그램 모듈에의 간접 레퍼런스를 포함하는지의 여부를 판단하며,
    상기 프로그램 레퍼런스가 상기 간접 레퍼런스를 포함하는 경우, 상기 프로그램 레퍼런스가 신규 프로그램 모듈의 복수개의 부분 사이에의 직접 레퍼런스가 되도록 상기 제 1 프로그램 모듈의 적어도 일부분을 포함하는 상기 신규 프로그램 모듈을 형성하도록 하는 것을 특징으로 하는 저장 매체.
  31. 프로세서에 의한 이용을 위해 프로그램을 저장하는 저장 매체로서,
    상기 프로그램은 상기 프로세서가:
    상기 프로세서와 관련된 로컬 메모리에 로드된 제 1 프로그램 모듈을 실행하고,
    제 2 프로그램 모듈의 삽입점을 판단하고,
    상기 제 1 프로그램 모듈의 실행 중에 상기 로컬 메모리에 상기 제 2 프로그램 모듈을 로드하고,
    상기 제 2 프로그램 모듈의 실행을 개시하기 위하여 예측 실행 시간을 판단하고,
    상기 제 2 프로그램 모듈의 로드가 완료되는지의 여부를 판단하며,
    상기 제 1 프로그램 모듈의 실행이 종료된 후에 상기 제 2 프로그램 모듈을 실행하도록 하는 것을 특징으로 하는 저장 매체.
  32. 버스, 처리 유닛 및 상기 버스에 의해 상기 처리 유닛에 접속되는 적어도 하나의 부처리 유닛을 구비하는 처리 요소를 포함하는 처리 시스템에 있어서,
    상기 처리 유닛 중 적어도 하나와 상기 적어도 하나의 부처리 유닛은, 로컬 메모리로 제 1 프로그램 모듈을 로드하고, 프로그램 레퍼런스에 근거하여 상기 제 1 프로그램 모듈로부터 정보를 획득하기 위하여, 상기 프로그램 레퍼런스가 상기 제 1 프로그램 모듈에 속하는지의 여부를 판단하도록 동작하는 것을 특징으로 하는 처리 시스템.
  33. 사용자 입력 장치;
    표시 장치의 부착을 위한 표시 인터페이스(display interface);
    프로그램 모듈을 저장하는 것이 가능한 로컬 메모리; 및
    상기 로컬 메모리에 접속된 프로세서;를 포함하는 컴퓨터 처리 시스템에 있어서,
    상기 프로세서는 하나 이상의 처리 요소를 포함하고,
    상기 처리 요소 중 적어도 하나는 프로그램 레퍼런스가 제 1 프로그램 모듈에 속하는지의 여부를 판단하는 기능, 상기 로컬 메모리로 상기 제 1 프로그램 모듈을 로드하는 기능 및 상기 프로그램 레퍼런스에 근거하여 상기 제 1 프로그램 모듈로부터 정보를 획득하는 기능을 포함하는 관리 기능을 수행할 논리를 포함하는 것을 특징으로 하는 컴퓨터 처리 시스템.
  34. 통신 네트워크를 통하여 서로 접속되는 다수개의 컴퓨터 처리 시스템을 포함하는 컴퓨터 네트워크로서,
    컴퓨터 처리 시스템 각각은,
    사용자 입력 장치;
    표시 장치의 부착을 위한 표시 인터페이스;
    프로그램 모듈을 저장하는 것이 가능한 로컬 메모리; 및
    상기 로컬 메모리에 접속된 프로세서;를 포함하며,
    상기 프로세서는 하나 이상의 처리 요소를 포함하고,
    상기 처리 요소 중 적어도 하나는 프로그램 레퍼런스가 제 1 프로그램 모듈에 속하는지의 여부를 판단하는 기능, 상기 로컬 메모리로 상기 제 1 프로그램 모듈을 로드하는 기능, 및 상기 프로그램 레퍼런스에 근거하여 상기 제 1 프로그램 모듈로부터 정보를 획득하는 기능을 포함하는 관리 기능을 수행할 논리를 포함하는 것을 특징으로 하는 컴퓨터 네트워크.
KR1020067018235A 2004-10-01 2005-09-29 처리 유닛의 동적 로드 및 언로드 KR20070032294A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020067018235A KR20070032294A (ko) 2004-10-01 2005-09-29 처리 유닛의 동적 로드 및 언로드

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/957,158 2004-10-01
KR1020067018235A KR20070032294A (ko) 2004-10-01 2005-09-29 처리 유닛의 동적 로드 및 언로드

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020087026005A Division KR20080104073A (ko) 2004-10-01 2005-09-29 처리 유닛의 동적 로드 및 언로드

Publications (1)

Publication Number Publication Date
KR20070032294A true KR20070032294A (ko) 2007-03-21

Family

ID=43656303

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067018235A KR20070032294A (ko) 2004-10-01 2005-09-29 처리 유닛의 동적 로드 및 언로드

Country Status (1)

Country Link
KR (1) KR20070032294A (ko)

Similar Documents

Publication Publication Date Title
KR20080104073A (ko) 처리 유닛의 동적 로드 및 언로드
Vijaykumar et al. A case for core-assisted bottleneck acceleration in GPUs: enabling flexible data compression with assist warps
US7392511B2 (en) Dynamically partitioning processing across plurality of heterogeneous processors
US8327109B2 (en) GPU support for garbage collection
US8301672B2 (en) GPU assisted garbage collection
US8782645B2 (en) Automatic load balancing for heterogeneous cores
US20120159495A1 (en) Non-blocking wait-free data-parallel scheduler
US20050081182A1 (en) System and method for balancing computational load across a plurality of processors
US11360809B2 (en) Multithreaded processor core with hardware-assisted task scheduling
US11620510B2 (en) Platform for concurrent execution of GPU operations
US8595747B2 (en) Efficient task scheduling by assigning fixed registers to scheduler
US20110219373A1 (en) Virtual machine management apparatus and virtualization method for virtualization-supporting terminal platform
Govindarajan et al. Design and performance evaluation of a multithreaded architecture
CN114035847B (zh) 用于并行执行核心程序的方法和装置
Vijaykumar et al. A Framework for Accelerating Bottlenecks in GPU Execution with Assist Warps
US8886917B1 (en) Switching to core executing OS like codes upon system call reading greater than predetermined amount of data
KR20070032294A (ko) 처리 유닛의 동적 로드 및 언로드
US7500088B2 (en) Methods and apparatus for updating of a branch history table
US20230115542A1 (en) Programmable matrix multiplication engine
US20130290688A1 (en) Method of Concurrent Instruction Execution and Parallel Work Balancing in Heterogeneous Computer Systems
Maquelin Load balancing and resource management in the ADAM machine
JP2004086921A (ja) マルチプロセッサシステムおよびマルチプロセッサシステムにおいてタスクを実行する方法
Nguyen et al. Input/output processing using on-chip memory for Cyber Physical System
Jog et al. A Case for Core-Assisted Bottleneck Acceleration in GPUs: Enabling Flexible Data Compression with Assist Warps
Huangfu Improving the Performance and Time-Predictability of GPUs

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application
J201 Request for trial against refusal decision
A107 Divisional application of patent
J121 Written withdrawal of request for trial
WITB Written withdrawal of application