마이크로 컨트롤러와 같은 비교적 단순한 장치가 CPU보다 훨씬 느린 이유는 무엇입니까?


25

동일한 수의 파이프 라인 단계와 동일한 제조 노드 (예 : 65nm) 및 동일한 전압을 감안할 때 간단한 장치는 더 복잡한 장치보다 빠르게 실행해야합니다. 또한 여러 파이프 라인 단계를 하나로 병합하면 단계 수보다 더 큰 요인으로 느려져서는 안됩니다.

이제 5 년 된 CPU를 사용하여 2.8GHz에서 14 개의 파이프 라인 단계를 실행하십시오. 하나가 스테이지를 병합한다고 가정하십시오. 200MHz 이하로 느려질 것입니다. 이제 전압을 높이고 워드 당 비트 수를 줄이십시오. 실제로 속도가 빨라집니다.

그렇기 때문에 몇 년 전에 제조 된 훨씬 더 복잡한 CPU가 150 배나 10 배나 더 빠르게 작동 할 수 있었지만 AVL과 같이 현재 제조 된 많은 마이크로 컨트롤러가 왜 최고 속도 (예 : 5V에서 20MHz)로 실행되는지 이해가되지 않습니다. 1.2V-ish에서 모든 파이프 라인 단계를 하나로 롤링하는 경우. 가장 조밀 한 봉투 뒤 계산에 따르면, 경계선이 더 이상 사용되지 않는 기술을 사용하여 제조 된 경우에도 마이크로 컨트롤러는 공급되는 전압의 1/4에서 최소 10 배 더 빠르게 작동해야합니다.

따라서 질문 : 마이크로 컨트롤러 클럭 속도가 느린 이유는 무엇입니까?


8
팹이 비용을 지불하기 때문에 좋은 마이크로 컨트롤러 덩어리는 오래된 기술을 사용하여 제조됩니다.
매트 영

18
힘. 두 CPU의 전력 소비를 고려하면 동일한 성능 / 와트에 가깝거나 마이크로가 이길 것입니다.
Brian Drummond

34
더 단순하다 == 더 빠르다는 생각은 단순히 잘못이다. 최신 cisc CPU의 복잡성으로 인해 다중 레벨 캐시, 파이프 라인 및 분기 예측과 같은 기능을 더욱 빠르게
구현할 수 있습니다.

1
오래된 CPU는 몇 개월 / 년 동안 작은 배터리로 작동하지 않습니다. 그 날에는 최첨단 (읽기 : 값 비싼) 기술을 사용했습니다. 모든 명령에 대해 느린 / 저렴한 플래시를 기다릴 필요가 없었습니다. mcu가 빠르게 실행될 필요는 거의 없으며 개발자를 위해 새로운 verilog를 가져 와서 파운드리에 관계없이 구현할 수 있습니다. 나는 자전거 대 포뮬러 1 자동차 의견을 가장 좋아합니다.
old_timer

14
20MHz는 전혀 느리지 않습니다. 우리는 PC의 GHz 속도에 만족하고 있으며, 대부분의 리소스는 멋진 그래픽 렌더링에 사용됩니다. 킬로 헤르츠 (
Kilohertz)

답변:


66

속도에 영향을 미치는 다른 요인이 있습니다.

  • 메모리 : 실제 성능은 종종 메모리 대기 시간에 의해 제한됩니다. 인텔 CPU에는이를 위해 큰 캐시가 있습니다. 마이크로 컨트롤러는 일반적으로 그렇지 않습니다. 플래시 메모리는 DRAM보다 훨씬 느립니다.

  • 전력 소비 : 이것은 종종 임베디드 애플리케이션에서 큰 문제입니다. 실제 200MHz Intel CPU 는 10 와트 이상 (보통 훨씬 더 많은 전력)을 소비했으며 큰 방열판과 팬이 필요했습니다. 그것은 공간과 돈을 필요로하며, 그것과 함께 제공된 외부 논리와 메모리도 계산하지 않습니다. 20 MHz의 AVR은 당신이 필요로하는 모든 것을 포함하는, 0.2 와트 정도 걸립니다. 이것은 또한 프로세스와 관련이 있습니다. 더 빠른 트랜지스터는 누설되는 경향이 있습니다.

  • 작동 조건 : 의견에서 드미트리가 지적한 것처럼 많은 마이크로 컨트롤러가 넓은 전압 및 온도 범위에서 작동 할 수 있습니다. 위에서 언급 한 ATMega는 -40C에서 85C까지 작동하며 -65C에서 150C까지 저장할 수 있습니다. (다른 MCU는 최대 125C 또는 155C까지 작동합니다.) VCC 전압은 2.7V ~ 5.5V (피크 성능의 경우 5V +/- 10 %) 일 수 있습니다. 이 Core i7 데이터 시트는 제조 과정에서 허용 된 VCC를 트리밍하기 때문에 읽기가 어렵지만 전압 및 온도 공차는 ~ 3 %의 전압 공차 및 105C의 최대 접합 온도로 확실히 좁습니다. (최소 5C이지만 100A를 초과 할 때 최소 온도는 실제로 문제가되지 않습니다.)

  • 게이트 수 : 단순할수록 항상 빠르지는 않습니다. 그렇다면 인텔은 CPU 아키텍트가 필요하지 않습니다! 단순한 파이프 라이닝이 아닙니다. 고성능 FPU와 같은 것도 필요합니다. 가격이 올라갑니다. 많은 저사양 MCU에는 이러한 이유로 정수 전용 CPU가 있습니다.

  • 다이 면적 예산 : 마이크로 컨트롤러는 많은 기능을 하나의 다이에 맞아야하며, 여기에는 종종 응용 프로그램에 사용되는 모든 메모리가 포함됩니다. (SRAM 및 안정적인 NOR 플래시는 상당히 큽니다.) PC CPU는 오프 칩 메모리 및 주변 장치와 통신합니다.

  • 프로세스 :이 5V AVR은 고대 저비용 프로세스로 제작되었습니다. 그것들은 처음부터 저렴하도록 설계되었습니다. 인텔은 최고의 기술력으로 소비자 제품을 높은 마진으로 판매합니다. 인텔은 또한 순수한 CMOS를 판매합니다. MCU 프로세스는 온칩 플래시 메모리를 생산해야하므로 더 어렵다.

위의 많은 요인들이 관련되어 있습니다.

오늘 200 MHz 마이크로 컨트롤러를 구입할 수 있습니다 ( 여기의 예가 있습니다 ). 물론 20MHz ATMegas 보다 10 배나 비쌉니다 .

짧은 버전은 속도가 단순성보다 더 복잡하고 저렴한 제품은 속도가 아니라 저렴하게 최적화된다는 것입니다.


11
견고 함을 잊지 마십시오 : ATMega는 4MHz에서 1.8-5.5V 범위에서 동작하는 동안 공급 전압이 5 % 이상 변경되면 일반적인 CPU가 작동하지 않습니다.
Dmitry Grigoryev

1
@DmitryGrigoryev 좋은 지적입니다! 내 답변을 업데이트했습니다.
Adam Haun

25

저속의 주요 기술적 이유는 저렴한 소형 MCU가 프로그램 저장을 위해 온칩 플래시 메모리 만 사용하기 때문입니다 (즉, RAM에서 실행되지 않음).

소형 MCU는 일반적으로 프로그램 메모리를 캐시하지 않으므로 매주기마다 플래시를 실행하기 전에 항상 명령을 읽어야합니다. 이는 결정적인 성능과 # cycles / operation을 제공하고, 더 저렴하고 간단하며, 코드와 데이터가 혼합되어 버퍼 오버플로 등으로 인한 새로운 위협을 만드는 PC와 같은 문제를 피합니다.

플래시 메모리에서 읽기 대기 시간 (50-100ns 정도)은 SRAM 또는 DRAM에서 읽기 (10ns 이하)보다 훨씬 느리며,주기는 매주기마다 발생해야합니다. 부품.


4
또한 전력 (열)은 주파수에 따라 선형 적으로 증가합니다.
킴벌리여

1
플래시에서 읽는 것이 100ns 근처에 있다고 생각하지 않습니다 . IIRC는 2 배 더 큽니다. 그러나 경우 플래시 컨트롤러가 작은 DRAM 캐시를 포함하고, 코드가 너무 가지가 아닌 평균 대기 시간이 훨씬 낮을 수있다 매우 높은 (90 % +) 그래서, 캐시 적중률이 될 수 있습니다.
MSalters

2
내가 열어 본이 AT91SAM7S 데이터 시트는 내부 플래시에 대한 내부 플래시에 대한 "빠른 액세스 시간, 최악의 조건에서 30MHz 단일 사이클 액세스"를 나타냅니다. 33ns입니다. 그리고 프리 페치 버퍼의 하나의 dword가 있습니다. 오프 다이 플래시는 실제로 더 높은 대기 시간을 가질 수 있습니다.
pjc50

1
@Jamil 정확한 공식은 기억 나지 않지만 주파수의 제곱이라고 생각합니다.
Jan Dorniak

22

포뮬러 1 자동차를 가지고 있는데 왜 사람들이 자전거 나 작은 오토바이를 타나요? 분명히 300km / h를 운전하고 즉시 모든 곳으로 가야합니까?

간단히 말해서, 그것들보다 더 빠를 필요는 없습니다. 내 말은, 조금 더 빠른 마이크로 컨트롤러가 어떤 것들을 가능케한다는 것을 확신하지만, 하루에 1 시간 정도 계속 사용되는 자동 판매기에서 무엇을 할 것인가? TV 리모컨으로 무엇을 하시겠습니까?

반면에 저전력 소비, 프로그래밍하기가 훨씬 더 쉬운 등의 중요한 기능이 있습니다. 기본적으로 프로세서가 아니며 다른 작업을 수행합니다.


12
@Michael 어디에서 간단한 아이디어를 얻을 수 있습니까?
매트 영

3
@Michael 자전거는 자동차보다 훨씬 간단하지만 여전히 느립니다. 어쨌든 매트가 옳습니다. 간단한 것이 자동으로 빠르지는 않습니다. 즉, 더 높은 주파수에 필요한 고려 사항으로 인해 빠른 것이 복잡해질 것입니다.
AndrejaKo

2
고성능 CISC 프로세서는 단순한 임베디드 프로세서보다 더 많은 명령어를 발행하는 경향이 있습니다. 그들은 훨씬 더 많은 작업을 병렬로 수행하므로 더 복잡하고 빠릅니다.
킴벌리 W

2
@Michael $ 1은 일부 응용 프로그램에서 고급스럽게 비쌀 수 있습니다. 마이크로 SD 카드의 마이크로 컨트롤러 비용은 약 19 센트입니다.
Xen2050

2
@Michael "RISC 아키텍처의 기본 개념은 간단합니다. 복잡한 작업보다 간단한 작업을 더 빠르게 처리 할 수 ​​있습니다"아니오! 최신 RISC 아키텍처는 SIMD와 같은 더 많은 명령어를 도입하고 수퍼 스칼라, 하이퍼 스레딩, 비 순차적 실행과 같은 더 많은 기능을 지원해야하기 때문에 매우 복잡합니다. 복잡성은 CISC 아키텍처를 쉽게 초과 할 수 있습니다. 오늘날 MIPS에는 수백 또는 수천 개의 명령이 있습니다. "CISC v RISC는 주로 역사적인 논쟁"
phuclv

13

수백 MHz 이상에서 실행되는 ARM 컨트롤러가 많이 있습니다. 누가 500MHz PIC를 필요로합니까? 최첨단 프로세스에 백만 달러 마스크를 정당화하기 위해 부품 당 충분한 비용을 지불 할 의사가 있습니까?

널리 알려진 ATmega328 은 350nm 기술로 만들어졌으며 최신 프로덕션 인텔 CPU ( Skylake의 경우 14nm ) 보다 약간 뒤떨어졌습니다 .

저렴한 8 비트 컨트롤러조차도 속도가 느리게 향상되었으며 여전히 5V에서 작동하는 32 및 64MHz PIC 컨트롤러 (예 : PIC18F14K22)를 얻을 수 있습니다 (후자는 총 시스템 비용을 고려합니다).

한 가지 고려 사항은 이러한 컨트롤러에는 작은 메모리 공간과 느린 클럭 속도에 최적화 된 아키텍처가 있다는 것입니다. 높은 클럭 속도에 도달하기 시작하면 프리스케일러 등으로 리지 그해야합니다.

마이크로 컨트롤러가 충분히 빠르면 펌웨어가 주변 장치를 대신 할 수 있다는 생각으로 매우 빠른 PIC와 유사한 컨트롤러를 생산하기위한 시도 (1990 년대 후반)가 시도되었습니다. 예를 들어 UART를 비트 뱅킹 할 수 있습니다. 나는 그들이 상업적으로 성공한 것이라고 생각하지 않습니다-Scenix-> Ubicom-> Qualcomm (게임 오버).


350nm? 그것은 그것을 설명 할 것입니다. 아무도 20 년 된 기술을 사용하여 무엇이든 제조한다는 것을 몰랐습니다.
Michael

3
우리 중 일부는 여전히 3000nm와 같은 4000 시리즈 CMOS를 설계하고 있습니다.
Spehro Pefhany

6
오래된 프로세스는 방사선 환경 또는 추적 성을 요구하는 신뢰성이 높은 시스템을 다루는 사람들에게도 유용 할 수 있습니다.
Krunal Desai

5
게임은 끝나지 않습니다-시차 프로펠러는 그 개념의 연속입니다.
Dave Tweed

3
@ 마이클 : 기술의 시대가 아닙니다. 크기도 중요합니다. 공정 크기가 클수록 불량률이 낮아 리 젝트가 적어 수율이 높아 칩당 비용이 절감됩니다. (데스크탑과 같은) CPU에 100 달러를 기꺼이 지불하려는 경우, 낮은 수율로 인한 높은 비용이 정당화됩니다. 당신이 단지 50 센트를 지불 할 의향이 있다면 그것은 정당하지 않다.
slebetman

3

자동차 생산을 원한다고 상상해보십시오. 한 가지 접근 방식은 공장에서 여러 장비를 순차적으로 사용하여 한 번에 하나의 자동차를 만드는 것입니다. 이 접근법은 적당량의 적당히 복잡한 장비로 수행 될 수 있으며, 이러한 많은 장비는 하나 이상의 단계를 수행하는데 사용될 수있다. 다른 한편으로, 공장의 많은 장비는 여전히 많은 시간 동안 유휴 상태에 있습니다.

또 다른 접근 방식은 첫 번째 생산 단계를 처리 한 장비가 첫 번째 자동차에서 해당 작업을 완료하자마자 다음 자동차에서 해당 작업을 시작할 수 있도록 조립 라인을 설정하는 것입니다. 제조 공정에서 한 단계의 장비를 여러 단계에서 재사용하는 것은 복잡하므로 대부분의 경우 하나의 매우 특정한 작업을 수행하도록 최적화 된 장비를 더 많이 사용하는 것이 좋습니다 (예 : 드릴 작업이 필요한 경우). 10 개의 서로 다른 크기의 구멍이있는 경우 최소 장비 설정에는 10 비트의 드릴 1 개와 빠른 변경 메커니즘이 포함되지만 조립 라인에는 영구적으로 설치된 비트 1 개가있는 드릴 50 개가있을 수 있으며 빠른 변경이 필요하지 않음) .

DSP 또는 GPU와 같은 경우에는 수행 할 작업의 특성이 일관되기 때문에 비교적 저렴한 속도로 비교적 저렴한 속도를 달성 할 수 있습니다. 불행히도, 많은 CPU는 복잡성이 다른 명령의 임의의 오류를 처리 할 수 ​​있어야합니다. 이를 효율적으로 수행 할 수 있지만 매우 복잡한 스케줄링 논리가 필요합니다. 현대의 많은 CPU에서 "작업"에 필요한 논리는 지나치게 복잡하거나 비싸지 않지만 다른 모든 것을 조정하는 데 필요한 논리입니다.


2
내가 그것을 놓쳤다면 미안하지만, 이것이 CPU 대 '느린'마이크로 컨트롤러와 어떤 관련이 있습니까? CPU 대 (일반적으로 더 빠른) 특수 프로세서에만 초점을 맞추는 것 같습니다.
underscore_d

1
@underscore_d : 첫 번째 단락은 더 간단한 마이크로 컨트롤러를 다룹니다. 한 번에 한 대의 차를 만드는 작은 상점과 같습니다. 두 번째 단락에서는 많은 작업을 매우 빠르게 수행 할 수 있지만 가능한 작업 종류에는 제한이있는 저렴한 컨트롤러가 있습니다. 어려운 점은 작업을 임의의 혼합 작업을 수행하면서 상당한 (그러나 변수가 큰) 수준으로 겹칠 수 있다는 것입니다. 모든 사이클에서 두 개의 숫자를 받아 들일 수있는 서브 시스템이 있고, 네 사이클 전에 제출 된 두 개의 숫자의 곱을 출력 할 경우, ...
supercat

1
... 각주기마다 두 개의 숫자를 수락하고 두주기 전에 제출 된 합계를 출력하여 값을 제출 해야하는 시점, 결과를 사용할 수있는 시점, 물건을로드하고 저장 해야하는 시점을 파악하려고합니다. 레지스터 등은 매우 복잡해질 수 있습니다. 특히 가장 긴 파이프 라인과 일치하도록 모든 파이프 라인을 채우지 않으려는 경우.
supercat

감사; 그것은 그것을 정리합니다. 예, 빠른 범용 CPU는 파이프 라인, 캐시, 스케쥴링, RAM 제어 등과 같은 '스캐 폴딩 (scaffolding)'에서 재무 및 에너지 비용의 대부분을 발생시키는 것이 합리적입니다. 마이크로를 위해. 마찬가지로, 하나의 애플리케이션에 특화된 프로세서에서 상대적으로 작은 클럭 주파수로 수행 할 수있는 일을 놀라게하는 일이 결코 없습니다. 양쪽에 매혹적인 물건!
underscore_d

@underscore_d : MIPS 아키텍처는 컴파일러가 일부 스케줄링 문제를 담당하므로 하드웨어를 단순화 할 수 있다는 전제하에 설계되었습니다. 새로운 프로세서는 종종 이전 프로세서보다 더 많은 파이프 라인 단계를 필요로하므로 파이프 라인이 짧은 프로세서 용으로 작성된 코드는 하드웨어 인터록이없는 경우 긴 파이프 라인이있는 프로세서에서는 작동하지 않습니다.
supercat
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.