KR101233109B1 - 캐쉬 일관성을 맞추기 위해 멀티 코어들 간에 발생하는 통신량을 감소시키는 시스템 및 방법 - Google Patents

캐쉬 일관성을 맞추기 위해 멀티 코어들 간에 발생하는 통신량을 감소시키는 시스템 및 방법 Download PDF

Info

Publication number
KR101233109B1
KR101233109B1 KR1020100089383A KR20100089383A KR101233109B1 KR 101233109 B1 KR101233109 B1 KR 101233109B1 KR 1020100089383 A KR1020100089383 A KR 1020100089383A KR 20100089383 A KR20100089383 A KR 20100089383A KR 101233109 B1 KR101233109 B1 KR 101233109B1
Authority
KR
South Korea
Prior art keywords
core
shared
cores
page
information
Prior art date
Application number
KR1020100089383A
Other languages
English (en)
Other versions
KR20120027661A (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 KR1020100089383A priority Critical patent/KR101233109B1/ko
Publication of KR20120027661A publication Critical patent/KR20120027661A/ko
Application granted granted Critical
Publication of KR101233109B1 publication Critical patent/KR101233109B1/ko

Links

Images

Classifications

    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

본 발명은 멀티 코어들 간의 통신량을 감소시키는 시스템에 관한 것으로서, 가상 메모리의 가상 페이지와 물리 메모리의 물리 페이지 간의 관계 및 상기 물리 페이지가 둘 이상의 코어에 의해 공유되고 있는지에 대한 공유 정보를 포함하는 페이지 테이블을 관리하는 운영체제; 상기 가상 페이지와 상기 물리 페이지 간의 관계 및 상기 가상 페이지와 상기 공유 정보를 포함하는 변환 참조 버퍼; 및 상기 페이지 테이블에 기록된 상기 가상 페이지와 상기 물리 페이지 간의 관계 또는 공유정보를 상기 변환 참조 버퍼에 기록하는 코어를 포함하는 것을 특징으로 하며, 필요하지 않은 코어들 간의 통신으로 인해서 발생하는 시스템의 성능 하락 및 전력 소모를 최소화할 수 있다.

Description

캐쉬 일관성을 맞추기 위해 멀티 코어들 간에 발생하는 통신량을 감소시키는 시스템 및 방법{System and method of reducing traffic among multi-cores used to meet cache coherence}
본 발명은 멀티 코어 시스템에 관한 것으로서, 더욱 상세하게는 필요하지 않은 코어들 간의 통신으로 인해서 발생하는 시스템의 성능 하락 및 전력 소모를 최소화할 수 있는 멀티 코어 시스템 및 멀티 코어들 간의 통신량을 감소시키는 시스템에 관한 것이다.
기존 싱글코어 기술은 과도한 전력 소모로 인하여 성능 향상의 한계에 이미 도달하였다. 이를 극복하기 위하여 현재 프로세서 기술은 다수의 코어를 하나의 칩에 장착한 멀티 코어로 진화하였다. 향후 반도체 집적도의 향상에 따라 CPU(중앙 처리 장치) 당 코어의 수는 상당 기간 동안 계속 증가할 것으로 예상된다.
이러한 코어의 수가 증가함에 따가 코어들 간의 통신을 향상할 수 있는 방법이 연구되어 왔다. 현재의 공유 메모리에 기반을 둔 멀티 코어의 경우 코어들 간의 통신은 캐쉬 일관성 프로토콜에 의해 구현되어 왔으며 이를 다양한 방법을 통해 최적화하는 노력이 계속되고 있다.
캐쉬 일관성(Cache Coherence)이란, 공유 메모리 시스템에서 각 코어, 프로세서가 가진 로컬 캐쉬 간의 일관성을 의미한다.
각 코어가 자신 만의 로컬 캐쉬를 가지고 다른 여러 코어와 메모리를 공유하고 있을 때, 캐쉬의 갱신으로 인한 데이터 불일치 문제가 발생한다. 예를 들어 변수 X에 대해서 두 코어가 변수 X를 공유하고 있고 그 값이 0이라고 하자. 이때 코어 1이 X에 1을 대입하였고 코어 2가 변수 X를 읽어들이게 되면 코어 2는 코어 1에 의해 수정된 값인 1을 받아들이는 것이 아니라 현재 자신의 로컬 캐쉬에 있는 0을 읽어들이게 된다. 따라서 캐쉬 1, 2는 같은 X라는 변수에 대해 다른 값을 가지게 되므로 데이터 불일치 문제가 발생한다. 캐쉬 일관성을 유지한다고 하는 것은 이러한 데이터 불일치 현상을 없애는 것을 의미한다.
캐쉬 일관성을 유지하기 위해서는 다른 프로세서가 갱신한 캐쉬 값을 곧바로 혹은 지연하여 다른 프로세서에서 사용할 수 있도록 해주어야 하며, 캐쉬 일관성 방법으로는 스눕(Snoop), 디렉토리(Directory) 방식이 있을 수 있다.
기본적인 스눕 방식의 경우 캐쉬의 일관성을 위해서 단순히 모든 코어에게 메시지를 전달함으로써 쉽게 해결할 수 있다는 장점이 있지만 불필요한 통신의 양이 매우 많아진다는 단점이 있다. 이에 반해 디렉터리의 경우 필요한 프로세서에게만 메시지를 보내기 때문에 통신의 양은 매우 적어지지만 보통 디렉터리 정보가 코어 안에 존재하지 않고 메모리에 존재하기 때문에 코어 입장에서 보면 상당한 시간 지연이 발생하게 되고, 구현하기 어렵고 복잡하다는 단점이 있다.
현재 멀티 코어 구조는 2~4개의 코어로만 이루어져 스눕과 같은 단순한 방식을 사용한다고 하더라도 이것이 큰 성능하락으로 이어지지 않는다. 하지만, 향후 많은 수의 코어로 이루어진 대량 코어(Many-Core)의 경우 기존의 스눕 방식을 사용하게 될 경우에 시스템의 병목현상을 초래할 수 있게 된다.
따라서, 스눕 방식에서 불필요한 메시지를 제거하여 성능을 향상시키면서도, 기존의 프로세서 구조를 변경할 필요없는 기술에 대한 필요성이 대두된다.
따라서, 본 발명이 해결하고자 하는 첫 번째 과제는 필요하지 않은 코어들 간의 통신으로 인해서 발생하는 시스템의 성능 하락 및 전력 소모를 최소화할 수 있는 멀티 코어 시스템을 제공하는 것이다.
본 발명이 해결하고자 하는 두 번째 과제는 멀티 코어 시스템에서 코어들 간의 통신을 위해 항상 메시지를 모든 코어에게 전달함으로써 발생하는 시스템의 성능 하락 및 전력 소모를 최소화할 수 있는 멀티 코어들 간의 통신량을 감소시키는 시스템을 제공하는 것이다.
본 발명이 해결하고자 하는 세 번째 과제는 멀티 코어 시스템에서 코어들 간의 통신을 위해 항상 메시지를 모든 코어에게 전달하지 않고 불필요한 메시지를 걸러낼 수 있도록 하여 시스템의 성능 하락 및 전력 소모를 최소화할 수 있는 멀티 코어들 간의 통신량을 감소시키는 방법을 제공하는 것이다.
또한, 상기된 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공하는 데 있다.
본 발명은 상기 첫 번째 과제를 달성하기 위하여, 코어, 캐쉬, 및 변환 참조 버퍼로 구성된 프로세서가 복수 개가 포함되어 이루어진 멀티 코어 시스템에 있어서, 상기 변환 참조 버퍼가 가상 페이지와 물리 페이지 간의 관계 및 상기 물리 페이지가 둘 이상의 코어에 의해 공유되고 있는지에 대한 공유 정보를 포함하는 멀티 코어 시스템을 제공한다.
본 발명의 일 실시예에 의하면, 상기 멀티 코어 시스템의 운영체제가 상기 가상 페이지와 상기 물리 페이지 간의 관계 및 상기 물리 페이지가 둘 이상의 코어에 의해 공유되고 있는지에 대한 공유 정보를 포함하는 페이지 테이블을 관리할 수 있다.
이때, 상기 공유 정보는 상기 페이지 테이블에 접근하는 코어가 하나의 코어밖에 없는 경우에는 공유하지 않는다고 표시하고, 상기 페이지 테이블에 접근하는 코어가 둘 이상 있는 경우에는 공유한다고 표시할 수 있다.
더 나아가 상기 공유 정보는 상기 페이지 테이블에 접근하는 모든 코어의 아이디를 포함할 수 있다.
또한, 코어의 수가 많아서 모두 표시할 수 있는 공간이 없는 경우에는 복수의 코어들을 그룹화하고, 상기 공유 정보는 상기 페이지 테이블에 접근하는 코어의 그룹 정보를 포함할 수 있다.
본 발명의 다른 실시예에 의하면, 코어, 캐쉬, 및 변환 참조 버퍼로 구성된 프로세서가 복수 개가 포함되어 이루어진 멀티 코어 시스템에 있어서, 상기 변환 참조 버퍼가 가상 페이지와 물리 페이지 간의 관계 및 상기 물리 메모리가 둘 이상의 코어에 의해 공유되고 있는지에 대한 공유 정보를 포함하고, 어느 하나의 코어가 상기 코어가 포함된 프로세서의 캐쉬에서 원하는 데이터를 획득할 수 없는 경우, 상기 변환 참조 버퍼에 포함된 공유 정보를 이용하여 캐쉬 일관성 메시지를 어디로 전달할지 결정하는 멀티 코어 시스템일 수 있다.
이때, 상기 변환 참조 버퍼에 있는 공유정보가 공유 여부를 나타내는 정보이고, 어느 하나의 코어가 상기 코어가 포함된 프로세서의 캐쉬에서 원하는 데이터를 획득할 수 없는 경우, 상기 변환 참조 버퍼의 공유 정보를 참조한 결과 공유가 되어 있는 경우에는 상기 코어를 제외한 나머지 코어에게 캐쉬 일관성 메시지를 전달할 수 있다.
그러나 상기 변환 참조 버퍼의 공유 정보를 참조한 결과 공유가 되어 있지 않은 경우에는 주 기억 장치로 캐쉬 일관성 메시지를 전달할 수 있다.
한편, 상기 변환 참조 버퍼에 있는 공유정보가 어느 코어와 공유하고 있는지에 대한 공유 코어 정보를 포함하고, 어느 하나의 코어가 상기 코어가 포함된 프로세서의 캐쉬에서 원하는 데이터를 획득할 수 없는 경우, 상기 변환 참조 버퍼의 공유 코어 정보를 참조하여 공유하고 있는 공유 코어로 캐쉬 일관성 메시지를 전달할 수 있다.
본 발명은 상기 두 번째 과제를 달성하기 위하여, 가상 메모리의 가상 페이지와 물리 메모리의 물리 페이지 간의 관계 및 상기 물리 페이지가 둘 이상의 코어에 의해 공유되고 있는지에 대한 공유 정보를 포함하는 페이지 테이블을 관리하는 운영체제; 상기 가상 페이지와 상기 물리 페이지 간의 관계 및 상기 가상 페이지와 상기 공유 정보를 포함하는 변환 참조 버퍼; 및 상기 페이지 테이블에 기록된 상기 가상 페이지와 상기 물리 페이지 간의 관계 또는 공유정보를 상기 변환 참조 버퍼에 기록하는 코어를 포함하는 멀티 코어들 간의 통신량을 감소시키는 시스템을 제공한다.
본 발명의 일 실시예에 의하면, 상기 변환 참조 버퍼에 상기 가상 페이지와 상기 물리 페이지 간의 관계가 존재하지 않는 경우, 상기 페이지 테이블에 접근하여 상기 가상 페이지와 상기 물리 페이지 간의 관계를 획득하고, 상기 변환 참조 버퍼에 상기 관계를 기록할 수 있다.
본 발명은 상기 세 번째 과제를 달성하기 위하여, 코어, 캐쉬, 및 변환 참조 버퍼로 구성된 프로세서가 복수 개가 포함되어 이루어진 멀티 코어 시스템의 멀티 코어들 간의 통신량을 감소시키는 방법에 있어서, 상기 코어가 상기 캐쉬에 접근하여 데이터가 있는지 여부를 확인하는 단계; 상기 확인 결과 상기 캐쉬에 데이터가 없는 경우 상기 변환 참조 버퍼가 포함하고 있는 공유 정보를 확인하는 단계; 및 상기 공유 정보를 확인한 결과 공유하고 있는 코어가 있는 경우, 상기 공유하고 있는 코어로 상기 데이터를 전달해 줄 것을 요청하는 단계를 포함하고, 상기 공유 정보는 물리 페이지가 둘 이상의 코어에 의해 공유되고 있는지에 대한 정보인 멀티 코어들 간의 통신량을 감소시키는 방법을 제공한다.
상기 코어가 상기 변환 참조 버퍼를 참조한 결과, 상기 가상 페이지와 상기 물리 페이지 간의 관계가 존재하지 않는 경우, 상기 멀티 코어 시스템의 운영체체가 관리하는 페이지 테이블에 접근하여 상기 가상 페이지와 상기 물리 페이지 간의 관계를 확인하는 단계를 더 포함할 수 있다.
상기 공유 정보를 확인한 결과 공유하고 있는 코어가 없는 경우, 상기 멀티 코어 시스템의 주기억장치에 접근하여 상기 데이터를 상기 캐쉬로 가져올 수 있다.
반면, 상기 공유 정보를 확인한 결과 공유하고 있는 코어의 아이디를 알 수 있는 경우, 상기 코어의 아이디에 해당하는 코어로 데이터를 전달해 줄 것을 요청할 수 있어, 코어 간 통신량을 줄일 수 있다.
그러나 상기 공유 정보를 확인한 결과 공유 여부만을 알고 있을 때, 공유가 되어 있는 경우에는 상기 코어를 제외한 다른 코어들로 상기 데이터를 전달해달라고 요청할 수 있다.
상기 다른 기술적 과제를 해결하기 위하여, 본 발명은 상기된 멀티 코어들 간의 통신량을 감소시키는 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공한다.
본 발명에 따르면, 멀티 코어 시스템에서 코어들 간의 캐쉬 일관성을 맞추기 위해 발생하는 통신량을 줄이기 위해서 운영체제에서 사용하는 페이지 테이블과 코어 내의 변환 참조 버퍼에 공유정보를 추가함으로써, 필요하지 않은 코어들 간의 통신으로 인해서 발생하는 시스템의 성능 하락 및 전력 소모를 최소화할 수 있다. 또한, 본 발명에 따르면, 멀티 코어 시스템에서 캐쉬 일관성을 맞추기 위해 항상 멀티 코어 시스템 내에 있는 모든 코어에게 메시지를 전달하지 않고, 필요하지 않은 메시지를 제거해낼 수 있다.
도 1은 본 발명의 일 실시예에 따른 멀티 코어 시스템의 구성도를 나타낸 것이다.
도 2는 본 발명의 실시예에 따른 멀티 코어 시스템의 운영체제(OS, operating system)에서 가상 메모리를 관리하는 기법을 나타낸 개념도이다.
도 3은 본 발명의 실시예에 따른 변환 참조 버퍼의 구성을 나타내는 도면이다.
도 4는 본 발명의 실시예에 따른 멀티 코어 시스템에서 멀티 코어들 간의 통신량을 감소시키는 방법의 흐름도를 도시한 것이다.
도 5는 본 발명의 다른 실시예에 따른 멀티 코어 시스템에서 멀티 코어들 간의 통신량을 감소시키는 방법의 흐름도를 도시한 것이다.
도 6은 본 발명의 또 다른 실시예에 따른 멀티 코어 시스템에서 공유 정보가 공유 여부만을 확인할 수 있는 정보만을 포함한 경우의 멀티 코어들 간의 통신량을 감소시키는 방법의 흐름도를 도시한 것이다.
본 발명에 관한 구체적인 내용의 설명에 앞서 이해의 편의를 위해 본 발명이 해결하고자 하는 과제의 해결 방안의 개요 혹은 기술적 사상의 핵심을 우선 제시한다.
본 발명의 일 실시예에 따른 코어, 캐쉬, 및 변환 참조 버퍼로 구성된 프로세서가 복수 개가 포함되어 이루어진 멀티 코어 시스템에 있어서, 상기 변환 참조 버퍼가 가상 페이지와 물리 페이지 간의 관계 및 상기 물리 페이지가 둘 이상의 코어에 의해 공유되고 있는지에 대한 공유 정보를 포함한다.
본 발명의 다른 실시예에 따른 코어, 캐쉬, 및 변환 참조 버퍼로 구성된 프로세서가 복수 개가 포함되어 이루어진 멀티 코어 시스템에 있어서, 상기 변환 참조 버퍼가 가상 페이지와 물리 페이지 간의 관계 및 상기 물리 메모리가 둘 이상의 코어에 의해 공유되고 있는지에 대한 공유 정보를 포함하고, 어느 하나의 코어가 상기 코어가 포함된 프로세서의 캐쉬에서 원하는 데이터를 획득할 수 없는 경우, 상기 변환 참조 버퍼에 포함된 공유 정보를 이용하여 캐쉬 일관성 메시지를 어디로 전달할지 결정한다.
이하, 바람직한 실시예를 들어 본 발명을 더욱 상세하게 설명한다. 그러나 이들 실시예는 본 발명을 보다 구체적으로 설명하기 위한 것으로, 본 발명의 범위가 이에 의하여 제한되지 않는다는 것은 당업계의 통상의 지식을 가진 자에게 자명할 것이다. 본 발명이 해결하고자 하는 과제의 해결 방안을 명확하게 하기 위한 발명의 구성을 본 발명의 바람직한 실시예에 근거하여 첨부 도면을 참조하여 상세히 설명하되, 본 발명과 관련된 공지 기능 혹은 구성에 대한 구체적인 설명 그리고 그 이외의 제반 사항이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우, 그 상세한 설명을 생략한다.
본 발명은 멀티 코어 시스템에서 멀티 코어들 간의 통신을 진행할 때 발생하는 메시지 중 필요하지 않은 메시지를 제거함으로써 멀티 코어 시스템의 성능 하락 및 전력 소모를 최소화하기 위한 방법으로서, 아래의 도 1을 참조하여 멀티 코어 시스템의 구조를 살펴보고자 한다
도 1은 본 발명의 일 실시예에 따른 멀티 코어 시스템의 구성도를 나타낸 것이다.
도 1을 참조하면, 본 실시예에 따른 멀티 코어 시스템 중 하나의 프로세서(100)는 코어(110), L1 캐쉬(120), L2 캐쉬(130), 및 변환 참조 버퍼(140)로 구성된다.
멀티 코어는 여러 개의 프로세서(100)가 하나의 칩 안에 장착된 형태로 발전을 하고 있다. 본 발명의 실시예에 따르면, 하드웨어인 변환 참조 버퍼(140)와 소프트웨어인 운영체제의 페이지 테이블(미도시)을 이용하여 캐쉬 일관성을 맞추기 위해 발생하는 불필요한 메시지를 제거할 수 있다.
코어(110)는 가상 메모리를 통해 물리 메모리 주소를 빠르게 얻기 위해 변환 참조 버퍼(140)라는 하드웨어와 연결되어 있는데 변환 참조 버퍼(140)에도 페이지 테이블과 같이 어느 코어들이 페이지에 접근했는지에 대한 정보를 보관할 수 있다.
코어(110)가 캐쉬(120, 130)에 데이터가 존재하는 지를 확인할 때 변환 참조 버퍼(140)도 동시에 접근을 하게 된다. 이때 코어(110)는 그 페이지에 접근한 코어들을 확인할 수 있으므로 스눕처럼 메시지를 모든 코어에게 전달하지 않고, 변환 참조 버퍼(140)에 기록이 되어 있는 코어에게만 전달하면 되기 때문에 불필요한 많은 메시지를 제거할 수 있다.
캐쉬 메모리는 코어(110)에 가장 빈번히 전달되어야 하는 명령어나 데이터를 원활히 전송할 수 있도록 제작된 고속도의 특수 메모리이다. 캐쉬 메모리에는 L1 캐쉬(120), L2 캐쉬(130), 및 L3 캐쉬가 있으나, 이하에서는 L1 캐쉬(120)와 L2 캐쉬에 대하여 살펴보기로 한다. 그러나 L3 캐쉬에 대하여도 본 발명이 적용될 수 있으며, 캐쉬 메모리가 확장된다고 하여도 마찬가지로 적용될 수 있다.
L1 캐쉬(120)는 레벨-1 명령어/데이터 캐쉬로서, 코어와 메인 메모리 사이에서 자주 쓰이는 연산 명령어를 저장하는 메모리이다. L1 캐쉬(120)가 크면 연산 작업 등에서 속도가 크게 향상될 수 있다.
L2 캐쉬(130)는 레벨-2 캐쉬로서, 다른 주변 장치와 코어 간의 속도 차이를 극복하기 위해 사용하는 메모리이다. L2 캐쉬(130)는 코어(110)가 데이터를 처리하는 동안 미리 코어가 필요로 하는 데이터를 저장해 둔다.
변환 참조 버퍼(130)는 가상 페이지와 물리 페이지 간의 관계 및 물리 페이지가 둘 이상의 코어에 의해 공유되고 있는지에 대한 공유 정보를 포함하며, 코어(110)에 의해 접근되는 장치이다.
도 1에 도시되어 있지는 않으나, 컴퓨터 시스템의 자원을 관리하는 운영체제는 가상 메모리를 물리 메모리로 사상시켜주는 페이지 테이블이라는 것을 운용하고 있다. 또한, 운영체제는 페이지 테이블을 이용하여 멀티 코어 시스템 내의 어느 코어가 어느 페이지에 접근하는지를 알아낼 수 있다. 본 발명에 따른 실시예에서의 운영체제는 페이지 테이블을 확장하여 어느 페이지가 어떠한 코어들에 의해 접근이 되는지 기록해 놓는다.
그 결과 코어(110)는 변환 참조 버퍼(140)를 참조하여 필요로 하는 가상 페이지와 물리 페이지 간의 관계 및 물리 페이지가 둘 이상의 코어에 의해 공유되고 있는지에 대한 공유 정보가 없는 경우에는 페이지 테이블을 참조한 후, 변환 참조 버퍼(140)에 상기 관계 및 상기 공유 정보를 기록할 수 있다.
도 2는 본 발명의 실시예에 따른 멀티 코어 시스템의 운영체제(OS, operating system)에서 가상 메모리를 관리하는 기법을 나타낸 개념도이다.
운영체제는 메모리를 관리하기 위해 메모리를 할당하는 기본 단위를 페이지 라는 단위로 제공한다. 가상 메모리를 관리하기 위해서는 가상 메모리 페이지와 물리 메모리 페이지 사이의 관계를 나타내는 페이지 테이블이라는 것이 존재한다.
본 발명의 실시예에서의 페이지 테이블은 가상 메모리와 물리 메모리의 관계뿐만 아니라 물리 메모리 페이지가 둘 이상의 코어에서 공유되고 있는지를 나타낼 수 있는 공유 정보를 포함한다.
도 3은 본 발명의 실시예에 따른 변환 참조 버퍼의 구성을 나타내는 도면이다.
변환 참조 버퍼는 페이지 테이블과 같은 역할을 빠르게 수행하기 위한 하드웨어 장치이다. 메모리 연산을 수행할 때마다 주 기억 장치에 있는 페이지 테이블에 접근하기에는 코어 또는 CPU의 입장에서 보았을 때 많은 시간을 소모하는 작업이기 때문에 변환 참조 버퍼는 코어가 자주 접근하는 가상 메모리에 대한 물리 메모리 주소를 기억하고 있어서 매번 주 기억 장치까지 접근하지 않고도 물리 메모리 주소를 바로 알 수 있도록 해준다.
본 발명의 실시예에서의 변환 참조 버퍼는 가상 메모리와 물리 메모리에 대한 정보만이 아니라 페이지 테이블과 마찬가지로 둘 이상의 코어에서 메모리가 공유되고 있는지를 나타내는 공유 정보를 포함하고 있다.
도 4는 본 발명의 실시예에 따른 멀티 코어 시스템에서 멀티 코어들 간의 통신량을 감소시키는 방법의 흐름도를 도시한 것이다.
도 4를 참조하면, 본 실시예에 따른 멀티 코어들 간의 통신량을 감소시키는 방법은 도 1에 도시된 멀티 코어 시스템에서 시계열적으로 처리되는 단계들로 구성된다. 따라서, 이하 생략된 내용이라 하더라도 도 1에 도시된 멀티 코어 시스템에 관하여 이상에서 기술된 내용은 본 실시예에 따른 멀티 코어들 간의 통신량을 감소시키는 방법에도 적용된다.
410단계에서 멀티 코어 시스템의 코어는 메모리 연산을 하기 위해 코어와 가장 가까운 기억장치인 캐쉬로 접근하여 해당 데이터가 있는지 여부를 확인한다.
상기 확인 결과, 캐쉬에 해당 데이터가 존재하는 경우에는 종료하고, 캐쉬에 해당 데이터가 존재하지 않는 경우에는 420단계로 진행한다.
420단계에서 멀티 코어 시스템의 코어는 변환 참조 버퍼에 포함된 공유 정보를 확인한다.
430단계에서 멀티 코어 시스템의 코어는 공유 정보를 확인한 결과, 공유하고 있는 코어가 존재하는지 여부를 판단한다. 공유 정보는 공유 여부만을 확인할 수 있는 정보만을 포함할 수도 있고, 어느 코어와 공유하는지를 확인할 수 있는 정보까지 포함할 수도 있다. 도 4에서는 어느 코어와 공유하는지를 확인할 수 있는 정보까지 공유 정보에 포함되어 있는 경우를 가정하기로 한다.
상기 판단 결과 공유하고 있는 코어가 존재하는 경우, 440단계로 진행하고, 공유하고 있는 코어가 존재하지 않는 경우에는 450단계로 진행한다.
440단계에서 멀티 코어 시스템의 코어는 공유하고 있는 코어로 데이터를 전달해 달라고 요청한다.
본 발명의 실시예에 따르면 변환 참조 버퍼가 포함한 공유 정보에는 해당 물리 메모리를 공유하고 있는 코어에 대한 정보를 알 수 있기 때문에 모든 코어에게 메시지를 전달하지 않고 공유 코어들에게만 전달할 수 있게 된다.
450단계에서 멀티 코어 시스템의 코어는 주기억 장치에 접근하여 해당 데이터를 자신의 캐쉬에 기록한다.
도 5는 본 발명의 다른 실시예에 따른 멀티 코어 시스템에서 멀티 코어들 간의 통신량을 감소시키는 방법의 흐름도를 도시한 것이다.
도 5는 도 4에 도시된 멀티 코어들 간의 통신량을 감소시키는 방법에 510단계와 520단계가 부가된 흐름도이다. 따라서, 도 4에서의 설명과 중복된 부분은 생략하고, 도 5에서 추가된 단계에 대해서만 설명하기로 한다.
510단계에서 멀티 코어 시스템의 코어는 변환 참조 버퍼에 가상 페이지와 물리 페이지 간의 관계가 존재하는지 여부를 판단한다.
이러한 판단이 필요한 것은, 캐쉬는 물리메모리를 기준으로 저장이 되어 있기 때문이다. 따라서, 멀티 코어 시스템은 가상 메모리 주소를 물리 메모리 주소로 변환해야 하며, 이를 위해 멀티 코어 시스템은 변환 참조 버퍼를 이용하여 가상 메모리 주소에 대한 물리 메모리 주소를 얻어 오게 된다.
상기 판단결과 가상 페이지와 물리 페이지 간의 관계가 변환 참조 버퍼에 존재하는 경우에는 410단계로 진행하고, 존재하지 않는 경우에는 520단계로 진행한다.
520단계에서 멀티 코어 시스템의 코어는 운영체제가 관리하는 페이지 테이블에 접근하여 가상 페이지와 물리 페이지 간의 관계를 확인한다.
즉, 변환참조 버퍼에 가상 페이지와 물리 페이지 간의 관계가 없는 경우에는 주 기억 장치에 존재하는 페이지 테이블에 접근하여 정보를 가져와서 변환 참조 버퍼에 기록한다. 이때 가상 페이지와 물리 페이지 간의 관계뿐만 아니라 물리 페이지의 공유정보도 함께 가져와서 변환 참조 버퍼에 기록한다.
도 6은 본 발명의 또 다른 실시예에 따른 멀티 코어 시스템에서 공유 정보가 공유 여부만을 확인할 수 있는 정보만을 포함한 경우의 멀티 코어들 간의 통신량을 감소시키는 방법의 흐름도를 도시한 것이다.
도 6과 도 4를 참조하면, 도 6은 도 4의 440단계 대신 640단계로 대체되었음을 알 수 있다.
도 4는 변환 참조 버퍼가 포함한 공유정보가 공유 여부만을 확인할 수 있는 정보만을 포함하는 경우의 흐름도이고, 도 6은 공유정보가 어느 코어와 공유하는지를 확인할 수 있는 정보까지 포함하는 경우의 흐름도이다.
640단계에서 멀티 코어 시스템의 코어는 해당 코어를 제외한 다른 코어들로 데이터 전달 요청을 한다. 즉, 만약 캐쉬에 원하는 데이터가 없고, 공유 정보 내에 공유하고 있다고 표시되어 있는 경우에는 다른 코어의 캐쉬에는 데이터가 존재할 수 있으므로 캐쉬 일관성 프로토콜에 의해 자기 자신을 제외한 멀티 코어 시스템의 모든 코어들에게 데이터를 전달해 달라고 요청할 수 있다.
이상에서와 같이 본 발명의 실시예에 따른 멀티 코어 시스템에서 캐쉬 일관성을 맞추기 위해 발생하는 통신량을 줄이기 위한 방법으로서, 기존의 캐쉬 일관성 프로토콜에 특별한 하드웨어를 추가하지 않고 운영체제에서 사용하는 페이지 테이블과 코어 내의 변환 참조 버퍼를 활용함으로써 통신량을 줄일 수 있으며, 성능 향상 및 전력 소모를 최소화할 수 있다.
본 발명의 실시예들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.
100: 프로세서 110: 코어
120: L1 캐쉬 130: L2 캐쉬
140: 변환 참조 버퍼

Claims (17)

  1. 코어, 캐쉬, 및 변환 참조 버퍼로 구성된 프로세서가 복수 개가 포함되어 이루어진 멀티 코어 시스템에 있어서,
    상기 변환 참조 버퍼가 가상 페이지와 물리 페이지 간의 관계 및 상기 물리 페이지가 둘 이상의 코어에 의해 공유되고 있는지에 대한 공유 정보를 포함하고,
    어느 하나의 코어가 상기 코어가 포함된 프로세서의 캐쉬에서 원하는 데이터를 획득할 수 없는 경우, 상기 변환 참조 버퍼에 포함된 공유 정보를 이용하여 캐쉬 일관성 메시지를 상기 코어를 제외한 나머지 코어, 주 기억 장치, 또는 공유 코어 중 어디로 전달할지 결정하는 멀티 코어 시스템.
  2. 제 1항에 있어서,
    상기 멀티 코어 시스템의 운영체제가 상기 가상 페이지와 상기 물리 페이지 간의 관계 및 상기 물리 페이지가 둘 이상의 코어에 의해 공유되고 있는지에 대한 공유 정보를 포함하는 페이지 테이블을 관리하는 멀티 코어 시스템.
  3. 제 2항에 있어서,
    상기 공유 정보는 상기 페이지 테이블에 접근하는 코어가 하나의 코어밖에 없는 경우에는 공유하지 않는다고 표시하고, 상기 페이지 테이블에 접근하는 코어가 둘 이상 있는 경우에는 공유한다고 표시하는 것을 특징으로 하는 멀티 코어 시스템.
  4. 제 2항에 있어서,
    상기 공유 정보는 상기 페이지 테이블에 접근하는 모든 코어의 아이디를 포함하는 것을 특징으로 하는 멀티 코어 시스템.
  5. 제 2항에 있어서,
    상기 복수의 코어들은 그룹화되고, 상기 공유 정보는 상기 페이지 테이블에 접근하는 코어의 그룹 정보를 포함하는 것을 특징으로 하는 멀티 코어 시스템.
  6. 삭제
  7. 제 1항에 있어서,
    상기 변환 참조 버퍼에 있는 공유정보는 공유 여부를 나타내는 정보를 포함하고,
    어느 하나의 코어가 상기 코어가 포함된 프로세서의 캐쉬에서 원하는 데이터를 획득할 수 없는 경우, 상기 변환 참조 버퍼의 공유 정보를 참조한 결과 공유가 되어 있는 경우에는 상기 코어를 제외한 나머지 코어에게 캐쉬 일관성 메시지를 전달하는 멀티 코어 시스템.
  8. 제 7항에 있어서,
    상기 변환 참조 버퍼의 공유 정보를 참조한 결과 공유가 되어 있지 않은 경우에는 상기 주 기억 장치로 캐쉬 일관성 메시지를 전달하는 멀티 코어 시스템.
  9. 제 8항에 있어서,
    상기 변환 참조 버퍼에 있는 공유정보는 어느 코어와 공유하고 있는지에 대한 공유 코어 정보를 포함하고,
    어느 하나의 코어가 상기 코어가 포함된 프로세서의 캐쉬에서 원하는 데이터를 획득할 수 없는 경우, 상기 변환 참조 버퍼의 공유 코어 정보를 참조하여 공유하고 있는 상기 공유 코어로 캐쉬 일관성 메시지를 전달하는 멀티 코어 시스템.
  10. 가상 메모리의 가상 페이지와 물리 메모리의 물리 페이지 간의 관계 및 상기 물리 페이지가 둘 이상의 코어에 의해 공유되고 있는지에 대한 공유 정보를 포함하는 페이지 테이블을 관리하는 운영체제;
    상기 가상 페이지와 상기 물리 페이지 간의 관계 및 상기 가상 페이지와 상기 공유 정보를 포함하는 변환 참조 버퍼; 및
    상기 페이지 테이블에 기록된 상기 가상 페이지와 상기 물리 페이지 간의 관계 또는 공유정보를 상기 변환 참조 버퍼에 기록하는 코어를 포함하고,
    어느 하나의 코어가 상기 코어가 포함된 프로세서의 캐쉬에서 원하는 데이터를 획득할 수 없는 경우, 상기 변환 참조 버퍼에 포함된 공유 정보를 이용하여 캐쉬 일관성 메시지를 상기 코어를 제외한 나머지 코어, 주 기억 장치, 또는 공유 코어 중 어디로 전달할지 결정하는 멀티 코어들 간의 통신량을 감소시키는 시스템.
  11. 제 10항에 있어서,
    상기 변환 참조 버퍼에 상기 가상 페이지와 상기 물리 페이지 간의 관계가 존재하지 않는 경우, 상기 페이지 테이블에 접근하여 상기 가상 페이지와 상기 물리 페이지 간의 관계 및 상기 공유 정보를 획득하고, 상기 변환 참조 버퍼에 상기 관계 및 상기 공유 정보를 기록하는 멀티 코어들 간의 통신량을 감소시키는 시스템.
  12. 코어, 캐쉬, 및 변환 참조 버퍼로 구성된 프로세서가 복수 개가 포함되어 이루어진 멀티 코어 시스템의 멀티 코어들 간의 통신량을 감소시키는 방법에 있어서,
    상기 코어가 상기 캐쉬에 접근하여 데이터가 있는지 여부를 확인하는 단계;
    상기 확인 결과 상기 캐쉬에 데이터가 없는 경우 상기 변환 참조 버퍼가 포함하고 있는 공유 정보를 확인하는 단계; 및
    상기 공유 정보에 따라 상기 코어를 제외한 나머지 코어, 주 기억 장치, 또는 공유 코어 중 어느 하나로 상기 데이터를 전달해 줄 것을 요청하는 단계를 포함하고,
    상기 공유 정보는 물리 페이지가 둘 이상의 코어에 의해 공유되고 있는지에 대한 정보인 멀티 코어들 간의 통신량을 감소시키는 방법.
  13. 제 12항에 있어서,
    상기 코어가 상기 변환 참조 버퍼를 참조한 결과, 가상 페이지와 상기 물리 페이지 간의 관계가 존재하지 않는 경우, 상기 멀티 코어 시스템의 운영체체가 관리하는 페이지 테이블에 접근하여 상기 가상 페이지와 상기 물리 페이지 간의 관계를 확인하는 단계를 더 포함하는 멀티 코어들 간의 통신량을 감소시키는 방법.
  14. 제 12항에 있어서,
    상기 공유 정보를 확인한 결과 공유하고 있는 코어가 없는 경우, 상기 멀티 코어 시스템의 주기억장치에 접근하여 상기 데이터를 상기 캐쉬로 가져오는 단계를 더 포함하는 멀티 코어들 간의 통신량을 감소시키는 방법.
  15. 제 12항에 있어서,
    상기 공유 정보를 확인한 결과 공유하고 있는 코어의 아이디를 알 수 있는 경우, 상기 코어의 아이디에 해당하는 코어로 데이터를 전달해 줄 것을 요청하는 것을 특징으로 하는 멀티 코어들 간의 통신량을 감소시키는 방법.
  16. 제 12항에 있어서,
    상기 공유 정보를 확인한 결과 공유 여부만을 알고 있을 때, 공유가 되어 있는 경우에는 상기 코어를 제외한 다른 코어들로 상기 데이터를 전달해달라고 요청하는 것을 특징으로 하는 멀티 코어들 간의 통신량을 감소시키는 방법.
  17. 제 12항 내지 제 16항 중에 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR1020100089383A 2010-09-13 2010-09-13 캐쉬 일관성을 맞추기 위해 멀티 코어들 간에 발생하는 통신량을 감소시키는 시스템 및 방법 KR101233109B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020100089383A KR101233109B1 (ko) 2010-09-13 2010-09-13 캐쉬 일관성을 맞추기 위해 멀티 코어들 간에 발생하는 통신량을 감소시키는 시스템 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100089383A KR101233109B1 (ko) 2010-09-13 2010-09-13 캐쉬 일관성을 맞추기 위해 멀티 코어들 간에 발생하는 통신량을 감소시키는 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20120027661A KR20120027661A (ko) 2012-03-22
KR101233109B1 true KR101233109B1 (ko) 2013-02-15

Family

ID=46132768

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100089383A KR101233109B1 (ko) 2010-09-13 2010-09-13 캐쉬 일관성을 맞추기 위해 멀티 코어들 간에 발생하는 통신량을 감소시키는 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR101233109B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101356543B1 (ko) * 2012-06-27 2014-01-28 한국과학기술원 메모리 관리 유닛, 이를 포함하는 멀티 코어 프로세서, 컴퓨터 시스템 및 데이터 관리 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR950012222A (ko) * 1993-10-18 1995-05-16 이헌조 캐쉬 메모리 공유 듀얼 프로세서 보드
KR20030092101A (ko) * 2001-04-24 2003-12-03 어드밴스드 마이크로 디바이시즈, 인코포레이티드 공유 메모리를 이용하여 가상 메모리를 실시하는멀티프로세서 시스템, 및 페이징된 메모리 코히런시를유지하기 위한 페이지 교환 방법
KR100692976B1 (ko) 2006-02-08 2007-03-12 삼성전자주식회사 프로세서간 데이터 전송 방법 및 시스템
KR100864834B1 (ko) * 2007-04-30 2008-10-23 한국전자통신연구원 메모리 재할당을 이용한 다중 프로세서 간의 데이터 전송장치 및 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR950012222A (ko) * 1993-10-18 1995-05-16 이헌조 캐쉬 메모리 공유 듀얼 프로세서 보드
KR20030092101A (ko) * 2001-04-24 2003-12-03 어드밴스드 마이크로 디바이시즈, 인코포레이티드 공유 메모리를 이용하여 가상 메모리를 실시하는멀티프로세서 시스템, 및 페이징된 메모리 코히런시를유지하기 위한 페이지 교환 방법
KR100692976B1 (ko) 2006-02-08 2007-03-12 삼성전자주식회사 프로세서간 데이터 전송 방법 및 시스템
KR100864834B1 (ko) * 2007-04-30 2008-10-23 한국전자통신연구원 메모리 재할당을 이용한 다중 프로세서 간의 데이터 전송장치 및 방법

Also Published As

Publication number Publication date
KR20120027661A (ko) 2012-03-22

Similar Documents

Publication Publication Date Title
US10891228B2 (en) Cache line states identifying memory cache
KR101814577B1 (ko) 프로세싱-인-메모리를 이용한 명령어 처리 방법 및 그 장치
US8015365B2 (en) Reducing back invalidation transactions from a snoop filter
US8250254B2 (en) Offloading input/output (I/O) virtualization operations to a processor
US8762651B2 (en) Maintaining cache coherence in a multi-node, symmetric multiprocessing computer
US8799584B2 (en) Method and apparatus for implementing multi-processor memory coherency
US20180143905A1 (en) Network-aware cache coherence protocol enhancement
US8423736B2 (en) Maintaining cache coherence in a multi-node, symmetric multiprocessing computer
US8918587B2 (en) Multilevel cache hierarchy for finding a cache line on a remote node
US11048422B2 (en) Method, device, and computer readable storage medium for allocating access rights to data among storage processors
US20140040563A1 (en) Shared virtual memory management apparatus for providing cache-coherence
CN111868699A (zh) 缓存存储器操作的协调
US20140297966A1 (en) Operation processing apparatus, information processing apparatus and method of controlling information processing apparatus
US9727521B2 (en) Efficient CPU mailbox read access to GPU memory
US11483260B2 (en) Data processing network with flow compaction for streaming data transfer
US20090083496A1 (en) Method for Improved Performance With New Buffers on NUMA Systems
EP3249539B1 (en) Method and device for accessing data visitor directory in multi-core system
CN109101439B (zh) 一种报文处理的方法及装置
US9454479B2 (en) Processing read and write requests in a storage controller
US11726788B2 (en) Tuple checkout with notify in coordination namespace system
US20130013871A1 (en) Information processing system and data processing method
KR101233109B1 (ko) 캐쉬 일관성을 맞추기 위해 멀티 코어들 간에 발생하는 통신량을 감소시키는 시스템 및 방법
CN110737397B (zh) 用于管理存储***的方法、设备和计算机程序产品
CN110083548B (zh) 数据处理方法及相关网元、设备、***
KR20200088391A (ko) 공통 메모리 페이지로부터 메모리로의 캐시 라인들의 린싱

Legal Events

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

Payment date: 20160128

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170125

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180129

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190201

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20200129

Year of fee payment: 8

R401 Registration of restoration