컴퓨터 구조 16 : 프로세서간 통신과 동기화, 캐시의 일관성
프로세서간 통신
멀티 프로세서의 프로세서들은 공통의 입출력 채널을 통해 서로 통신함.
예로, IOP에 연결된 자기 디스크 저장 장치를 통해 시스템 프로그램을 공유할 수 있음.
공유 메모리 멀티 프로세서 시스템에서는 메모리 일부분을 모든 프로세서가 접근할 수 있도록 할당함.
공유 메모리는 프로세서 사이에서 오가는 메시지의 집중지 역할을 함.
메시지를 보냈다는 신호는 소프트웨어에 의한 프로세서간 인터럽트로 구현함.
송신 프로세서가 수신 프로세서에게 인터럽트를 보내 새로운 메시지를 보냈다고 알림.
멀티 프로세서를 위한 운영체제 구조
1 : 주종 모드(master-slave)
주가 되는 프로세서는 항상 운영체제 기능을 수행
나머지 프로세서에서 운영체제 서비스가 필요하면 주 프로세서에게 인터럽트를 보냄
2 : 분리 운영체제 구조
모든 프로세서가 자신의 운영체제를 가지고 운영됨
3 : 분산 운영체제
운영체제가 여러 프로세서에 분산되어 있음
운영체제의 특정 기능은 한순간에 하나의 프로세서에만 할당되어 수행됨
프로세서간 동기화
동기화는 처리될 작업들 간의 정확한 순서를 유지하고 공용의 기록 가능한 변수에 대해 상호 배제(자원의 동시 사용을 피하기 위해 사용되는 알고리즘)적 접근을 보장함.
간단히 말해, 공유 자원에 있는 데이터에 접근하는 다른 프로세서가 접근하지 못하도록 실행을 제어하는 방법.
이를 통해 처리될 작업들 간의 정확한 순서를 유지할 수 있음.
상호 배제의 구체적 예시
프로세서 1, 2를 p1, p2로 가정.
임계 자원(공유 메모리) : 두 프로세서가 동시에 사용할 수 없는 자원
임계 영역 : 임계 자원에 접근하고 실행하는 프로그램 코드 부분
p1이 임계 영역에 들어간다
인터럽트가 발생해 p1 작업을 끝내기 전에 p2 실행을 예정한다.
p2가 임계 자원에 진입하려 하지만 p1을 임계 자원에서 수행하므로 p1을 종료할 때까지 p2를 차단함
공유 자원은 다른 프로세서와 충돌하지 않는 연산(즉, 데이터를 읽는 작업)은 동시에 수행하도록 하되, 프로세서가 수정할 수 있는 공유 데이터에 접근할 때에만 상호 배제의 개념을 적용한다.
캐시의 일관성(Cache Coherence)
공유 메모리 시스템에서 각 클라이언트(혹은 프로세서)가 가진 로컬 캐시 간의 일관성을 의미함.
각 클라이언트가 자신만의 로컬 캐시를 가지고 다른 여러 클라이언트와 메모리를 공유하고 있을 때 캐시의 갱신으로 인한 데이터 불일치 문제가 발생한다.
캐시의 일관성을 유지한다고 하는 것은 이러한 데이터 불일치 현상을 없애는 것을 의미한다.
예를 들어 변수 X에 대해 두 클라이언트가 변수 X를 공유하고 있고 그 값이 0이라고 하자.
클라이언트 1이 X에 1을 대입했고 클라이언트 2가 변수 X를 읽어 들이게 되면 클라이언트 2는 클라이언트 1에 의해 수정된 값인 1을 받아들이는 것이 아니라 현재 자신의 로컬 캐시에 있는 0을 읽어 들이게 되는 것이다.
따라서 캐시 1, 2는 같은 X라는 변수에 대해 다른 값을 가지므로 데이터 불일치 문제가 발생한다.
하드웨어 차원에서 항상 최신 내용을 익을 수 있도록 캐시 일관성을 지원해야 하는 것이다.
1 : 디렉터리 프로토콜
캐시 블록의 공유 상태, 노드 등을 기록하는 저장 공간인 디렉터리를 이용해 관리하는 구조
데이터의 복사본이 존재하는 위치에 대한 정보를 수집하고 유지
중앙 제어기가 모든 지역 캐시 제어기의 동작을 제어하고 보고를 받으며 캐시 일관성을 유지함
대역폭이 작아도 잘 작동함
다중 버스나 복잡한 상호 연결망을 포함하는 대규모 시스템에 효과적
2 : 스누핑 프로토콜
캐시 제어기가 CPU와 IOP로부터 나오는 모든 버스 요구를 감시. 캐시의 워드가 갱신될 때, 주기억 장치에서 같은 위치에 해당하는 데이터를 갱신.
그 훙, 다른 모든 캐시에 달려 있는 로컬 스누피 제어기가 갱신된 데이터에 대한 복사본이 있는지 자신의 로컬 메모리를 검사. 만약 존재한다면 이를 무효라고 표시하며, 나중에 프로세서가 무효화된 데이터에 접근하게 되면 캐시 실패라고 응답받고 주기억 장치로부터 데이터를 가져옴.
각 노드의 대역폭이 클 때 좋은 성능을 기대할 수 있으나 성능 확장성이 별로임. 노드의 수가 증가할수록 필요한 버스의 대역폭이 늘어나게 됨.
'CS 공부 > 컴퓨터 구조' 카테고리의 다른 글
컴퓨터 구조 15 : 프로세서와 프로세스, 프로세서간 중재 (0) | 2022.02.28 |
---|---|
컴퓨터 구조 14 : 병렬 처리, 멀티 프로세서 (0) | 2022.02.23 |
컴퓨터 구조 13 : 시스템 BUS, I/O 장치 제어 (0) | 2022.02.06 |
컴퓨터 구조 12 : 캐시 메모리, 가상 메모리, 메모리 관리 하드웨어 (0) | 2022.01.29 |
컴퓨터 구조 11 : 메모리 계층 구조 (0) | 2022.01.28 |