Egloos | Log-in
F/OSS study
F/OSS study
Cache coherency protocols
cache coherency protocol은 multiprocessor system에서
각 processor 간의 cache (line)들이 동일한 데이터를 접근할 수 있도록 보장해주는 메커니즘이다.
여기서는 각 cache controller들이 bus의 요청을 monitoring하는 cache snooping 방식으로 구현되었다고 가정하고 설명한다.

전통적인 방식은 MSI protocol이라고하며 각 cache의 상태를 다음과 같은 3가지로 구분한다.
  • M (Modified) : cache의 내용이 변경되었다. 한 processor가 데이터를 modify하면 다른 processor들의 해당 cache line은 invalidate된다.
  • S (Shared) : 최소 하나의 processor가 (메모리에서) 데이터를 읽어서 cache에 저장하고 있다.
  • I (Invalid) : 현재 processor가 가지고 있는 cache line은 더 이상 올바른 데이터가 아니므로 다시 메모리에서 읽어야 한다.
(참고로 CA:AQA3에서는 Modified 상태를 Exclusive 상태라고 표기하고 있으나
이후의 설명과 통일성을 가지려면 Modified 상태라고 하는 편이 옳다.)

이를 그림으로 나타내보면 다음과 같은 형태가 된다.
(bus read/write는 다른 processor가 동일한 cache line에 대한 요청을 bus로 보내는 것을 의미한다.
또한 설명을 간단히 하기 위해 한 번 cache에 저장된 데이터는 replace되지 않았다고 가정한다.)


MSI protocol의 단점은
오직 한 processor에서만 특정 cache line을 사용하고 있는 경우에도
여러 processor가 사용하고 있는 것과 동일하게 Shared 상태로 처리하기 때문에
해당 line을 write 시 다른 cache를 invalidate (or update)시키기 위해 (bus) transaction이 발생한다는 것이다.

이를 해결하기 위해 사용하는 방법이 현재 널리 사용되는 MESI protocol이다.
MESI protocol은 (당연하게도) MSI에 E (Exclusive) 상태를 추가한 것이다.
  • E (Exclusive) : processor가 (메모리에서) 데이터를 읽어서 cache에 저장하고 있으며, 다른 processor들은 해당 cache line을 저장하고 있지 않다.
이제 cache controller는 해당 cache line이 다른 processor와 공유되고 있지 않으므로
write 시 불필요하게 bus에 invalidate (or update) transaction을 수행할 필요가 없다.
이는 각 processor가 별도의 프로그램 혹은 잘 구성된 병렬 프로그램을 수행하는 경우 많은 성능 향상을 가져다 줄 것이다.

이를 그림으로 나타내면 다음과 같다.
(귀차니즘으로 인해 https://www.cs.tcd.ie/Jeremy.Jones/vivio/caches/MESIHelp.htm 페이지에 있는 그림으로 대신한다.)


AMD64 architecutre에서는 이를 더욱 개선하여
Modify한 cache line을 다른 processor에서 읽기를 원할 때
해당 cache line을 바로 메모리에 write back하지 않고 바로 데이터를 넘겨줄 수 있도록
O (Owned) 상태를 추가한 MOESI protocol을 도입하였다.
  • O (Owned) : 현재 processor는 변경된 최신 데이터를 가지고 있고, 다른 processor에서도 해당 데이터를 Shared 상태로 가지고 있지만 아직 메모리에 write되지는 않았다.
이를 그림으로 나타내면 다음과 같다.
(Probe는 다른 processor의 요청을 의미한다.)


=== 참고 자료 ===

by namhyung | 2009/10/17 18:16 | General | 트랙백 | 핑백(1) | 덧글(2)
트랙백 주소 : http://studyfoss.egloos.com/tb/5144244
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Linked at Cache – Co.. at 2016/06/17 16:41

... th CHI AMBA AXI 5에서 소개 대역폭이 큰 초고속 버스를 사용 그 외 AMBA 4 with ACE와 유사 멀티 클러스터에서의 ACE 참고 Cache coherency protocols | F/OSS 댓글 남기기 응답 취소 이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.댓글 이름 * 이메일 * 웹사이트 Post na ... more

Commented by SY Kim at 2010/01/25 21:24
최근에 멀티코어 CPU들이 많아져서 캐시일관성이 중요한 문제가 되었지요. 실제로 멀티코어에서 쓰레드 프로그래밍을 할 땐는 캐시구조를 모르고 진행하면 false sharing같은 문제를 곧잘 만들더군요. 그래서인지 비전공자 상대의 강의에서는 이런 이론적인 부분이 매우 중요합니다. 많은 사람들이 봤으면 좋겠습니다.

false sharing은 minjang님의 블로그의 http://minjang.egloos.com/1848130 에 잘 정리되어있는데, 이 글과 같이 보면 많은 분들에게 도움이 될 것 같습니다.
Commented by namhyung at 2010/01/25 22:20
댓글 감사합니다.. ^^
(추천해주신 글도 잘 보았습니다.)

캐시가 라인 단위로 관리되는 이상 false sharing은 피해갈 수 없겠지만
최근의 추세는 "read only" 데이터는 물론 "read mostly" 데이터도 별도의 섹션으로 분리하거나
TLS를 통해 아예 각 스레드 별로 데이터를 분리하여 접근하는 방식을 많이 쓰는 것 같습니다.

:         :

:

비공개 덧글

◀ 이전 페이지 다음 페이지 ▶

카테고리
General
Application
System
Kernel
Book
Tips
태그
build scm SMP perf blktrace x86 binutils computer-architecture gcc compiler algorithm elf C awk documentation synchronization git memory bash vcs patch emacs script CAaQA3 linux sed CARM glibc block-layer kernel
전체보기
이글루 파인더

최근 등록된 덧글
informsi yang bagus dan be..
by pordanaia at 08/05
Informsi yang bagus dan b..
by jamalsu at 08/01
as inforasi yang menarik http..
by jamalsu at 07/22
최근 등록된 트랙백
Tod's Ferrari Homme
by Tods Pas Cher,Kodak did ..
Mocassin Femme
by Mocassins Homme, I got so..
natural garcinia cambogia
by
rss

skin by jiinny


X