메모리의 기본 사항
메모리 지식에 대한 자세한 설명: 인터페이스 유형
1, 황금 손가락
연결은 메모리 스틱과 메모리 슬롯 사이의 연결 부품이며 모든 신호는 연결 손가락을 통해 전송됩니다. 금손가락은 많은 금빛 전도성 접점으로 이루어져 있는데, 그 표면 도금으로 인해 전도성 접점은 손가락 모양으로 배열되어 있어' 금손가락' 이라고 불린다. 금 손가락은 사실 동박 적층판에 특수 공예를 통해 금을 도금한 것이다. 금의 항산화성이 강하고 전도성이 강하기 때문이다. 하지만 금 가격이 높기 때문에 현재 더 많은 메모리가 주석 도금으로 대체되고 있다. 1990 년대부터 주석 재료가 보급되기 시작했다. 현재 마더보드, 메모리, 그래픽 카드의' 금손가락' 은 거의 주석 소재이며 고성능 서버/워크스테이션의 일부 부품만 금도금을 계속 사용할 수 있어 자연 가격이 만만치 않다.
기억의 황금 손가락
메모리 처리 장치의 모든 데이터 흐름과 전자 흐름은 골드 손가락과 메모리 슬롯의 접촉을 통해 PC 시스템과 교환됩니다. 메모리 슬롯은 메모리의 입/출력 포트입니다. 따라서 제조 공정은 메모리 연결에 매우 중요합니다.
2. 메모리 슬롯
초기 컴퓨터 시스템에서 메모리는 별도의 칩을 통해 설치됩니다. 당시 메모리 스틱은 모두 DIP (이중 LN-라인 패키지) 패키지였으며, DIP 칩은 버스 슬롯에 꽂힌 메모리 카드를 통해 시스템에 연결되어 있었다. 이 시점에서 공식적인 메모리 슬롯은 없습니다. DIP 칩의 가장 큰 문제는 설치가 번거롭고 시간이 지남에 따라 시스템 온도가 반복적으로 변하면서 소켓에서 점차 이동한다는 것이다. 컴퓨터가 매일 빈번하게 스위치를 켜면서 칩이 끊임없이 열을 받아 냉각되면서 천천히 칩이 슬롯에서 벗어나게 된다. 결국 접촉 불량으로 이어져 기억 오류를 초래한다.
메모리 슬롯
초기에는 메모리를 마더보드나 확장 카드에 직접 용접하는 방법도 있었습니다. 이렇게 하면 DIP 칩 편차 문제를 효과적으로 방지할 수 있지만 메모리 용량을 확장할 수는 없습니다. 또한 하나의 칩이 손상되면 전체 시스템을 사용할 수 없으며 하나의 칩만 다시 용접하거나 불량 칩이 포함된 마더보드를 교체할 수 있습니다. 이 방법은 비용이 많이 들고 매우 불편하다.
메모리 메모리의 경우 대부분의 최신 시스템은 단일 메모리 칩 대신 SIMM (single inline memory module) 또는 DIMM (dual inline memory module) 을 사용합니다. 이 작은 보드는 마더보드 또는 메모리 카드의 특수 커넥터에 꽂혀 있습니다.
3. 메모리 모듈
1) SIMM
SIMM (싱글 인라인 메모리 모듈). 메모리 스틱은 금색 손가락을 통해 마더보드에 연결되며 메모리 스틱의 양쪽에 금색 손가락이 있습니다. 금손가락은 양쪽에 서로 다른 신호를 제공하거나 같은 신호를 제공할 수 있다. SIMM 은 두 개의 금 손가락이 동일한 신호를 제공하는 메모리 구조입니다. 그것은 주로 초기 FPM 과 EDD 의 연극에 사용된다. 처음에는 8bif 데이터만 전송할 수 있었습니다. 이후 16 비트와 32 비트 SIMM 모듈이 점차 개발되었다. 이 중 8 비트 및 16 비트 SIMM 은 30 핀 커넥터, 32 비트 SIMM 은 72 핀 커넥터를 사용합니다. 메모리가 SDRAM 시대로 접어들면서 SIMM 은 점차 DIMM 기술로 대체되었습니다.
2) 메모리
듀얼 인라인 메모리 모듈. SIMM 과 마찬가지로, 유일한 차이점은 DIMM 의 금손가락 끝이 SIMM 처럼 서로 연결되지 않고 독립적으로 신호를 전송한다는 것입니다. 따라서 더 많은 데이터 신호의 전송 요구 사항을 충족할 수 있습니다. 마찬가지로 DIMM 을 사용하면 SDRAM 과 DDR 메모리 인터페이스가 약간 다릅니다. SDRAMDIMM 은 168Pin 의 DIMM 구조로, 금 손가락의 양쪽에 각각 84 개의 핀이 있고, 금 손가락에 두 개의 카드 포트가 있어 메모리를 슬롯에 꽂을 때 잘못된 보간으로 인해 타지 않도록 합니다.
DDR DIMM 은 184Pin 의 DIMM 구조를 사용하며, 금 손가락은 양쪽에 92 핀, 금 손가락은 카드 입구가 하나뿐입니다. 총검 수의 차이는 양자의 가장 뚜렷한 차이이다. DDR2 DIMM 은 240 핀 DIMM 구조로 금 손가락 양쪽에 각각 120 핀이 있습니다. 골드 손가락은 DDR DIMM 과 마찬가지로 카드 포트가 하나만 있지만 카드 위치는 DDR DIMM 과 약간 다릅니다. 따라서 DDR 메모리는 DDR2 DIMM 에 삽입할 수 없습니다. 마찬가지로 DDR2 메모리도 DDR DIMM 에 삽입할 수 없습니다. 따라서 DDR DIMM 과 DDR 2 DIMMs 가 모두 장착된 일부 마더보드에서는 메모리 슬롯 삽입 문제가 발생하지 않습니다.
다른 핀 DIMM 커넥터 비교 SO-DIMM (소형 폼 팩터 DIMM 모듈) 도 노트북의 스토리지 크기 요구 사항을 충족하도록 개발되었습니다. 그 크기는 표준 DIMM 보다 훨씬 작고 핀 수도 다릅니다. SO-DIMM 은 SDRAM 및 DDR 메모리 사양에 따라 다릅니다. SDRAM 의 SO-DIMM 에는 144 개의 핀만 있고 DDR 의 SO-DIMM 에는 200 개의 핀이 있습니다. 또한 노트북 메모리에는 MicroDIMM 과 Mini Registered DIMM 의 두 가지 인터페이스가 있습니다. 마이크로 DIMM 커넥터용 DDR 은172 핀, DDR2 는 214 핀 : Mini 등록 DIMM 인터페이스는 244 핀이며 주로 DDR2 메모리에 사용됩니다.
3) RIMM
RIMM(Rambus Inline Memory Module) 은 Rambus 에서 생산하는 RDRAM 에 사용되는 인터페이스 유형입니다. RIMM 메모리는 DIMM 과 비슷하며 금 손가락도 양면입니다. RIMM 은 한 바늘 184 핀이 있고, 금손가락 가운데에는 두 개의 빽빽한 총검이 있다. RIMM 의 비 ECC 버전에는 16 비트의 데이터 너비가 있고 ECC 버전에는 18 비트의 데이터 너비가 있습니다. RDRAM 메모리 가격이 비싸기 때문에 DIY 시장에서는 거의 볼 수 없고 RIMM 인터페이스도 드물다.
기초 (소개 장)
0/kloc-0 정보/
우리가 처음 프로그래밍을 배웠을 때, 코드를 쓰고, 프로그램을 실행하며, 프로그램이 무엇을 기반으로 하는지 알 수 없었다. 변수를 선언하는 방법, 변수에 값을 할당하는 방법, 변수에 데이터를 저장하는 방법, 변수가 어떤 형태로 존재하는지 알 수 없습니다.
"메모리" 는 "컴퓨터 구성 원리" 와 "마이크로 컴퓨터 원리" 라는 두 권의 책을 참고할 수 있지만 정보학 오세스의 학생으로서, "메모리" 의 기초지식만 알면 되고, 깊이 연구할 필요는 없다.
컴퓨터 조직의 원리에 대해서는 문장:
컴퓨터 구성 원리 (초급편)
카탈로그 02
1, 메모리의 내부 구조
데이터가 메모리에 어떻게 저장됩니까?
3. 메모리의 데이터 표현
4, 스토리지 유닛 크기
5. 메모리에서 지정된 데이터 (메모리 주소) 를 찾는 방법
요약 03
이 글은 주로' 메모리' 에 대한 기초지식을 설명하는데, 네가 프로그래밍을 더욱 향상시키는 데 도움이 된다.
메모리에 대한 지식을 배우면 프로그래밍에 대한 이해를 높일 수 있는 이유는 무엇입니까?
사실 우리는 편지 오스트리아 (C/C++) 를 배울 때 보통 C/C++ 와 관련된 문법만 배운다. 연습을 많이 하면 각종 문법을 능숙하게 사용할 수 있다. 또한 int 변수에 1+ 1 을 할당하는 방법과 문자열 변수 (object) 에 정수 1 을 할당할 수 없다는 것도 알고 있습니다. 하지만 1+ 1 의 할당 작업은 어떻게 메모리에서 이루어집니까? 부동 소수점 유형에 오류가 있는 이유는 무엇입니까? Int 및 string 유형이 직접 값을 지정할 수 없는 이유는 무엇입니까?
작성된 프로그램이 메모리에서 실행되고 데이터가 메모리에 어떻게 저장되어 있는지 알 수 없습니다. 책의 표지만 보고 책의 내용은 모르는 것과 같다.
요청 04
기억을 배우기 전에 C/C++ 의 기초만 익히면 몇 가지 간단한 문제를 독립적으로 해결할 수 있습니다.
메모리의 내부 구조
정보학 오세이 학생들에게 기억의 개념은 추상적이다. 하지만' 컴퓨터 구성 원리 (도론)' 라는 문장 를 보면 학우들이 메모리에 대한 개념을 이미 잘 알고 있다고 믿는다. 적어도 메모리는 프로그램 실행에 관한 데이터를 저장하는 데 사용된다는 것을 알고 있다.
자주 사용하는 데이터는 일반적으로 하드 드라이브에 저장됩니다. 이러한 데이터를 처리하는 경우 (예: Word 로 문장 쓰기) CPU 는 하드 디스크의 파일을 직접 조작하지 않고 하드 드라이브의 해당 위치에서 메모리로 파일의 데이터를 읽은 다음 CPU 가 메모리의 데이터를 처리합니다. 간단히 말해서 메모리는 CPU 와 하드 드라이브 사이의 "다리" 입니다. 물론 반드시 하드 드라이브일 필요는 없고, USB 디스크일 수도 있는데, 통칭하여 외존이라고 한다.
메모리에는 수억 개의 나노 전자 부품이 있다.
위 그림에서 메모리 스틱은 메모리 칩, 금 손가락 및 회로로 구성되어 있습니다.
메모리 바: 블랙 스퀘어. 각 블록은 트랜지스터에 저장된 데이터로 이해할 수 있는 많은 트랜지스터로 구성되어 있습니다.
금 손가락: 바닥의 황금 금속 조각. 메모리 스틱은 마더보드의 메모리 슬롯에 꽂혀 있는데 실제로 슬롯과 접촉하는 부분이 금손가락입니다. 이렇게 하면 CPU 가 마더보드를 통해 메모리와 통신할 수 있습니다.
회로: 녹색 패널. 패널에는 데이터 전송을 위한 회로, 저항 등 작은 전자 부품이 많이 있습니다.
데이터는 어떻게 메모리에 저장됩니까?
집에서 전등을 조절하는 스위치, 컴퓨터의 스위치. 메모리 칩의 트랜지스터도 마찬가지입니다. 프로그래밍 작업의 데이터는 트랜지스터에 저장됩니다.
위 그림에서 각 사각형은 트랜지스터를 나타냅니다.
다음 그림과 같이 각 트랜지스터에는 전원이 켜질 때 켜지고 전원이 꺼질 때 꺼지는 별도의 스위치가 있습니다. 여기서 흰색은 켜짐을 나타내고 검은색은 꺼짐을 나타냅니다.
하나의 값은 하나의 트랜지스터뿐만 아니라 여러 트랜지스터에도 저장됩니다. 그리고 여러 트랜지스터가 저장 장치를 형성합니다.
스토리지 유닛의 크기입니다
스토리지 유닛의 크기가 있으며 스토리지 유닛의 크기는 8 비트입니다.
메모리에서 일반적으로 사용되는 저장 단위는 비트와 바이트입니다.
1 바이트 =8 비트
그런 다음 저장 장치도 1 바이트입니다.
"스토리지 유닛" 에 대한 자세한 내용은 별도의 문장 에서 자세히 설명합니다.
메모리에서의 데이터 표현
데이터는 이진 형식으로 메모리에 저장됩니다.
십진수는 0~9 로 구성되며 이진수는 0 과 1 으로 구성됩니다.
위 그림에서 이것은 8 개의 유닛이 있는 스토리지 유닛 (8bit) 이고, 한 유닛은 1bit 를 나타냅니다. 각 메쉬의 값은 0 또는 1 이 아닙니다. 여기서 흰색은 켜기, 검은색은 끄기, 일반 1 및 0 은 각각 켜기 및 끄기를 나타냅니다. 이진 표현은 01101001이고, 십진수 값은 105 라면 이 저장은
십진법에 관한 관련 지식은 독립 문장 속에서 상세히 설명할 것이다.
여기서는 디지털 데이터만 설명하고, 다른 데이터의 표현은 모두 복잡하다.
메모리에서 지정된 데이터 (메모리 주소) 를 찾는 방법
예를 하나 들어보죠.
위 그림에서, 몇 개의 건물이 있는데, 각 건물마다 구체적인 주소가 있고, 한 건물의 각 집집마다 자신의 방 번호가 있어 완전한 주소가 형성된다는 것을 모두 알고 있다. 우리 개인 신분증에 자세한 주소가 있습니다.
주민등록번호에는 주소뿐만 아니라 주민등록번호까지 있어 각각 고유합니다.
메모리에서 지정된 데이터를 찾으려면 어떻게 해야 합니까?
메모리의 저장 장치는 사람과 마찬가지로 고유 한 "ID 번호" 인 주소를 가지고 있습니다. 예를 들어 경찰 삼촌은 주민등록번호에 따라 해당 개인 정보를 찾을 수 있다.
또 다른 예를 들어보죠.
위 그림에서, 이것은 책장으로, 몇 개의 작은 궤로 나뉜다. 이제 각 작은 캐비닛은 책을 분류하여 라벨을 붙입니다. 우리가 책 한 권을 찾고 있을 때, 우리는 라벨에 근거하여 그것을 쉽게 찾을 수 있다. 프로그램을 실행할 때도 마찬가지입니다. 어디서 데이터를 읽고 쓰는지 알고 있습니다.
기타 문제
왜 십진수와 이진수로 나누어야 합니까?
간단히 말해서, 십진법은 사람을 위한 것이고, 이진수는 기계를 위한 것이다.
데이터에는 숫자, 글자, 기호, 사운드, 이미지 등이 포함됩니다. 데이터는 이진 형식으로 메모리에 저장됩니다.
메모리 데이터를 모니터로 출력할 때 인간이 이해할 수 있는 정보를 표시할 수 있는 이유는 무엇입니까?
우리가 그것을 이해할 수 있기 전에 메모리의 데이터가 변환됩니다. 우리가 보는 데이터 (예: 문장, 사진, 영화) 는 본질적으로 이진적이다.
네가 모르는 기억 지식
I. CPU 및 메모리
먼저 몇 가지 개념을 깔아, 뒤의 혼동을 피하자.
슬롯 또는 프로세서: 물리적 CPU 칩, 박스형 또는 벌크입니다. 위에 많은 핀이 있어 마더보드에 직접 장착됩니다.
코어: CPU 코어가 프로세서에 캡슐화되어 각 코어는 완전히 독립된 컴퓨팅 단위입니다. 우리가 4 코어 CPU 라고 부르는 것은 프로세서에 4 개의 코어가 캡슐화된 것을 의미합니다.
HT 하이퍼스레딩: 현재 Intel 과 AMD 의 대부분의 프로세서는 하나의 코어에서 두 개의 스레드를 병렬로 실행할 수 있도록 지원합니다. 이는 운영 체제에서 두 개의 논리 프로세서인 것과 같습니다. 대부분의 경우, 우리 프로그램에서 언급한 CPU 개념은 바로 이 논리 프로세서를 가리킨다.
먼저 몇 가지 질문을 살펴 보겠습니다.
1.CPU 가 메모리를 직접 조작할 수 있습니까?
아마도 오래된 철의 상당 부분이 분명히 말할 것입니다: 예, 메모리를 조작하지 않고 데이터를 읽는 방법?
사실, 이 영리한 두뇌로 생각해 보면, 모두들 분명히 우리의 데스크톱 호스트를 가지고 놀았을 것이다. CPU 와 메모리 스틱은 완전히 분리된 두 개의 하드웨어이며 CPU 에는 메모리를 직접 장착할 수 있는 슬롯이 없습니다.
즉, CPU 와 메모리 스틱은 물리적으로 분리되어 있어 CPU 가 메모리 스틱에 직접 액세스할 수 없으며 마더보드의 다른 하드웨어를 통해 간접적으로 액세스해야 합니다.
2.CPU 의 연산 속도와 메모리 액세스 속도의 차이점은 무엇입니까?
허허, 그렇게 말해 봐, 격차야. CPU 실행 속도와 메모리 액세스 속도의 차이는 100 배입니다.
그러나 CPU 와 메모리의 속도가 N 개 정도 차이가 나면서 CPU 의 가장 가까운 파트너인 캐시가 나타났다. DRAM 가족의 메모리와는 달리, Cache 는 SRAM 가문에서 왔다.
DRAM 과 SRAM 의 가장 간단한 차이점은 후자가 매우 빠르고, 용량이 매우 작고, 회로 구조가 매우 복잡하고, 비용이 매우 높다는 것이다.
캐시와 운영 메모리의 성능 차이는 주로 작동 방식과 구조의 차이 때문입니다.
DRAM 은 하나의 데이터를 저장하기 위해 하나의 콘덴서와 하나의 트랜지스터만 필요하지만 SRAM 은 6 개의 트랜지스터가 필요합니다.
DRAM 의 데이터는 실제로 커패시턴스에 저장되기 때문에 각 읽기 및 쓰기 과정에서 충전 및 방전 링크로 인해 DRAM 의 데이터 읽기 및 쓰기 지연 (일반적으로 10 ~ 수십 ns) 이 발생합니다.
스토리지는 각각 행 및 열 주소가 있는 2 차원 배열로 간주할 수 있습니다.
SRAM 용량이 작기 때문에 스토리지 유닛 (행과 열) 의 주소가 짧아 한 번에 SRAM 으로 전송할 수 있습니다. DRAM 은 행과 열의 주소를 별도로 전송해야 합니다.
SRAM 의 주파수는 기본적으로 CPU 와 동일하며 DRAM 의 주파수는 DDR4 이후에야 CPU 의 주파수에 접근하기 시작합니다.
캐시는 어떻게 사용됩니까?
실제로 캐시는 CPU 에 통합된 스토리지 유닛 (일반적으로 캐시라고도 함) 입니다. 비용과 스토리지 용량이 높기 때문에 CPU 대규모 고속 액세스의 요구 사항을 충족할 수 없습니다.
따라서 비용 통제를 위해 최적의 캐시 효과를 얻기 위해 피라미드형 다중 레벨 캐시 시스템을 사용하는 경우가 많습니다.
그 결과 1 차 캐시 (L 1 캐시), 2 차 캐시 (L2 캐시) 및 3 차 캐시 (L3 캐시) 가 발생했습니다. 각 레벨은 더 많은 핫스팟 데이터를 저장하기 위해 더 큰 용량과 교환하기 위해 일부 성능 지표를 희생합니다.
Intel 제품군의 Intel SandyBridge 아키텍처 CPU 를 예로 들어 보겠습니다.
L 1 캐시 용량 64KB, 액세스 속도 약 1ns.
L2 캐시 용량은 256KB 로 두 배로 늘어났으며 액세스 속도는 약 3ns 로 떨어졌습니다.
L3 캐시 용량은 5 12 배 증가한 32MB 로 액세스 속도도 약 12 ns 로 낮아졌다 (주 메모리 105 ns(40 ns+65 ns) 에 액세스하는 것보다
L3 캐시는 슬롯의 모든 CPU 코어에서 공유됩니다 * * * *. 사실 가장 오래된 L3 캐시는 AMD 가 발표한 K6-III 프로세서에 적용되었습니다. 당시 L3 캐시는 CPU 에 통합되지 않고 다음 그림과 같이 마더보드에 통합되었습니다.
위 그림에서 볼 수 있듯이 CPU 가 메모리의 데이터에 액세스하려면 L 1, L2, L3 레벨 3 을 거쳐야 합니다. 즉, 이 3 단계 캐시에 필요한 데이터가 없으면 주 메모리에서 직접 읽습니다.
마지막으로 Intel Sandy Bridge CPU 의 아키텍처 다이어그램을 살펴 보겠습니다.
둘째, 멀티 코어 CPU 및 메모리 공유 문제
문제: 캐시 동시성 문제
멀티 코어 CPU*** 공유 메모리 문제를 캐시 일관성 문제라고도 합니다.
사실 여러 CPU 코어가 보는 캐시 데이터는 일치해야 합니다. 한 CPU 가 자신의 캐시 (L 1 캐시) 에 데이터를 쓰면 다른 CPU 에서도 동일한 캐시 데이터를 볼 수 있어야 합니다.
자체 캐시에 이전 데이터가 있는 경우 이전 데이터를 폐기합니다.
각 CPU 에 자체 내부 독점 캐시가 있다는 점을 고려하면 분산 캐시를 동기화하는 것과 동일한 문제가 발생합니다.
현재 업계에서 인정하는 일관성 문제에 대한 가장 좋은 해결책은 대부분의 SMP 아키텍처에서 사용되는 인텔의 MESI 프로토콜입니다.
솔루션: MESI
캐시 라인, 즉 우리가 흔히 말하는 캐시 엔트리의 캐시 라인을 기억하는지 모르겠습니다. (존 F. 케네디, 캐시, 캐시, 캐시, 캐시, 캐시, 캐시, 캐시)
사실, I/O 작업이 바이트 단위가 아니라 블록 단위라고 생각해 보면 두 가지 이유가 있습니다.
I/O 작업 속도가 느리기 때문에 1 바이트를 읽는 데 걸리는 시간은 n 개의 연속 바이트를 읽는 데 걸리는 시간과 거의 같습니다.
데이터 액세스는 일반적으로 공간 연속성을 특징으로 합니다.
따라서 CPU 도 입출력 블록과 비슷한 방식으로 메모리를 읽고 씁니다.
실제로 CPU 캐시의 가장 작은 저장 단위는 캐시 행이고, 인텔 CPU 의 캐시 행은 64 바이트를 저장합니다.
각 레벨 캐시는 여러 개의 캐시 라인 세트로 나누어지며, 일반적으로 네 개의 캐시 라인이 한 세트인 경우가 많습니다.
캐시가 메모리에서 데이터를 로드할 때 한 번에 하나의 캐시 행에 대한 데이터를 로드합니다.
그림과 같이 각 캐시 줄에는 자신의 상태를 식별하는 두 자리, 총 네 가지 * * * * 가 있습니다.
M (수정됨): 상태가 수정되었고, 다른 CPU 에 데이터 사본이 없고, 이 CPU 에서 수정되었으며, 메모리의 데이터와 일치하지 않으면 시스템 버스의 쓰기 명령이 캐시 라인의 데이터를 메모리에 다시 기록하게 됩니다.
E (e _ _ inclusive): 현재 캐시 행의 데이터가 메모리의 데이터와 일치하고 다른 CPU 의 데이터 복사본이 없음을 나타내는 단독 상태입니다.
S (shared): * * * 즐기세요. 캐시 행의 데이터가 메모리의 데이터와 일치하고 현재 CPU 에 하나 이상의 다른 CPU 에 복제본이 있음을 나타냅니다.
I(Invalid): invalid, 현재 캐시 행에 유효한 데이터가 없거나 캐시 행 데이터가 유효하지 않아 더 이상 사용할 수 없습니다. 캐시가 새 데이터를 로드할 때 먼저 이 상태의 캐시 행을 선택합니다. 캐시 행의 초기 상태도 I 상태입니다.
캐시의 읽기 및 쓰기 작업으로 인해 캐시 행의 상태가 변경되므로 상태 머신 모델로 해석할 수 있습니다.
그러나 MESI 의 복잡성과 독창성은 두 가지 국가관이 있다는 데 있다.
하나는 현재 로컬 읽기/쓰기 작업이 있는 CPU 의 캐시 행 상태 및 다른 CPU 의 해당 캐시 행 상태입니다.
다른 하나는 한 CPU 의 캐시 라인 상태를 변경하면 다른 CPU 의 해당 캐시 라인 상태가 변경된다는 것입니다.
다음은 MESI 프로토콜의 상태 전환 다이어그램입니다.
MESI 의 구체적인 구현 과정은 나의 또 다른 문장, 즉 이 문장 를 이해해야만 동시 밑바닥 기술 을 이해할 수 있다.
일관되지 않은 기억에 대한 깊은 이해
MESI 프로토콜은 멀티코어 CPU 에서 캐시 일관성 문제를 해결하여 최근 몇 년 동안 PC 분야에서 빠르게 성장하고 있는 SMP 아키텍처의 유일한 선택이 되었습니다 (__86).
SMP 아키텍처는 병렬 아키텍처입니다. 모든 CPU 코어는 메모리 버스에 연결되어 메모리에 동등하게 액세스합니다. 동시에 전체 스토리지 구조가 통일되고 주소 지정 통일이 가능합니다.
SMP 아키텍처 다이어그램은 다음과 같습니다.
CPU 코어 수가 늘어남에 따라 SMP 아키텍처도 자연스러운 단점을 드러냈다. 근본적인 병목 현상은 메모리 버스 대역폭이 CPU 수의 증가를 충족시키지 못하고' 길' 을 통과하는 차가 많아지면' 혼잡 모드' 에 빠질 수 있다는 점이다.
버스 폭풍에 대해 들어보셨는지는 모르겠지만, 버스 폭풍을 보세요.
이 경우 분산 솔루션이 등장했습니다. 시스템 메모리와 CPU 분할이 함께 바인딩되어 여러 개의 독립적인 하위 시스템을 형성하여 고속 상호 연결을 형성합니다. 이는 다음 그림과 같이 NUMA (non-uniform memory architecture) 아키텍처입니다.
NUMA 아키텍처의 메모리가 여러 개의 개별 블록으로 분할되어 서로 다른 CPU 에 의해 사유화되었음을 알 수 있습니다.
따라서 CPU 는 자체 메모리에 액세스할 때 빠르며, 다른 CPU 가 제어하는 메모리 데이터에 액세스할 때는 내부 상호 연결 채널을 통해 액세스해야 합니다.
NUMA 아키텍처의 장점은 수백 개의 CPU 로 확장해도 성능이 크게 저하되지 않는다는 점입니다.
NUMA 기술의 특징
NUMA 아키텍처에는 중요한 새로운 용어인 노드가 도입되었습니다.
노드는 하나 또는 소켓 소켓으로 구성됩니다. 즉, 물리적으로 하나 이상의 CPU 칩이 논리적 노드를 구성합니다.
Dell PowerEdge 서버 제품군의 NUMA 에 대한 아키텍처 다이어그램을 살펴 보겠습니다.
위 그림에서 볼 수 있듯이 그 특징은 다음과 같습니다.
4 개의 프로세서가 4 개의 개별 NUMA 노드를 구성합니다. 각 노드는 8 코어이기 때문에 이중 스레드를 지원합니다.
노드당 논리 CPU 수는 16 으로 노드당 할당된 총 메모리의 1/4 를 차지합니다.
각 노드는 QPI (quick path interconnect) 기술을 통해 지점 간 완전 상호 연결된 프로세서 시스템을 형성합니다.
NUMA 는 기존의 * * * 공유 버스 기반 프로세서 시스템의 SMP 와는 매우 다른 지점 간 완전 상호 연결 프로세서 시스템입니다.
이 경우 스니핑 버스를 통해 캐시 일관성을 달성할 수 없기 때문에 Intel 아키텍처에서 캐시 일관성을 달성하기 위해 인텔은 MESI 프로토콜의 확장 프로토콜인 ——MESIF 를 출시했습니다.
NUMA 지원
NUMA 건물은' 글로벌 메모리' 라는 전통적인 관념을 깨뜨렸다. 현재 메모리 모델에서는 프로그래밍 언어가 지원되지 않아 NUMA 에 적합한 소프트웨어를 개발하기 어렵다.
Java 는 NUMA 를 지원하는 시스템에서 NUMA 기반 메모리 할당 체계를 개방하여 현재 스레드에 필요한 메모리를 해당 노드에서 할당할 수 있도록 하여 객체 생성 프로세스를 크게 가속화합니다.
큰 데이터 분야에서 NUMA 시스템은 점점 더 강력한 역할을 하고 있다. HANA 는 SAP 의 하이엔드 대용량 데이터 시스템으로 SGI 는 자외선 NUMA 시스템에서 수평으로 확장되었습니다.
클라우드 컴퓨팅 및 가상화 분야에서 OpenStack 과 VMware 는 NUMA 기술 기반 가상 시스템 할당 기능을 지원하여 서로 다른 가상 시스템이 서로 다른 코어에서 실행될 수 있도록 하여 가상 시스템의 메모리가 여러 NUMA 노드에 걸쳐 있지 않도록 했습니다.