KR20100108054A - 복수의 프로세서들을 포함하는 시스템 장치 및 그 변수 선언 및 사용 방법 - Google Patents

복수의 프로세서들을 포함하는 시스템 장치 및 그 변수 선언 및 사용 방법 Download PDF

Info

Publication number
KR20100108054A
KR20100108054A KR1020090026506A KR20090026506A KR20100108054A KR 20100108054 A KR20100108054 A KR 20100108054A KR 1020090026506 A KR1020090026506 A KR 1020090026506A KR 20090026506 A KR20090026506 A KR 20090026506A KR 20100108054 A KR20100108054 A KR 20100108054A
Authority
KR
South Korea
Prior art keywords
structure array
variables
variable
stored
array element
Prior art date
Application number
KR1020090026506A
Other languages
English (en)
Other versions
KR101592974B1 (ko
Inventor
전혜란
이우형
이민규
김운기
오지성
권자근
고택균
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020090026506A priority Critical patent/KR101592974B1/ko
Priority to US12/724,671 priority patent/US8423723B2/en
Publication of KR20100108054A publication Critical patent/KR20100108054A/ko
Application granted granted Critical
Publication of KR101592974B1 publication Critical patent/KR101592974B1/ko

Links

Images

Classifications

    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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
    • 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4494Execution paradigms, e.g. implementations of programming paradigms data driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/468Specific access rights for resources, e.g. using capability register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

복수의 프로세서들을 포함하는 시스템 장치 및 그 변수 선언 및 사용 방법이 개시된다. 상기 변수 선언 및 사용 방법은 복수의 프로세서들이 독립적으로 사용하는 변수들을 검출하는 단계, 상기 검출된 독립적으로 사용하는 변수들을 하나의 구조체 배열 요소에 포함되도록 선언하고 상기 구조체 배열 요소를 복수개 포함하는 구조체 배열을 선언하는 단계 및 상기 각각의 프로세서는 대응하는 구조체 배열 요소에서 선언되어 있는 변수들을 사용하는 단계를 구비할 수 있다.

Description

복수의 프로세서들을 포함하는 시스템 장치 및 그 변수 선언 및 사용 방법 {System device comprising a plurality of processors and Method for declaring and using variables thereof}
본 발명은 시스템 장치에 관한 것으로, 특히 복수의 프로세서들을 포함하는 시스템 장치 및 그 변수 선언 및 사용 방법에 관한 것이다.
변수들이 선언되고, 복수의 프로세서(processor)들이 상기 선언된 변수들 중 하나를 사용하고자 하는 경우, 복수의 프로세서들은 동시에 상기 변수를 사용할 수 없다. 즉, 상기 변수를 사용하고자 하는 경우 일반적으로 상기 복수의 프로세서들은 소정의 순서에 따라 한번에 복수의 프로세서들 중 하나의 프로세서만이 상기 변수를 사용할 수 있다.
본 발명이 해결하고자 하는 과제는 메모리의 불필요한 소모를 최소화하면서 빠르고 안전하게 변수를 사용할 수 있는 변수 선언 및 사용 방법을 제공하는데 있다.
본 발명이 해결하고자 하는 다른 과제는 상기 변수 선언 및 사용 방법을 이용하는 시스템 장치를 제공하는데 있다.
상기 과제를 달성하기 위한 본 발명의 일 실시예에 따른 변수 선언 및 사용 방법은 복수의 프로세서들이 독립적으로 사용하는 변수들을 검출하는 단계, 상기 검출된 독립적으로 사용하는 변수들을 하나의 구조체 배열 요소에 포함되도록 선언하고 상기 구조체 배열 요소를 복수개 포함하는 구조체 배열을 선언하는 단계 및 상기 각각의 프로세서는 대응하는 구조체 배열 요소에서 선언되어 있는 변수들을 사용하는 단계를 구비할 수 있다.
상기 변수 선언 및 사용 방법은 상기 구조체 배열 요소의 크기가 상기 구조체 배열 요소가 저장될 캐시 메모리의 적어도 하나의 라인 크기에 매칭되도록 패딩 영역을 상기 구조체배열 요소에 정의하는 단계를 더 구비할 수 있다.
상기 변수 선언 및 사용 방법은 상기 각각의 프로세서에 대응하는 구조체 배열 요소에 포함되어 있는 상기 선언된 변수를 찾을 수 있는 매크로 함수를 정의하는 단계를 더 구비할 수 있다.
상기 변수 선언 및 사용 방법은 상기 매크로 함수를 이용하여 상기 각각의 프로세서에 대응하는 구조체 배열 요소에 포함되어 있는 상기 선언된 변수를 매크로 처리하는 단계를 더 구비할 수 있다.
상기 다른 과제를 달성하기 위한 본 발명의 일 실시예에 따른 시스템 장치는 변수들이 선언된 구조체 배열 요소가 복수개 포함되도록 배열로 선언된 구조체 배열이 저장되는 주메모리 및 대응하는 구조체 배열 요소에 저장되어 있는 상기 선언된 변수들을 사용하는 복수의 프로세서들을 구비하고, 상기 변수들은 상기 프로세서들이 독립적으로 사용하는 변수들일 수 있다.
상기 시스템 장치는 적어도 하나의 라인을 포함하고 각각의 프로세서에 대응하는 복수의 캐시 메모리를 더 구비하고, 상기 구조체 배열 요소는 상기 구조체 배열 요소가 저장될 캐시 메모리의 적어도 하나의 라인 크기에 상기 구조체 배열 요소의 크기가 매칭되도록 패딩 영역을 구비할 수 있다.
본 발명에 따른 복수의 프로세서들을 포함하는 시스템 장치 및 그 변수 선언 및 사용 방법은 메모리의 불필요한 소모를 최소화할 수 있고, 최종 실행 파일 제작 시 링크스크립트 변경할 필요가 없으며, 별도의 오프셋(offset) 계산이나 기존 코드를 수정할 필요가 없으므로 빠르고 안전하게 변수를 사용할 수 있는 장점이 있다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 도면에 기재된 내용을 참조하여야 한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 일 실시예에 따른 변수 선언 및 사용 방법에 관한 흐름도이다.
도 1을 참조하면, 변수들 중 복수의 프로세서들 각각에서 독립적으로 사용하는 변수들 및 상기 프로세서들에서 공통적으로 사용하는 변수들이 결정된다(S110). 상기 S110 단계의 결정 결과, 독립적으로 사용하는 변수들은 하나의 구조체 배열 요소(structure array element)에 포함되도록 선언되고, 상기 구조체 배열 요소가 복수개 포함되도록 선언된 구조체 배열(structure array)이 주메모리에 저장될 수 있다. (S120). 예를 들어, 상기 프로세서가 n 개(n은 자연수)있는 경우, 상기 변수들은 n 개의 구조체 배열 요소를 포함하는 구조체 배열로 선언될 수 있다. 이 경우, i 번째(i는 n 이하의 자연수) 구조체 배열 요소에 포함된 변수는 i 번째 프로세서가 독립적으로 사용하는 변수가 된다. 그러므로, 상기 주메모리에는 n 개의 구조체 배열 요소를 포함하는 상기 구조체 배열이 저장될 수 있다. 상기 각각의 프로세서는 상기 대응하는 구조체 배열 요소에 저장되어 있는 변수들을 사용할 수 있다(S130). 상기 S110 단계의 결정 결과, 공통적으로 사용하는 변수들은 선언되어 주메모리 중 공유 영역에 저장될 수 있다(S140). 상기 프로세서들 중 하나의 프로 세서는 상기 공유 영역에 저장되어 있는 변수들을 사용한다(S150).
도 2는 본 발명의 일 실시예에 따른 시스템 장치(200)의 블록도이다.
도 2를 참조하면, 시스템 장치(200)는 주메모리(210) 및 복수의 프로세서들(260_1, 260_2, 260_3, 260_4)을 포함할 수 있다. 도 2에서는 제 1 내지 제 4 프로세서(260_1, 260_2, 260_3, 260_4)가 주메모리(210)에 저장되어 있는 변수를 사용하는 경우에 도시하고 있으나, 본 발명이 이 경우에 한정되는 것은 아니며 다른 개수의 프로세서들을 포함할 수도 있다.
주메모리(210)는 제 1 내지 제 4 구조체 배열 요소(ST_1, ST_2, ST_3, ST_4)를 포함하는 구조체 배열(ST)이 저장되는 영역 및 공유 영역(220)을 포함할 수 있다. 이하에서 제 1 내지 제 4 구조체 배열 요소(ST_1, ST_2, ST_3, ST_4)는 각각 제 1 내지 제 4 프로세서(260_1, 260_2, 260_3, 260_4)에 대응한다고 가정한다.
공유 영역(220)에는 제 1 내지 제 4 프로세서(260_1, 260_2, 260_3, 260_4)가 공통적으로 사용하는 변수들이 선언되어 저장될수 있다. 예를 들어, 제 1 내지 제 4 프로세서(260_1, 260_2, 260_3, 260_4)가 공통적으로 사용하는 변수들이 a 변수 및 b 변수라고 가정하자. 도 1 및 도 2의 실시예의 경우, a 변수 및 b 변수는 선언되어 공유 영역(220)에 저장된다.
제 1 내지 제 4 구조체 배열 요소(ST_1, ST_2, ST_3, ST_4)에는 제 1 내지 제 4 프로세서(260_1, 260_2, 260_3, 260_4)가 독립적으로 사용하는 변수들이 선언되어 저장될 수 있다. 예를 들어, 제 1 내지 제 4 프로세서(260_1, 260_2, 260_3, 260_4)에서 독립적으로 사용하는 변수들이 x 변수, y 변수 및 z 변수라고 가정하 자. 도 1 및 도 2의 실시예의 경우, x 변수, y 변수 및 z 변수는 구조체로 선언되고, 상기 변수들이 선언된 구조체가 구조체 배열(ST)로 선언된다. 그러므로, 구조체 배열(ST)은 제 1 내지 제 4 구조체 배열 요소(ST_1, ST_2, ST_3, ST_4)를 포함한다. 그리고, 제 1 구조체 배열 요소(ST_1)에 상기 선언된 x 변수, y 변수 및 z 변수가 저장되고, 제 2 구조체 배열 요소(ST_2) 에도 상기 선언된 x 변수, y 변수 및 z 변수가 저장된다. 마찬가지로, 제 3 구조체 배열 요소(ST_3)에 상기 선언된 x 변수, y 변수 및 z 변수가 저장되며, 제 4 구조체 배열 요소(ST_2)에도 상기 선언된 x 변수, y 변수 및 z 변수가 저장된다.
상기 구조체 배열 요소들의 개수는 프로세서들의 개수와 동일할 수 있다. 즉, 도 2에서는 시스템 장치(200)가 제 1 내지 제 4 프로세서(260_1, 260_2, 260_3, 260_4)를 포함하고 있으므로 주메모리(210)도 제 1 내지 제 4 구조체 배열 요소(ST_1, ST_2, ST_3, ST_4)가 저장될 수 있다. 다만, 앞서 기술한 바와 같이 본 발명에서는 상기 프로세서들의 개수가 변경될 수 있으며, 상기 프로세서들의 개수가 변경된 경우 상기 구조체 배열 요소들의 개수도 변경될 수 있다. 다만, 상기 구조체 배열 요소들의 개수와 프로세서들의 개수가 동일한 경우로 본 발명이 한정되는 것은 아니다.
제 1 구조체 배열 요소(ST_1)가 저장되는 영역은 상기 선언된 변수가 저장되는 제 1 변수 영역(230_1) 및 제 1 패딩 영역(240_1)을 포함할 수 있고, 제 2 구조체 배열 요소(ST_2)가 저장되는 영역은 상기 선언된 변수가 저장되는 제 2 변수 영역(230_2) 및 제 2 패딩 영역(240_2)을 포함할 수 있다. 마찬가지로, 제 3 구조체 배열 요소(ST_3)가 저장되는 영역은 상기 선언된 변수가 저장되는 제 3 변수 영역(230_3) 및 제 3 패딩 영역(240_3)을 포함할 수 있고, 제 4 구조체 배열 요소(ST_4)가 저장되는 영역은 상기 선언된 변수가 저장되는 제 4 변수 영역(230_4) 및 제 4 패딩 영역(240_4)을 포함할 수 있다. 제 1 내지 제 4 패딩 영역(240_1, 240_2, 240_3, 240_4)에 관하여는 도 3과 관련하여 보다 상세하게 설명한다.
시스템 장치(200)는 복수의 캐시 메모리(cache memory)( 250_1, 250_2, 250_3, 250_4)를 더 포함할 수 있다. 즉, 시스템 장치(200)는 제 1 내지 제 4 캐시 메모리(250_1, 250_2, 250_3, 250_4)를 포함할 수 있다. 제 1 내지 제 4 캐시 메모리(250_1, 250_2, 250_3, 250_4)는 각각 제 1 내지 제 4 프로세서(260_1, 260_2, 260_3, 260_4)에 대응한다. 그러므로, 상기 프로세서들의 개수가 변경되는 경우 상기 캐시 메모리의 개수도 변경될 수 있다.
이하에서는 도 1 및 도 2를 이용하여 본 발명의 일 실시예에 따라 시스템 장치(200)에서 변수를 선언하고 사용하는 방법에 대하여 보다 상세하게 설명한다.
S110 단계에서는 제 1 내지 제 4 프로세서(260_1, 260_2, 260_3, 260_4)가 독립적으로 사용하는 변수인지 아닌지를 판단한다. 즉, 변수들 중 제 1 내지 제 4 프로세서(260_1, 260_2, 260_3, 260_4)에서 독립적으로 사용하는 변수들 및 공통적으로 사용하는 변수들을 결정할 수 있다. 상기 공통적으로 사용하는 변수들은 선언되어 주메모리(210)의 공유 영역(210)에 저장될 수 있다. 그리고, 상기 독립적으로 사용하는 변수가 선언된 제 1 내지 제 4 구조체 배열 요소(ST_1, ST_2, ST_3, ST_4)를 포함하는 구조체 배열(ST)이 주메모리(210)에 저장될 수 있다.
먼저, 상기 독립적으로 사용하는 변수들을 각각의 프로세서에서 사용하는 경우에 대하여 설명한다. 제 1 프로세서(260_1)가 제 1 구조체 배열 요소(ST_1)에 저장된 변수들을 사용하고자 하는 경우, 제 1 구조체 배열 요소(ST_1)에 저장된 변수들은 제 1 캐시 메모리(250_1)에 저장될 수 있다. 그리고, 제 1 프로세서(260_1)는 제 1 캐시 메모리(250_1)에 저장된 상기 변수들을 사용할 수 있다. 제 2 프로세서(260_2)가 제 2 구조체 배열 요소(ST_2)에 저장된 변수들을 사용하고자 하는 경우, 제 2 구조체 배열 요소(ST_2)에 저장된 변수들은 제 2 캐시 메모리(250_2)에 저장될 수 있다. 그리고, 제 2 프로세서(260_2)는 제 2 캐시 메모리(250_2)에 저장된 상기 변수들을 사용할 수 있다. 마찬가지로, 제 3 프로세서(260_3)가 제 3 구조체 배열 요소(ST_3)에 저장된 변수들을 사용하고자 하는 경우 및 제 4 프로세서(260_4)가 제 4 구조체 배열 요소(ST_4)에 저장된 변수들을 사용하고자 하는 경우에도 동일한 방법으로, 제 3 구조체 배열 요소(ST_3)에 저장된 변수들은 제 3 캐시 메모리(250_3)에 저장되고 제 4 구조체 배열 요소(ST_4)에 저장된 변수들은 제 4 캐시 메모리(250_4)에 저장될 수 있다. 그리고, 제 3 프로세서(260_3)는 제 3 캐시 메모리(250_3)에 저장된 상기 변수들을 사용하고, 제 4 프로세서(260_4)는 제 4 캐시 메모리(250_4)에 저장된 상기 변수들을 사용할 수 있다.
다음으로, 상기 공통적으로 사용하는 변수들을 각각의 프로세서에서 사용하는 경우에 대하여 설명한다. 상기 공통적으로 사용하는 변수들은 제 1 내지 제 4 프로세서(260_1, 260_2, 260_3, 260_4)가 공통적으로 사용하는 변수들이다. 따라서, 한번에 제 1 내지 제 4 프로세서(260_1, 260_2, 260_3, 260_4) 중 하나의 프로 세서만이 공유 영역(220)에 저장된 변수들을 사용할 수 있다. 예를 들어, 제 2 프로세서(260_2)에서 공유 영역(220)에 저장된 변수를 사용하고자 하는 경우, 먼저 현재 상기 변수를 사용하는 프로세서가 없는지 확인한다. 만약 상기 변수를 사용하는 프로세서가 없다면 제 2 프로세서(260_2)는 나머지 프로세서에게 상기 변수를 사용할 것임을 알리고, 상기 변수는 제 2 캐시메모리(250_2)에 저장될 수 있다. 그리고, 제 2 프로세서(260_2)는 제 2 캐시메모리(250_2)에 저장된 상기 변수를 사용할 수 있다. 제 2 프로세서(260_2)가 상기 변수를 모두 사용한 후 나머지 프로세서에게 상기 변수 사용이 끝났음을 알리면, 나머지 프로세서들 중 하나의 프로세서가 상기와 같은 방법으로 상기 변수를 사용할 수 있다.
이상과 같이 본 발명은 상기 독립적으로 사용하는 변수들을 프로세서 개수에대응하는 복수개의 구조체 배열 요소를 포함하는 구조체 배열에 저장함으로서, 상기 프로세서에 대응하는 구조체 배열 요소에 저장되어 있는 변수를 간단하게 찾아서 사용할 수 있다. 예를 들어, 본 발명의 일 실시예에 따를 경우 상기 변수를 찾기 위한 별도의 오프셋(offset) 계산 없이 상기 프로세서의 아이디(ID) 정보를 이용하여 대응하는 구조체 배열 요소에 저장된 변수를 찾을 수 있다. 상기 프로세서의 아이디 정보는 하드웨어 상의 레지스터를 이용하여 확인할 수 있다.
도 3은 도 2의 제 1 캐시 메모리(250_1)를 도시한 도면이다.
일반적으로 캐시 메모리는 적어도 하나의 라인을 구비하고 있다. 도 3은 제 1 캐시 메모리(250_1)가 6개의 라인을 가지고 있는 경우를 도시하고 있으나, 본 발명이 이 경우에 한정되는 것은 아니며, 제 1 내지 제 4 캐시 메모리(250_1, 250_2, 250_3, 250_4)는 다른 개수의 라인을 구비하고 있을 수 있다. 이하에서는 설명의 편의상 제 1 캐시 메모리(250_1)에 대하여 설명한다. 다만, 이하의 실시예는 나머지 제 2 내지 제 4 캐시 메모리(250_2, 250_3, 250_4)에도 동일하게 적용될 수 있다.
도 2 및 도 3을 참조하여 제 1 구조체 배열 요소(ST_1)에서 선언된 변수가 제 1 캐시 메모리(250_1)에 저장되는 방법에 대하여 설명한다. 제 1 구조체 배열 요소(ST_1) 중 제 1 변수 영역(230_1)에 저장된 변수들이 제 1 캐시 메모리(250_1)의 310 영역에 저장된다고 가정하자. 제 1 캐시 메모리(250_1)는 라인 단위로 데이터를 저장 또는 삭제한다. 따라서, 제 1 캐시 메모리(250_1)에 제 1 구조체 배열 요소(260_1)에 저장된 변수들을 저장하고자 하는 경우, 제 1 캐시 메모리(250_1)의 310 영역 및 320 영역이 모두 갱신된다. 이 경우, 310 영역에는 제 1 구조체 배열 요소(ST_1)가 저장되고 320 영역에는 주메모리(210)에서 제 1 구조체 배열 요소(ST_1)와 인접하게 저장되어 있던 데이터가 저장된다. 예를 들어, 도 2에서 제 1 변수 영역(230_1)과 제 2 변수 영역(230_2) 사이에 제 1 패딩 영역(240_1)이 없다면, 320 영역에는 제 2 변수 영역(230_2)에 저장되어 있던 데이터 중 일부 데이터가 저장된다. 상기와 같이 제 2 변수 영역(230_2)에 저장되어 있던 데이터 중 일부 데이터가 320 영역에 저장된 경우, 320 영역을 삭제하기 위하여는 320 영역이 포함된 라인 전체에 저장된 데이터를 삭제하여야 하므로 제 1 구조체 배열 요소(ST_1)에 저장되어 있던 데이터 중 일부가 삭제될 수 있다.
그러므로, 본 발명의 일 실시예에서는 제 1 구조체 배열 요소(ST_1)가 제 1 캐시 메모리(320_1)의 320 영역에 저장되는 제 1 패딩 영역(240_1)을 더 포함할 수 있다. 제 1 패딩 영역(240_1)은 데이터를 포함하지 않는 영역으로 정의될 수 있다. 따라서, 제 1 캐시 메모리(250_1)의 310 영역에는 제 1 변수 영역(230_1)에 저장되어 있던 변수가 저장되고, 320 영역에는 이전에 저장되어 있던 데이터가 삭제되어 어떠한 데이터도 남아있지 않게 된다.
이상과 같은 실시예를 구현하기 위하여, 제 1 구조체 배열 요소(ST_1)의 크기가 제 1 캐시 메모리(250_1)의 소정의 개수의 라인 크기에 매칭되도록 제 1 패딩 영역(240_1)의 크기를 결정할 수 있다. 즉, 제 1 변수 영역(230_1)에서 선언된 변수가 저장되는 제 1 캐시 메모리(250_1)의 마지막 라인의 나머지 부분(320)의 크기에 대응되도록 제 1 패딩 영역(240_1)의 크기를 설정할 수 있다.
도 4(a)는 본 발명의 일 실시예에 따라 변수를 찾기 위하여 정의된 매크로 함수를 정의하는 방법을 도시한 도면이다.
도 4(b)는 도 4(a)에 의하여 정의된 매크로 함수를 이용하여 변수에 소정의 값을 인가하는 방법을 도시한 도면이다.
도 4(a) 및 도 4(b)를 참조하면, 각각의 프로세서에서 변수를 쉽게 사용하기 위하여 도 4(a)와 같은 매크로 함수를 정의하여 사용할 수 있다. 도 4(a)에서는 {}부분에서 변수들이 하나의 구조체 배열 요소에 포함되도록 구조체를 선언하고, PerCore gPerCore [NUM_PROCESSOR]에서 구조체 배열을 선언하며, PerCoreInterface라는 매크로 함수를 정의하고 있다. 그리고, 도 4(b)에서는 상기 매크로 함수를 이용하여 x라는 변수에 3이라는 값을 지정하고 있다. 도 4(b)와 같이 상기 매크로 함 수를 이용하여 변수에 소정의 값을 지정하는 경우, 현재 동작중인 프로세서에 대응하는 구조체의 변수를 간단하게 찾아서 상기 소정의 값을 지정할 수 있다.
도 5(a)는 본 발명의 일 실시예에 따라 변수를 매크로 처리하는 방법을 도시한 도면이다.
도 5(b)는 도 5(a)에 의하여 매크로 처리된 변수에 소정의 값을 인가하는 방법을 도시한 도면이다.
도 4(a), 도 5(a) 및 도 5(b)를 참조하면, 본 발명은 각각의 프로세서에서 변수를 쉽게 사용하기 위하여 도 5(a)와 같이 변수를 매크로 처리하여 사용할 수 있다. 도 4(a)와 같이 매크로 함수를 정의한 경우, 도 5(a)에서 도 4(a)에서 정의한 PerCoreInterface라는 매크로 함수를 이용하여 변수를 매크로 처리하고, 도 5(b)에서는 x라는 변수에 3이라는 값을 지정하고 있다. 도 5(b)와 같이 매크로 처리된 변수에 소정의 값을 지정하는 경우에도 현재 동작중인 프로세서에 대응하는 구조체의 변수를 간단하게 찾아서 상기 소정의 값을 지정할 수 있다. 즉, 도 5(a) 및 도 5(b)의 실시예는 변수를 매크로 처리하므로 도 4(a) 및 도 4(b)의 실시예와 같이 매크로 함수를 이용하지 않고도 간단하게 변수에 소정의 값을 지정할 수 있다.
따라서, 도 4(a) 및 도 4(b)의 실시예 또는 도 5(a) 및 도 5(b)의 실시예를 이용하여 보다 간편하게 변수에 소정의 값을 지정할 수 있다. 즉, 도 4(a) 및 도 4(b)의 실시예 또는 도 5(a) 및 도 5(b)의 실시예를 이용하여 각각의 프로세서는 별도의 오프셋 계산이나 기존의 코드를 수정함이 없이 변수를 간단하게 사용할 수 있다. 다만, 도 4(a) 내지 도 5(b)의 실시예를 이용하여 변수를 찾아 소정의 값을 인가하는 경우로 본 발명이 한정되는 것은 아니다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 일 실시예에 따른 변수 사용 방법에 관한 흐름도이다.
도 2는 본 발명의 일 실시예에 따른 시스템 장치의 블록도이다.
도 3은 도 2의 제 1 캐시 메모리를 도시한 도면이다.
도 4(a)는 본 발명의 일 실시예에 따라 변수를 찾기 위하여 정의된 매크로 함수를 정의하는 방법을 도시한 도면이다.
도 4(b)는 도 4(a)에 의하여 정의된 매크로 함수를 이용하여 변수에 소정의 값을 인가하는 방법을 도시한 도면이다.
도 5(a)는 본 발명의 일 실시예에 따라 변수를 매크로 처리하는 방법을 도시한 도면이다.
도 5(b)는 도 5(a)에 의하여 매크로 처리된 변수에 소정의 값을 인가하는 방법을 도시한 도면이다.

Claims (9)

  1. 복수의 프로세서들이 독립적으로 사용하는 변수들을 검출하는 단계
    상기 검출된 독립적으로 사용하는 변수들을 하나의 구조체 배열 요소에 포함되도록 선언하고 상기 구조체 배열 요소를 복수개 포함하는 구조체 배열을 선언하는 단계 및
    상기 각각의 프로세서는 대응하는 구조체 배열 요소에서 선언되어 있는 변수들을 사용하는 단계를 구비하는 것을 특징으로 하는 변수 선언 및 사용 방법.
  2. 제1항에 있어서, 상기 변수 선언 및 사용 방법은,
    상기 구조체 배열 요소의 크기가 상기 구조체 배열 요소가 저장될 캐시 메모리의 적어도 하나의 라인 크기에 매칭되도록 패딩 영역을 상기 구조체배열 요소에 정의하는 단계를 더 구비하는 것을 특징으로 하는 변수 선언 및 사용 방법.
  3. 제2항에 있어서, 상기 변수 선언 및 사용 방법은,
    상기 각각의 프로세서에 대응하는 구조체 배열 요소에 포함되어 있는 상기 선언된 변수를 찾을 수 있는 매크로 함수를 정의하는 단계를 더 구비하는 것을 특징으로 하는 변수 선언 및 사용 방법.
  4. 제3항에 있어서, 상기 변수 선언 및 사용 방법은,
    상기 매크로 함수를 이용하여 상기 각각의 프로세서에 대응하는 구조체 배열 요소에 포함되어 있는 상기 선언된 변수를 매크로 처리하는 단계를 더 구비하는 것을 특징으로 하는 변수 선언 및 사용 방법.
  5. 제1항에 있어서, 상기 변수 선언 및 사용 방법은,
    상기 프로세서들이 공통적으로 사용하는 변수들을 검출하는 단계 및
    상기 공통적으로 사용하는 변수들을 선언하는 단계 및
    상기 프로세서들 중 하나의 프로세서에서 상기 선언되어 있는 변수들을 사용하는 단계를 더 구비하는 것을 특징으로 하는 변수 선언 및 사용 방법.
  6. 변수들이 선언된 구조체 배열 요소가 복수개 포함되도록 배열로 선언된 구조체 배열이 저장되는 주메모리 및
    대응하는 구조체 배열 요소에 저장되어 있는 상기 선언된 변수들을 사용하는 복수의 프로세서들을 구비하고,
    상기 변수들은,
    상기 프로세서들이 독립적으로 사용하는 변수들인 것을 특징으로 하는 시스템 장치.
  7. 제6항에 있어서, 상기 시스템 장치는,
    적어도 하나의 라인을 포함하고 각각의 프로세서에 대응하는 복수의 캐시 메 모리를 더 구비하고,
    상기 구조체 배열 요소는,
    상기 구조체 배열 요소가 저장될 캐시 메모리의 적어도 하나의 라인 크기에 상기 구조체 배열 요소의 크기가 매칭되도록 패딩 영역을 구비하는 것을 특징으로 하는 시스템 장치.
  8. 제6항에 있어서, 상기 주메모리에는,
    상기 각각의 프로세서에 대응하는 구조체 배열 요소에 저장되어 있는 상기 선언된 변수를 찾을 수 있는 매크로 함수가 저장되는 것을 특징으로 하는 시스템 장치.
  9. 제8항에 있어서, 상기 주메모리에는,
    상기 매크로 함수를 이용하여 상기 각각의 프로세서에 대응하는 구조체 배열 요소에 저장되어 있는 상기 선언된 변수가 매크로 처리되어 저장되는 것을 특징으로 하는 시스템 장치.
KR1020090026506A 2009-03-27 2009-03-27 복수의 프로세서들을 포함하는 시스템 장치 및 그 변수 선언 및 사용 방법 KR101592974B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090026506A KR101592974B1 (ko) 2009-03-27 2009-03-27 복수의 프로세서들을 포함하는 시스템 장치 및 그 변수 선언 및 사용 방법
US12/724,671 US8423723B2 (en) 2009-03-27 2010-03-16 Multi-processor system device and method declaring and using variables

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090026506A KR101592974B1 (ko) 2009-03-27 2009-03-27 복수의 프로세서들을 포함하는 시스템 장치 및 그 변수 선언 및 사용 방법

Publications (2)

Publication Number Publication Date
KR20100108054A true KR20100108054A (ko) 2010-10-06
KR101592974B1 KR101592974B1 (ko) 2016-02-12

Family

ID=42785696

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090026506A KR101592974B1 (ko) 2009-03-27 2009-03-27 복수의 프로세서들을 포함하는 시스템 장치 및 그 변수 선언 및 사용 방법

Country Status (2)

Country Link
US (1) US8423723B2 (ko)
KR (1) KR101592974B1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07295884A (ja) * 1994-04-26 1995-11-10 Toshiba Corp マルチプロセッサシステム及びメモリアロケーション方法
JP2008198143A (ja) * 2007-02-15 2008-08-28 Fuji Electric Fa Components & Systems Co Ltd プログラマブルコントローラ用プログラム作成支援装置およびプログラム作成支援方法
KR20090010942A (ko) * 2007-02-19 2009-01-30 미쓰비시덴키 가부시키가이샤 프로그래머블 컨트롤러의 주변 장치, 치환 방법 및프로그램
JP2009048259A (ja) * 2007-08-14 2009-03-05 Seiko Epson Corp プログラム変換方法及び変換用プログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003015965A (ja) 2001-07-04 2003-01-17 Hitachi Ltd SymmetricMultiプロセッサ環境での試験方式
US7032125B2 (en) * 2002-04-25 2006-04-18 Lsi Logic Corporation Method for loosely coupling metadata and data in a storage array
DE102004009497B3 (de) * 2004-02-27 2005-06-30 Infineon Technologies Ag Chipintegriertes Mehrprozessorsystem und Verfahren zur Kommunikation zwischen mehreren Prozessoren eines chipintegrierten Mehrprozessorsystems
JP2007207151A (ja) 2006-02-06 2007-08-16 Hitachi Ltd 並列計算機

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07295884A (ja) * 1994-04-26 1995-11-10 Toshiba Corp マルチプロセッサシステム及びメモリアロケーション方法
JP2008198143A (ja) * 2007-02-15 2008-08-28 Fuji Electric Fa Components & Systems Co Ltd プログラマブルコントローラ用プログラム作成支援装置およびプログラム作成支援方法
KR20090010942A (ko) * 2007-02-19 2009-01-30 미쓰비시덴키 가부시키가이샤 프로그래머블 컨트롤러의 주변 장치, 치환 방법 및프로그램
JP2009048259A (ja) * 2007-08-14 2009-03-05 Seiko Epson Corp プログラム変換方法及び変換用プログラム

Also Published As

Publication number Publication date
US20100250851A1 (en) 2010-09-30
US8423723B2 (en) 2013-04-16
KR101592974B1 (ko) 2016-02-12

Similar Documents

Publication Publication Date Title
US9547530B2 (en) Data processing apparatus and method for processing a plurality of threads
JP5398375B2 (ja) ユニプロセッサ・システム上のプリエンプタブルな読み取り・コピー・更新のための猶予期間検出の最適化
US9244883B2 (en) Reconfigurable processor and method of reconfiguring the same
US20140359225A1 (en) Multi-core processor and multi-core processor system
US9928057B2 (en) Method of providing a non-cacheable area in memory
WO2016140756A1 (en) Register renaming in multi-core block-based instruction set architecture
US20100030964A1 (en) Method and system for securing instruction caches using cache line locking
JP2017037370A (ja) 計算機、プロセス制御方法およびプロセス制御プログラム
US20130036426A1 (en) Information processing device and task switching method
CN103988174A (zh) 无需额外寄存器执行寄存器重命名的数据处理设备和方法
US11321092B1 (en) Tensor-based memory access
JPH06223043A (ja) 分散メモリ型プロセッサシステム
JP5680466B2 (ja) 並列処理システム及び並列処理システムの動作方法
US5659714A (en) Data processor including memory for associating data elements of two-dimensional array which are numbered in spiral order with element numbers thereof
CN107426138A (zh) 一种加速数据远程访问的方法,服务器设备
KR101639003B1 (ko) Cpu/gpu 기반 매니코어 시스템 및 cpu/gpu의 동시처리를 위한 작업량 분배 방법
KR20100108054A (ko) 복수의 프로세서들을 포함하는 시스템 장치 및 그 변수 선언 및 사용 방법
US9678752B2 (en) Scheduling apparatus and method of dynamically setting the size of a rotating register
US11681527B2 (en) Electronic device and multiplexing method of spatial
KR100912114B1 (ko) 디지털 신호처리 프로세서에서 효과적인 데이터 전송을위한 메모리 운용 방법
US20210389988A1 (en) Methods to Deal with Insufficient Memory Protection Unit (MPU) Regions
CN112579481B (zh) 数据处理方法、数据处理装置和计算装置
CN114281248B (zh) 一种提升ram读写性能的方法、电子设备及介质
US20150234656A1 (en) Vector processor, information processing apparatus, and overtaking control method
JP5685963B2 (ja) キャッシュメモリの制御装置及びキャッシュメモリシステム

Legal Events

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

Payment date: 20200131

Year of fee payment: 5