RAM이 CPU 칩에 장착되지 않는 이유는 무엇입니까?


55

최신 CPU는 메모리 (RAM)를 포함하여 외부의 모든 것에 비해 매우 빠릅니다.

CPU 클럭 주파수가 CPU에서 버스를 통해 RAM 칩으로 돌아 가기 위해 전기 신호를 보내기 위해 몇 개의 클럭 틱이 걸리는 지점에 도달했기 때문에 이해할 수 있습니다.

또한 여러 수준에서 수명이 복잡해집니다. 다중 수준 캐시 계층 구조는 CPU에 더 가까이 데이터를 전달하도록 설계되어 칩에 복잡한 동기화 논리가 필요합니다. 데이터를 가져 오는 동안 대기주기를 피하려면 프로그램을 캐시 친화적 인 방식으로 작성해야합니다.

많은 양의 RAM이 CPU 칩에 직접 배치되어 있으면 이러한 많은 문제를 피할 수 있습니다. 독점적 인 배열은 필요하지 않습니다. 클래스에 따라 칩에 1-4GB를 넣고 추가 메모리를 별도로 설치할 수 있습니다.

인텔, AMD 등이 이것을하지 않는 좋은 이유가 있다고 확신합니다. 이러한 이유는 무엇입니까? 칩에 여유 공간이없는 것입니까?


29
캐시는 RAM입니다. 다이의 공간 및 핀은 프리미엄입니다.
copper.hat

2
@ copper.hat 캐시는 RAM이지만 캐시 크기는 설치된 RAM의 작은 부분입니다 (일반적으로 우리는 MBytes와 Gbytes 범위에 대해 이야기하고 있습니다). CPU 칩에 1GB를 넣지 않는 이유가 궁금합니다.
Lesser Hedgehog

5
일반적으로 일부 명령어 / 데이터 흐름 믹스에 최적화되어 있습니다. 또한 RAM과의 모든 데이터가 CPU를 통과하는 것은 아닙니다.
copper.hat

1
다이가 간단할수록 저렴합니다. 또한 다른 프로세스 크기와 프로세스 방법을 사용할 수 있습니다.
Journeyman Geek

@LesserHedgehog 일반적으로 캐시 적중률이 제한 될 수 있으므로 캐시를 더 추가해도 실제로 도움이되지 않습니다. 또한 많은 CPU가 실제로 모바일 / 임베디드 공간 (예 : 많은 ARM 기반 SoC)에 DRAM을 내장하고 있습니다.
솜털 같은

답변:


79

인텔의 Haswell (또는 최소한 Iris Pro 5200 GPU를 통합 한 제품)과 IBM의 POWER7 및 POWER8에는 모두 내장 DRAM 인 "eDRAM"이 포함됩니다.

eDRAM이 최근까지 공통적이지 않은 한 가지 중요한 문제는 DRAM 제작 프로세스가 본질적으로 논리 프로세스와 호환되지 않기 때문에 eDRAM이 필요할 때 추가 단계가 포함되어야 (비용 증가 및 수율 감소)한다는 점입니다. 따라서 이러한 경제적 단점을 상쇄하기 위해이를 도입하려는 강력한 이유가 있어야합니다. 대안 적으로 DRAM은 CPU와 독립적으로 제조 된 다음 동일한 패키지에 통합 된 별도의 다이에 배치 할 수 있습니다. 이것은 진정으로 통합 된 방식으로이 두 가지를 제조하는 데 어려움을 겪지 않고 지역의 이점을 대부분 제공합니다.

또 다른 문제는 DRAM은 전원이 공급되는 동안 내용을 무기한 저장하지 않으며, 읽는 경우 저장된 데이터를 파괴한다는 점에서 SRAM과 다릅니다. 따라서 주기적으로 그리고 매번 읽은 후에 갱신해야합니다. 또한 DRAM 셀은 커패시터를 기반으로하기 때문에 다음 번 새로 고침에 약간의 시간이 걸리기 전에 누설이 값을 손상시키지 않도록 충분히 충전 또는 방전합니다. 이 충전 시간은 래치 일 뿐인 SRAM에는 필요하지 않습니다. 결과적으로 CPU와 동일한 속도로 클럭킹 할 수있는 반면, DRAM은 합리적인 전력 소비를 유지하면서 약 1GHz로 제한됩니다. 이로 인해 DRAM은 SRAM보다 고유 대기 시간이 길어 지므로 미스 레이트가 줄어드는 가장 큰 캐시를 제외한 모든 캐시에 사용할 가치가 없습니다.

또한 대기 시간에 관한 한, 어려움의 대부분은 물리적 거리 신호가 이동해야한다는 것입니다. 빛은 3GHz CPU의 클럭주기에서 10cm 만 이동할 수 있습니다. 물론, 신호는 다이를 가로 질러 직선으로 이동하지 않으며 전파 지연이 발생하는 버퍼링 및 팬 아웃이 필요하기 때문에 빛의 속도에 가까운 어떤 것도 전파하지 않습니다. 따라서 1 클럭 사이클의 대기 시간을 유지하기 위해 메모리가 CPU에서 멀리 떨어져있을 수있는 최대 거리는 최대 몇 센티미터이므로 사용 가능한 영역에 수용 할 수있는 메모리의 양이 제한됩니다. 인텔의 Nehalem 프로세서는 실제로 L2 캐시의 용량을 Penryn과 비교하여 부분적으로 대기 시간을 개선하여 성능을 향상 시켰습니다. * 대기 시간에 대해 신경 쓰지 않는다면 메모리를 패키지에 넣을 이유가 없습니다.

또한 캐시 적중률은 대부분의 워크로드에서 매우 높습니다. 거의 모든 실제 사례에서 90 % 이상, 드물게는 99 % 이상은 아닙니다. 따라서 다이에 더 큰 메모리를 포함시키는 이점은 본질적으로이 몇 퍼센트의 미스로 인한 영향을 줄이는 것으로 제한됩니다. 엔터프라이즈 서버 시장 (예 : POWER) 용 프로세서는 일반적으로 막대한 캐시를 가지며 많은 엔터프라이즈 워크로드의 대규모 작업 세트를 수용하는 데 유용하므로 eDRAM을 포함 할 수 있습니다. Haswell은 텍스처가 커서 캐시에 수용 할 수 없기 때문에 GPU를 지원합니다. 전형적인 캐시 또는 HPC 워크로드가 아닌 오늘날의 eDRAM 사용 사례는 일반적인 캐시 계층 구조에서 잘 지원됩니다.

주석에서 제기 된 일부 문제를 해결하려면 다음을 수행하십시오.

이 eDRAM 캐시는 L4 대상 캐시로 설계되었으므로 주 메모리 대신 사용할 수 없습니다. 이는 데이터가 휘발성이고 효과적으로 내용을 다루기 때문에 저장된 데이터는 특정 위치에있는 것으로 취급되지 않으며 언제든지 폐기 될 수 있음을 의미합니다. 이러한 속성은 RAM이 직접 매핑되고 영구적이어야한다는 요구 사항과 조정하기 어렵지만,이를 변경하면 캐시가 의도 한 목적에 따라 캐시를 사용할 수 없게됩니다. 물론 마이크로 컨트롤러에서와 같이보다 일반적인 디자인의 메모리를 내장하는 것이 가능하지만, 낮은 대기 시간은 캐시 에서처럼 메인 메모리에서 유리하지 않기 때문에 큰 메모리를 가진 시스템에는 적합하지 않습니다. 또는 캐시를 추가하는 것이 더 가치있는 제안입니다.

기가 바이트 단위의 용량을 가진 매우 큰 캐시의 가능성과 관련하여 캐시는 응용 프로그램에 대한 작업 세트의 크기보다 크면됩니다. HPC 응용 프로그램은 테라 바이트 데이터 세트를 처리 할 수 ​​있지만 시간 및 공간적 위치가 양호하므로 작업 세트는 일반적으로 그리 크지 않습니다. 대규모 작업 세트가있는 응용 프로그램은 데이터베이스 및 ERP 소프트웨어와 같지만 이러한 종류의 워크로드에 최적화 된 프로세서 시장은 제한적입니다. 소프트웨어에 실제로 필요한 경우가 아니라면 캐시를 더 추가하면 매우 빠르게 수익이 감소합니다. 최근 프로세서가 프리 페치 명령어를 얻으므로 캐시를보다 효율적으로 사용할 수 있습니다. 이러한 명령어를 사용하여 작업 세트의 절대 크기가 아닌 메모리 액세스 패턴의 예측 불가능 성으로 인한 누락을 피할 수 있습니다.

* 대기 시간의 향상은 캐시의 물리적 크기가 더 작을뿐 아니라 연관성이 감소했기 때문입니다. Nehalem의 전체 캐시 계층 구조는 몇 가지 다른 이유로 크게 변경되었지만 성능 향상에 중점을 두지는 않았습니다. 따라서 이것은 예로서 충분하지만 완전한 계정은 아닙니다.


1
@Oleksandr R은 잘 설명했다. 요컨대, CPU와 DRAM 사이에 "임피던스 불일치"와 같은 것이있어,이 둘을 결합하기가 어렵다.
Lesser Hedgehog

3
물론, SRAM은 여전히 ​​매우 큽니다. 심지어 작은 (RAM과 비교하여) 캐시조차도 현대 CPU에서 다이의 절반을 차지합니다 (GPU가 통합 된 CPU는 제외).
Luaan

2
메인 메모리없이 실행할 수있는 방법이 있는지 궁금합니다. 축소 된 Linux 배포 (또는 이전 버전의 Windows)를 실행하려면 128MB가 충분해야합니다.
user253751

'GPU-on-package'가 아닌 'GPU-on-die'라고합니다.
AStopher

4
@cybermonkey : 실제로 명령어는 메인 메모리가 아닌 L1 캐시에서 가져옵니다. 메인 메모리 (60ns주기 시간 등)에서 메모리를 가져 오는 것은 끔찍한 일이므로 단일 코어 설계에서는 CPU를 16Mhz로 제한합니다.
MSalters

17

더 큰 메모리 (GB의 DRAM)가 CPU 다이 자체에 포함되지 않는 주된 이유는 주로 비용에 관한 것입니다. 매우 작은 기능을 만드는 데 필요한 제조 공정으로 인해 CPU 다이 공간이 훨씬 더 비쌉니다. 동일한 다이에서 두 가지를 제조하는 것이 불가능할 수도 있지만, 여기에 명확한 대답을 줄 세부 사항에 대해서는 충분히 알지 못합니다.

대량의 DRAM을 CPU 다이에 직접 넣을 가능성을 평가 해 봅시다.

22

그러나 메모리를 CPU에 더 가깝게 고정시키는 아이디어가 완전히 손실 된 원인은 아닙니다. 이것은 빛의 속도가 유한하고 특정 거리에서 그렇게 빨리 통신하는 것이 가능하기 때문에 미래에 메모리가 움직일 수 있습니다.

메모리를 CPU에 더 가까이 이동시키는 현실적인 기술 (기존 기술과의 단점도 있음) :

  1. CPU 자체 위에 쌓아 올리십시오. 이것은 이미 Raspberry Pi에서 수행되었으며 Wide I / O 메모리 표준의 일부입니다. 메모리는 여전히 별도의 프로세스에서 제조 된 별도의 다이입니다. 그러나, 이는 CPU에서 소실 된 열이 히트 싱크에 도달하기 전에 메모리를 통과해야한다는 문제가 있습니다. 이는 고전력 프로세서에서는 작동하지 않으며이 기술의 주요 애플리케이션이 CPU가 수십 또는 수백 와트를 소비하지 않는 모바일 프로세서 / 기타 임베디드 애플리케이션에있는 이유를 의미합니다.

  2. 저렴한 인쇄물에 아주 가깝게 부착하십시오. HBM이 저렴한 "인터 포저"다이로 제조 된 매우 큰 버스를 사용하여 작동하도록 설계된 방식이며, 대역폭이 상당히 높기 때문에 고급 GPU 메모리가 지향하는 방향입니다. 메모리 칩과 인터 포저는 여전히 실제 프로세서와 다른 다이에서 제조됩니다.


5
하나의 큰 다이에 더 많은 수십억 개의 트랜지스터를 만들려고 할 때 수율이 떨어질 것으로 기대합니다. 결함이나 결함이 발생할 때마다 추가 장치가 생길 수 있습니다. 시스템을 여러 개의 작은 조각으로 분할하면 한 조각에 오류가 발생할 가능성이 크게 줄어들고 해당 한 조각을 버리는 비용도 낮아집니다. 매우 큰 다이도 제작하기가 훨씬 어려울 것입니다.
John U

4
2

@JohnU-많은 반복 모듈을 다이에 놓으면 결함이 발생하면 모듈을 비활성화하고 더 낮은 표준에 따라 다이를 릴리스 할 수 있다는 이점이 있습니다 (DRAM과 관련하여 많이 발생합니다. 32KB 모듈을 가진 많은 기계가 실제로 결함이있는 섹션이 비활성화 된 64K 칩을 사용하고 있었을 때 80 년대로 돌아갑니다.) 이는 실제로 DRAM을 프로세서와 통합 할 때 수율이 증가 함을 의미 할 수 있습니다.
Jules

7

CPU에 대량의 DRAM을 추가 할 수없는 데는 몇 가지 이유가 있습니다.

  1. DRAM에 대한 프로세스 및 팹이 설정되지 않았을 수 있습니다. DRAM에는 추가 제조 단계를 거쳐야하는 특수 회로 요소가 필요합니다. 이것은 제조 비용을 증가시킵니다.

  2. 모든 메모리를 테스트해야합니다. 메모리 테스트는 테스트 시간을 증가시킵니다. 그것은 또 다른 비용 증가입니다.

  3. 다이를 확대하는 것은 웨이퍼 당 더 적은 다이를 의미하기 때문에 비용 자체가 증가합니다. 또한 수율에 영향을 미칩니다. 한 번의 결함으로 웨이퍼의 큰 부분을 차지합니다. 이에 대한 극단적 인 예를 보려면 카메라의 풀 프레임 (35mm) 이미지 센서 비용을 살펴보십시오.

  4. 특수한 종류의 메모리를 처리 할 수있는 프로세스를 개발하려면 시간과 돈이 많이 들고 작업 시간이 더 걸리고 실패 위험이 높습니다. DRAM에 문제가 있으면 CPU 릴리스가 지연됩니다. 데스크톱 CPU는 반도체 제조의 최첨단에 있기 때문에 지연이 큰 경쟁 단점이 될 수 있습니다. (지난 몇 년간 AMD와 인텔의 비교 참조)

  5. DRAM은 주기적 리프레쉬뿐만 아니라 읽기를위한 아날로그 센싱이 필요합니다. 저는 DRAM 전문가는 아니지만 오프 칩이든 온칩이든 상관없이 하이 엔드 CPU만큼 빠를 수 있을지는 의문입니다. 따라서 여전히 SRAM 캐싱에 갇혀있을 것입니다.

  6. 위의 문제를 극복하고 몇 기가 바이트의 DRAM을 CPU 다이에 넣을 수는 있지만 여전히 데스크톱 PC, 랩톱 또는 서버를 실행하기에는 충분하지 않으므로 어쨌든 오프 칩 메모리가 있어야합니다. .


1
대부분의 캐시는 ECC로 구현되며 일부 최신 인텔 프로세서는 캐시를위한 칩킬 및 블록 중복성을 통합합니다. 이는 테스트 요구 사항을 줄이고 더 큰 다이에 대한 수율을 크게 향상시킵니다. 대조적으로, 이미지 센서의 경우, 정보가 선험적으로 알려지지 않았기 때문에 오류 정정 가능성이 없으며 , 픽셀 블록이 제대로 작동하지 않을 때이를 무시하고 여분의 것을 사용하도록 결정할 수 없습니다. 그 장소.
Oleksandr R.

사실, 추억으로 더 높은 수율을 얻는 것이 더 쉽습니다. 내가 말했듯이, 그것은 극단적 인 예였습니다.
Adam Haun

3

다른 답변 외에도 이러한 시스템에 대해 말할 수있는 것이 더 있습니다. 메모리를 메인 다이로 옮기는 것은 많은 다른 엔지니어링 문제를 포함 할 것입니다. 버스를 재 라우팅하고 DMA 컨트롤러를 메인 프로세서에 구축하고 IRQ 버스를 재구성하고 집중된 지역에 배치 할 여분의 열을 제거하는 방법을 결정해야합니다. 이는 마더 보드 제조업체가 이러한 실질적인 변화를 지원하기 위해 참여해야한다는 것을 의미합니다. 로우 엔드 시스템은 이러한 변경으로 혜택을 볼 수 있지만 하이 엔드 시스템은 상당한 냉각이 필요할 것입니다. 예를 들어 일반 랩톱에서 이러한 칩을 처리 할 수 ​​있을지 의심됩니다.

메인 마더 보드는 가격이 하락하지만 (아마도 눈에 띄지 않지만) 그러한 칩은 훨씬 더 비쌉니다. DMA 컨트롤러 용 패키지와 RAM 패키지를 보셨다면, 모든 로직이 크게 커지지 않는 단일 다이로 압축 될 수 있다고 믿기 힘들 것입니다. 또한 CPU는 특정 크기의 큰 웨이퍼에서 절단됩니다. 즉, 제조업체는 웨이퍼 당 프로세서 수가 훨씬 적으므로 전체 비용도 증가합니다.

우리는 전체 시스템의 전력 사용량에 대해 이야기하는 것이 아니라 감소 할 것이 아니라 단일 지역에서 더 많은 전력량 (따라서 열)이 더 많이 발생할 가능성을 증가시킵니다. 실패.

마지막으로 여기에는 또 다른 단점이 있으며 이는 맞춤형 시스템을 제공 할 수 있다는 것입니다. 현재 제조업체는 고객의 선호에 따라 동일한 프로세서이지만 다른 양의 메모리 또는 다른 프로세서이지만 동일한 양의 메모리를 가진 시스템을 선택할 수 있습니다. 다수의 서로 다른 구성을 제공하려면 각각 다른 조립 라인에 서로 다른 다이를 구축해야합니다.

AMD는 실제로 프로세서 다이의 각 부분이 다른 구성으로 교체 될 수있는 개별 로직 유닛 인 방식으로 작동하는 기술을 적극적으로 사용하고 있습니다. 미래에 그러한 설계가 실행 가능하다면 칩 내 메모리를 비싼 모듈 업그레이드로 제공하는 CPU를 볼 수있을 것입니다. 예를 들어 언젠가 우리는 내장 메모리가없는 256 코어, 내장 메모리가있는 128 코어 또는 부품 GPU, 부품 CPU, 부품 RAM과 같은 다른 구성 중에서 선택할 수 있습니다.


이 답변의 주요 문제점은 스마트 폰용 SoC 디자인에 실제로 RAM이 포함되어 있다는 것입니다. 그것들은 훨씬 더 비싸지는 않지만 실제로 더 저렴합니다.
MSalters

@MSalters 동일한 다이에 통합되지 않은 것을 제외하고. 메모리 다이는 분리되어 테스트되고 올바르게 작동하는 것으로 확인되었으며 마이크로 프로세서 다이와 함께 패키징됩니다.
칫솔

2

위의 거의 모든 + 추가 문제 : 열.

DRAM 셀은 본질적으로 누설되는 커패시터입니다. 그리고 여기서 유전체는 SiO2 층 자체입니다. 온도가 증가함에 따라 누설 전류는 비례하여 증가합니다. 이로 인해 DRAM 셀이 훨씬 더 빨리 방전되어 훨씬 빠른 리프레시 속도가 필요하므로 복잡성, 필요한 전류가 증가하고 물론 더 많은 열이 추가됩니다.


2

이미 제공된 답변 외에도 다음과 같은 추가 측면이 있습니다. 생산 결함으로 인한 폐기물 :

특정 모델의 모든 CPU 중 1/100에 결함이 있고 (실제로 1/100이 계산하기 더 쉽다) 생산 된 모든 RAM의 1/100에 결함이 있다고 가정 해 봅시다.

두 구성 요소가 하나의 단일 칩에 결합되면 모든 칩의 1/100에 CPU 결함이 있고 모든 칩의 1/100에 RAM에 결함이 있습니다.

이것은 다음을 의미합니다.

  • 10000 개 칩 중 1 개에 결함이있는 RAM 및 CPU가 있습니다.
  • 99 개의 칩은 RAM에 결함이있을 것입니다
  • 99 칩에는 결함이있는 CPU가 있습니다
  • 생산 된 10000 개 부품 중 199 개는 모두 폐기물입니다

별도의 칩을 생성하는 계산은 다음과 같습니다.

  • 5000 개의 RAM 중 50 개에 결함이 있음
  • 5000 개 CPU 중 50 개에 결함이 있음
  • 10000 개의 부품 중 100 개가 낭비 될 것입니다

1GB의 RAM은 일반적으로 8 개의 칩으로 구성된 뱅크 형태로 만들어 지므로 RAM과 CPU를 동일한 칩에 배치하려는 경우 2 개이지만 9 개의 구성 요소를 하나의 칩으로 결합 할 필요가 없습니다. 이는 위의 간단한 예에서 생산 된 10000 개 중 약 865 개의 결함 부품으로 이어집니다.

"IBM Cell"CPU는이 문제를 정확히 가지고있었습니다. "Playstation"콘솔은 부분적으로 결함이있는 칩을 사용했습니다. Playstation 소프트웨어는 결함이있는 코어 및 SRAM을 사용하지 않는 방식으로 작성되었습니다.


1
AMD는 같은 이유로 한동안 3 코어 CPU를 제공했습니다. 실제로 부품은 일반적으로 패키지 전에 다이 레벨에서 테스트되므로 모 놀리 식 CPU와 메모리 조합에 가장 큰 관심을 기울입니다.
Oleksandr R.

Darpa는 darpa가 darpa 인 것을 제외하고 Intel과 Qualcom의 엔지니어에 비해 환상의 땅인 3dSoC를 사용하여 메모리 월을 극복함으로써 50 배의 전력 효율로 상을 받았습니다. monolithic3d.com/blog/… SoC (system on a chip)는 병렬 프로세서에 가장 적합합니다. 이는 2/16이 아닌 1000ds의 그룹이 있음을 의미합니다.
com.prehensible

1

실제로 두 가지 유형의 RAM이 있습니다. 정적 RAM과 동적 RAM입니다. 정적 메모리는 매우 빠르지 만 비용이 많이 듭니다. 한편 동적 RAM은 정적 RAM에 비해 느리지 만 정적 RAM에 비해 저렴한 비용이 듭니다.

캐시 메모리는 정적 RAM에 속합니다. KB 또는 MB 크기로 제공됩니다. 그들은 빠르다. 그러나 높은 비용.


정확하게는 아닙니다. 빠르지 만, 이는 주로 거리 데이터가 DRAM보다 훨씬 작아야하기 때문입니다.
AStopher

3
실제로 SRAM 셀은 더 단순하기 때문에 더 빠릅니다. 디지털 이중 안정 회로입니다. 실수로 아날로그 값 0.8로 설정하면 안정적인 위치 1.0으로 이동하여 자체적으로 고정됩니다. DRAM은 그러한 안정적인 상태를 갖지 않습니다. 중간 상태에서 멀어 지지 않습니다 . 더 나쁜 것은, 그러한 상태 로 나아 가기 때문에 추가 수정 "새로 고침"회로가 필요한 이유입니다.
MSalters 2016

@MSalters : SRAM 셀은 DRAM 셀보다 단순하지 않습니다. 훨씬 더 안정적이므로 회로 및 타이밍 다이어그램을 지원하는 측면에서 사용 이 더 간단합니다. 그러나 SRAM 셀은 DRAM보다 비트 당 약 6 배 많은 회로를 사용합니다.
Ben Voigt 2016 년

1
@ BenVoigt : 트랜지스터 카운트에서 예-6T 대 1T. 그러나 DRAM에는 매우 이상한 구성 요소 인 커패시터가 있습니다. SRAM은 서로 연결된 트랜지스터 일뿐입니다.
MSalters

DRAM의 커패시터도 트랜지스터로 구현되는 것으로 나타났습니다
Ben Voigt

1

언급 된 다른 이유 외에도 많은 시스템에 둘 이상의 CPU 코어가 있습니다. 메인 DRAM에 저장된 정보가 모든 캐시 된 사본과 일치하는 경우, 캐시 된 정보가없는 모든 프로세서는 동일한 액세스 권한을 갖습니다. 일부 아키텍처는 각 CPU 코어가 다양한 주소 공간을 "소유"한다는 가정하에 설계되었으며 CPU가 다른 프로세서가 소유 한 메모리에 액세스 할 수 있더라도 이러한 액세스는 자체 메모리에 대한 액세스보다 훨씬 느립니다. x86은 일반적으로 그러한 방식으로 구현되지 않습니다.

시스템이 프로세서 코어가 특정 주소 범위를 소유한다고 가정하고 코드가 다른 프로세서의 주소 범위 사용을 최소화하려고하면 각 프로세서 코드에 충분한 양의 온칩 메모리가 포함되도록하는 것이 합리적입니다. 이러한 설계는 프로세서 코어가 자체 메모리에 액세스하는 데 필요한 시간을 줄일 수 있지만 다른 프로세서의 메모리에 액세스하는 데 필요한 시간을 늘릴 수 있습니다. 그러나 시스템이 이러한 가정을 중심으로 설계되지 않은 경우 데이터가 필요한시기에 관계없이 프로세서간에 데이터가 분산 될 수 있습니다. 다른 CPU (외부 메모리 시스템)에서 데이터에 액세스하는 데 추가 시간이 내부 액세스에 절약 된 시간의 절반에 불과하더라도

오늘날의 기술에 맞도록 시스템을 처음부터 새로 설계했다면, 비 균일 메모리 아키텍처는 모든 프로세서가 모든 메모리에 효율적으로 액세스 할 수 있도록하는 것보다 더 많은 "벅을위한 뱅"을 허용 할 수 있습니다. 그러나 오늘날의 소프트웨어 설계를 고려할 때 프로세서간에 공유되는 외부 메모리 시스템을 갖추는 것은 프로세서 자체 내에 대량의 데이터 스토리지를 보유하는 것보다 훨씬 효율적입니다.


2
비 균일 메모리 아키텍처는 오늘날 이미 사용되고 있으며 심지어 일반적입니다. 다중 프로세서 시스템에 사용되는 통합 메모리 컨트롤러가있는 CPU의 경우, 다른 프로세서의 물리적 메모리에 저장된 데이터는 로컬로 연결된 RAM보다 대기 시간이 길고 액세스가 더 빠릅니다. 실제로 이러한 시스템에서 발생하는 일은 프로세서에 추가 수준의 캐시가 장착되어 있고 연결 패브릭에 의해 일관성 트래픽이 부분적으로 처리된다는 것입니다. POWER7 및 POWER8이이 유형입니다.
Oleksandr R.

1

이전의 모든 대답은 CPU에 더 많은 메모리를 추가하는 것이 왜 어려운지를 지적하는 것이 정확하지만 현대 CPU에는 상당히 많은 메모리가 있다는 것도 사실입니다.

결정 론적 지연이 중요한 실시간 작업에서는 온칩 캐시를 코드 및 / 또는 데이터를위한 주소 지정 가능 메모리로 사용하는 것은 결코 들지 않습니다. 장점은 빠르고 일정한 액세스 시간이며, 온칩 메모리가 상당히 제한적이라는 단점이 있습니다.


1

원래 질문에서 설명하는 문제는 시스템의 모든 메모리가 CPU에 포함 된 경우에만 피할 수 있습니다. 메인 보드의 슬롯을 통해 시스템에 추가 된 추가 메모리는 설명 된 것과 동일한 지연이 적용되며 CPU / RAM과 온보드 RAM 사이에 마샬링 및 논리 제어 장치가 필요합니다.

RAM은 저렴하며 일반적으로 CPU 업그레이드 사이에 사용자가 1-2 회 확장합니다.

또한 RAM이 CPU 클럭 속도로 실행 되더라도 일반적인 "페치"호출은 CPU에서 여러 유휴 틱을 유발합니다.

머신의 전통적인 메모리 구성은 상단에 CPU 레지스터, 캐시, RAM, 디스크가있는 피라미드입니다. 일반적으로 성능이 좋은 컴퓨터는 적절한 클럭 속도, 적절한 캐시 양, 많은 양의 RAM 및 고속 하드 디스크 (또는 어레이)의 조합이 있습니다. 최근 몇 년 동안 디스크 성능은 일반적으로 대부분의 PC 및 고 RPM 디스크에서 최고의 성능 향상을 제공하며, 캐시 및 솔리드 스테이트 디스크가있는 디스크는 성능이 향상됩니다.

그렇습니다. 모든 RAM 온 칩이 장착 된 시스템은 최신 응용 프로그램에서 잘 작동하지만 표준 운영 체제를 실행하는 칩에 일부 RAM이 장착 된 시스템은 생각했던 성능 향상을 제공하지 못할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.