내부 캐시 만 RAM으로 사용하여 CPU가 전원 공급 장치 및 ROM만으로 작동 할 수 있습니까?


61

온칩 캐시 RAM이있는 CPU (예 : Intel i3 / i5 / i7 / Xeon)는 외부 메모리 뱅크를 연결하지 않고 유일한 기능적 RAM으로 사용할 수 있습니까?

아니면 외부 RAM이 있어야 하고 캐시에 액세스하거나 단독으로 사용할 수 없습니까?

현대 데스크탑 / 서버 CPU는 많은 1990 년대 컴퓨터가 전체 시스템 메모리에있는 것보다 더 많은 내부 캐시 RAM을 가지고 있기 때문에 간단한 코드를 실행할 수있을만큼 충분해야합니다.

내부 CPU RAM이 주소 카운터 및 누산기에 대해 단지 몇 바이트에 불과하기 때문에 6502와 같은 캐시가 존재하기 전의 CPU는 아무것도 할 수 없습니다.

이것은 모든 종류의 최신 운영 체제를 실행하는 것이 아니라 사용자 정의 ROM에 프로그래밍 된 간단한 코드를 실행하거나 16 진수 입력 키패드를 사용하여 입력하는 문제입니다.


1
일부 CPU에는 램이 내장되어 있고 외부 칩이 필요하지 않기 때문에 CPU와 "캐시"의 의미에 따라 달라집니다.
PlasmaHH 2016 년

42
기본적으로 프로세서 자체에 주소 지정 가능한 메모리를 포함 시키면 마이크로 컨트롤러라고하는 것을 구축합니다. 이것들이 존재합니다.
Marcus Müller

1
누가 RAM이 필요하다고 말합니까?
Chris Stratton

1
"함수"를 정의하는 방법에 따라 다릅니다. i7은 배터리 만 연결하면 열을 완벽하게 생산할 수 있습니다.
Dmitry Grigoryev 2016 년

2
몇 개의 레지스터만으로 추가 RAM없이 할 수있는 일이 많이 있습니다. 예를 들어 함수 발생기입니다.
David Schwartz

답변:


67

PC 부팅 순서에 대한이 매우 자세한 설명을 참조하십시오. http://www.drdobbs.com/parallel/booting-an-intel-architecture-system-par/232300699?pgno=2

이 시점에서 DRAM을 사용할 수 없으므로 코드는 처음에는 스택없는 환경에서 작동합니다. 대부분의 최신 프로세서에는 소프트웨어 스택을 제공하기 위해 RAM으로 구성 할 수있는 내부 캐시가 있습니다. 부트 시퀀스에서이 시점에 시스템에서 제거를 허용 할 수 없으므로 개발자는이 RAM-RAM 기능을 사용할 때 매우 엄격한 코드를 작성해야합니다. 일관성을 유지할 메모리가 없습니다. 그렇기 때문에 프로세서는 RAM으로 캐시 방식으로 작동 할 때 부팅 프로세스의이 시점에서 "비 Evict 모드"(NEM)로 작동합니다. NEM에서 프로세서의 캐시 라인 누락은 제거를 유발하지 않습니다. 사용 가능한 소프트웨어 스택으로 코드를 개발하는 것이 훨씬 쉬우 며 초기화 코드는 DRAM 초기화 이전에도 스택을 사용하도록 최소 설정을 수행하는 경우가 많습니다.

RAM없이 PC를 실행하면이를 확인할 수 있습니다. 일련의 경고음이 울립니다. 그것들을 재생하는 프로그램은 BIOS Flash ROM에서 실행됩니다.

또한 일부 ARM 프로세서에서이 동작을 보았습니다. SoC 내부에는 DRAM을 찾고 열거하고 구성하는 프로그램을 실행하기 위해 부팅 시퀀스 초기에 캐시를 RAM으로 사용할 수있는 구성 레지스터가 있습니다.



2
x86의 "CAR (cache-as-ram)"모드 작동 방식에 대한 자세한 내용은 (CAR 모드를INVD 종료 할 때 메모리에 쓸모없는 데이터를 쓰지 않고 캐시를 무효화 할 수 있는 유스 케이스로 제공합니다. 소중한 것).
Peter Cordes

DRAM을 사용할 수 없을 때 퇴거에 어떤 문제가 있습니까? RAM에 쓰는 것이 아니라 읽는 데 문제가 없습니까?
Mehrdad

14

일반적으로 캐시 메모리는 주소 지정이 불가능합니다. 프로그램은 의도적으로 데이터를 저장하거나 검색 할 수 없습니다.


2
+1 이것은 매우 확실한 답변입니다. 캐시 라인은 거의 임의의 방식으로 주 메모리의 주소 지정 가능한 액세스에서 마음대로로드 및 폐기됩니다.
Ale..chenski 2016 년

17
그렇기 때문에 특수 모드 (pjc의 답변과 같이) 또는 특별한 속임수가 필요합니다. 또 다른 옵션 (허용 된 답변 외에)은 시스템에 DRAM이 있다고 생각 하게하는 것이지만 실제 메모리 쓰기는 데이터를 버리고 읽기는 모두 0 (또는 일부 주소 영역의 ROM에서 실제 데이터)을 생성합니다. 모든로드가 캐시에 도달하면 시스템이 올바르게 작동합니다. 실제 캐시 플러시없이 64 비트 긴 모드로 전환 할 수 있는지 x86이 어떻게 부팅되는지 알 수 있습니다.
Peter Cordes

3
그러나, 스카이 레이크 CPU가 인 - 패키지는 eDRAM 캐시 메모리 측 캐쉬로 사용하여 (메모리 컨트롤러 사이 의 모든 심지어의 DMA 비 CPU 시스템 장치 또는 CPU로드에서 캐시 액세스 할 수 있도록 브로드 웰 달리 다른) / "캐시 불가능한"메모리 영역 (L1 / L2 / L3을 우회)에 저장합니다.
Peter Cordes

3
@PeterCordes 그러나 특별한 모드가 필요하기 때문에 대답은 "아니오"가 아닙니다. 문제는 특수 모드의 존재 여부에 관한 것입니다.
user253751 2016 년

1
문제는-그럼에도 불구하고 캐시를 사용하고 캐시를 놓치지 않거나 플러시하지 않으면 어떻게됩니까-존재하지 않는 RAM의 주소에 무언가가 기록되는 순간 주소를 지정할 수 있습니까? 실제 쓰기는 바닥에서 삭제되지만 읽기는 캐시에서 제공됩니까?
rackandboneman 2016 년

9

이것이 문제에 지정된 프로세서 제품군을 직접 다루지는 않지만 아래의 구성표는 이전 x86 프로세서에서 작동하므로 RAM이나 캐시없이 작동 할 수 있지만이 방법에는 창의적인 프로그래밍 기술이 필요합니다.

1980 년대 에 영국에서 방송 된 MSF 타임 시그널 을 디코딩하는 라디오 수신기를위한 설계를 접하게되었습니다 . 이 디자인은 Z80 프로세서를 사용했으며 프로그램 저장 용 ROM 만있었습니다. 모든 처리 및 데이터 저장은 프로세서 내의 내부 레지스터를 사용하여 수행되었습니다. 이것은 스택을 보유 할 수있는 메모리가 있었기 때문에 서브 루틴 호출이 없을 수 있음을 의미했습니다.

그 당시에는 RAM 비용이 높았으며 이것이 취미 프로젝트 였기 때문에 흥미로운 학업 연습과는 별도로 비용을 줄이는 것이 중요했습니다. 이것은 또한 널리 이용 가능한 마이크로 컨트롤러 (eprom 비용이 £ 100 IIRC 이상인 8751) 시절 이전이었습니다.


레지스터에 보관할 수있는 데이터로 자신을 제한하면 실제로 수행 할 수있는 유용한 기능이 제한됩니다. 나는 현대 프로세서의 캐시 메모리에 대한 질문이라고 생각합니다.
Mark Ransom 2016 년

물론 RAM을 사용하지 않으면 가능한 기능이 제한된다는 것은 말할 나위도 없습니다. 인용 된 애플리케이션은 매우 제한된 데이터 저장 리소스, 라디오 프론트 엔드 및 LCD 디스플레이로 얼마나 가능한지 보여줍니다.
uɐɪ

-3

일반적으로 CPU에는 외부 시계가 필요합니다. 그러나 그것은 가능합니다.


1
이유를 설명하고 사용자 질문에 철저히 대답하는 것이 적절합니다. 이 답변은 약한 편입니다.
전압 스파이크
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.