o que realmente são: Microcontrolador (uC), System on Chip (SoC) e Digital Signal Processor (DSP)?


9

A questão real está no final. Mas ler isso sozinho pode não lhe mostrar por que estou confuso. Eu escrevi este post começando com algumas definições, suposições e especulações e depois fazendo a pergunta real.

Eu sempre acho que sei a diferença, mas quando recebo uma pergunta como: "se eu coloco um transceptor com um uC, agora é um SoC?" Fico todo confuso e não sei responder. Lembro-me de uma vez que me disseram que um UC é essencialmente um SoC . Mas que prova eu ​​tenho? Mas o arduino não está em um único chip! Posso retirar o processador Atmeg da "placa" a qualquer momento!

Quando faço check-in online, recebo todo tipo de respostas que confirmam ou contradizem o que acabei de dizer direta ou indiretamente. Isso sempre é confuso para mim e culpo ninguém menos que pessoas de marketing que usam esses termos de maneira vaga e, às vezes, de forma intercambiável, e as pessoas que seguem sua liderança.

Então decidi procurar o significado fundamental desses três termos: uC, SoC e DSP. Porque, por exemplo, quando fico confuso sobre tensões em circuitos, sempre volto aos fundamentos da física, o solo não é realmente zero, é apenas uma "referência" e as tensões não são "absolutas", elas são "parentes". Isso sempre me aponta para a direção certa. Mas não há base para falar quando se fala em uC. "micro" "controller" é um controlador tão pequeno que está na escala de micrômetros. Mas não temos o termo nanocontrolador, temos? Portanto, esse modo de pensar não ajudaria.

O que estou tentando responder é o seguinte:

  • uC é uma unidade de processamento com outros periféricos e memória para uso geral, certo?
  • SoC é um "sistema" completo em um "chip". Então, qualquer sistema que você coloca em um único chip, é um SoC, certo?
  • O DSP é uma unidade de processamento para uso específico, principalmente operações matemáticas, certo?

    Agora

  • Isso significa que tudo em um uC deve estar em um chip? porque se sim, então uC é de fato um SoC. Talvez pequeno, mas é. E o arduino? Provavelmente o uC "pode" ser um SoC se estiver em um único chip, mas não precisa (estou usando fortemente o arduino como exemplo aqui).

  • Portanto, o arduino é um uC, se eu pegar todos os seus componentes e os colocar em outra placa e adicionar XBEE à mistura, por exemplo. Ainda é um uC, certo? Então, quando dizemos que agora é um SoC? Somente quando as mesmas coisas são colocadas em um único chip em vez de coletadas em um tabuleiro?

Até agora, acho que as perguntas acima respondem de alguma forma, mas quero confirmar para poder seguir em frente. Quando tento pensar "fundamentalmente", chip ou placa "podem" ser iguais, são apenas fios conectando os diferentes componentes. e, neste ponto, o que você define um componente? É um único transistor ou um circuito como um ADC? Mas eu não quero ir lá.

A próxima pergunta é sobre o que realmente é este post:

  • Um uC é essencialmente um SoC? Um caso especial de um SoC que tem como um de seus requisitos que todo o sistema seja para uso geral.
  • O uC é de uso geral (de acordo com a internet) e o DSP é principalmente para processar matematicamente os sinais coletados do mundo real. Mas o DSP ainda é um "processador" e um uC contém um "processador". Posso apenas colocar um DSP com um monte ou periféricos (digamos ADC e DAC, pois esses são geralmente usados ​​com ele) e chamar o mix de uC? ou é um SoC (já que agora o mix não é de uso geral e, portanto, não podemos chamá-lo de uC, mas ainda é um SoC)

Realmente não importa como você chama isso, 'uma rosa com qualquer outro nome cheiraria tão doce!' SoC é um termo de vendas: 'outras pessoas vendem as peças, mas nós vendemos todo o sistema' é o que isso implica. O uC geralmente é como uma memória uP +, e geralmente ADCs. Um DSP é otimizado para, você acreditaria, DSP, e invariavelmente tem um multiplicador de hardware, mas atualmente, atualmente, a memória do programa e, às vezes, ADCs / DACs, quase um SoC. Mas, em grande parte, a maioria delas poderia ser descrita como as outras. Não se preocupe, certamente não bata nas pessoas por causa disso.
31516 Neil_UK

2
Eu sei que é amplamente conhecido o uso de você e não há nenhum problema real usando-o, mas se você quiser criar um µ, pressionar AltGr + Mou ⌘ + Mfazer o truque.
Magic Smoke

11
"micro" é bagagem histórica; O controlador "micro" vem do computador "micro", que se distingue dos computadores "mini" do tamanho de uma geladeira e dos computadores que ocupavam salas inteiras.
user253751

Respostas:


11

uC = um chip de processamento independente: CPU, RAM, ROM, alguns periféricos.

DSP = chip do processador (pode ser uma CPU separada, hoje em dia principalmente um uC) otimizada para processamento de sinal. Freqüentemente, possui MAC rápido (multiplicação acumulada), saturação de matemática e várias interfaces de memória. Para tirar o máximo proveito disso, muitas vezes você precisa estar profundamente ciente de suas peculiaridades, como que tipo de acesso à memória pode ser feito ao mesmo tempo. (Por isso, geralmente é usado com bibliotecas de montagem ajustadas fornecidas pelo fabricante.) Freqüentemente, não é necessário ser usado com grandes memórias (o barramento de endereço de 16 bits geralmente é suficiente).

SOC = chip do processador (principalmente uma CPU, talvez com alguma RAM para armazenamento em cache) que incorpora periféricos que costumavam estar fora do chip do processador principal. Este é, por definição, um alvo em movimento: as funções dos SOCs atuais de hoje podem ser encontradas nos chips principais de amanhã. Os SOCs atuais destinam-se principalmente à execução de um sistema operacional no nível Linux e contêm a maioria das coisas necessárias para esse sistema, exceto a RAM e a ROM (embora algumas ROM sejam frequentemente incluídas, geralmente para a leitura de um FLASH externo).

Exemplos de periféricos comuns nos SOCs de hoje (mas estão chegando aos uCs!): Portas Ethernet, comutação Ethernet, USB incl. host e OTG, mecanismo (s) gráfico (s), decodificação MPEG, mecanismo de criptografia, interfaces RAM e FLASH.

Um Arduino é um produto no nível da placa, por definição, não é um uC, DSP ou SOC, embora possa conter um. O Uno básico contém um uC.

Um uC não é um SOC (embora possa haver casos limítrofes): um uC é independente e (no nível atual da tecnologia) não se destina a executar sistemas operacionais no nível Linux. Um SOC não é autônomo (precisa de RAM e ROM).

Os limites não são 100% iguais e estão mudando ao longo do tempo. As interfaces de CPU e de memória da maioria das CPUs atuais superam facilmente os DSPs de ontem, mesmo em seu território. Hoje, porém, os DSPs são mais rápidos e / ou mais baratos ou menos consumidores de energia do que as CPUs de uso geral quando processam o sinal. É uma corrida entre os fabricantes para fazer o chip mais atraente usando o mais recente estado de tecnologia e demanda. No momento, isso levou aos três pontos positivos acima (mais microprocessadores de uso geral), mas isso mudará ao longo do tempo (os DSPs são menos populares do que há 10 anos atrás, na IMO, porque a taxa de transferência no nível de áudio agora é facilmente alcançada por um CPU de uso geral).

Um tipo específico de chip que está se tornando mais comum atualmente é o uC (ou SOC) com alguma interface sem fio. Verifique o ESP8266 e o ​​ESP32 para obter exemplos de WiFi e o RN2483 para o LoraWan.


2

O uC e os DSPs têm uma definição bastante direta.

Um uC é um núcleo de processamento que possui a memória (volátil e não volátil) integrada internamente. Isso comparado a um microprocessador que geralmente possui alguma memória volátil no interior, mas não é volátil.

Um DSP é uma derivação de um uC. Os DSPs geralmente têm recursos de amostragem analógica realmente bons do que um uC típico. Os DSPs também têm melhores recursos matemáticos que o uC e vêm com muitas bibliotecas, como FFT ou autocorrelação, para utilizar esses recursos matemáticos.

SoC é mais um termo de marketing. SoC é um termo que eles tentam usar quando um uC obtém funcionalidade suficiente para criar uma solução de chip único ou quase único. O termo SoC tende a ser encontrado quando o uC integra processamento gráfico e drivers gráficos a bordo. Pense nos chips ARM nos telefones celulares. Eles incorporam os gráficos.


Então você está dizendo que um DSP também contém um ADC, por exemplo?
himura

@himura O uC tem ADCs, mas os DSPs têm realmente bons ADCs. Por exemplo, o Arduino é capaz de obter uma taxa de amostragem de até 10kHz em 10 bits. O dsPIC33, que é um DSP, é capaz de taxa de amostragem de 1,1 MHz em 10 bits. São duas ordens de magnitude mais rápidas.
Vini_i 29/10/16

Eu pensei que DSP é apenas a unidade de processamento sem nenhum recurso ADC. Mas parece mais um sistema completo agora. Obrigado
himura

11
Eu acho que esta resposta está errada. Existem muitos chips DSP que não possuem conversores. A principal diferença entre um DSP e uma CPU de uso geral é a arquitetura da memória. Os DSPs têm várias memórias que podem ser acessadas em paralelo. Veja en.wikipedia.org/wiki/Harvard_architecture
Hilmar

@ Hilmar, você pode fornecer algumas referências de DSPs sem conversores? Eu gosto deste ponto
himura 29/10

0

O que chamamos de SOC geralmente tem um núcleo de processador muito mais poderoso do que o uC. Geralmente você pode encontrar o núcleo do ARM lá. Quase todos os "grandes" processadores ARM, como a série Cortex A, produzidos hoje são realmente SOCs. Para rodar sistemas operacionais grandes como o Linux, você precisa de muita memória RAM, para que os SOCs tenham um controlador de memória externa compatível com os modernos chips SDRAM. Pequena quantidade de RAM estática incorporada usada apenas na fase de inicialização para executar o carregador de inicialização e inicializar periféricos e controlador SDRAM.

Os uCs geralmente são soluções completas completas com RAM estática incorporada (quantidade bastante pequena). RAM pequena e falta de MMU evitam o uso de grandes sistemas operacionais. Hoje, a maioria dos uCs possui núcleo de 8 ou 32 bits. UCs de 16 bits usados ​​apenas em aplicativos herdados. A era do uSc de 32 bits começou com os núcleos da série ARM M. Esses núcleos são projetados especialmente para uCs e têm muito pouco em comum com os grandes ARMs, exceto o conjunto de instruções (o ARM M usa as instruções THUMB, um subconjunto do conjunto de instruções do ARM).

O termo DSP trata da arquitetura principal. Os DSPs possuem mais de uma ALU e denominam conjuntos de instruções VLIW (palavra de instrução muito longa). A instrução VLIW é composta por várias sub-instruções (cerca de 4) direcionadas a diferentes subsistemas de CPU. Por exemplo, uma instrução tão longa pode conter uma instrução para buscar previamente dados da memória, uma instrução de multiplicação para ALU multiplicadora especializada e uma instrução aritmética para ALU de uso geral.

Você pode usar o DSP como uC de uso geral, mas o objetivo principal é o processamento de dados digitais (não apenas sinais, mas também vídeo). Filtros digitais, algoritmos de compactação / descompactação de mídia se beneficiam da arquitetura paralela DSP.

Os núcleos modernos da CPU geralmente têm uma espécie de "extensões DSP" na forma de instruções vetoriais (você pode executar a mesma operação aritmética em vários, cerca de 8, operantes). É algo diferente das instruções DSPs VLIW.


"Quase todos os processadores ARM produzidos hoje são realmente SOCs", sério? você considera chips Cortex-M0 como os SOCs LPC810 ??
Wouter van Ooijen 29/10

Eu mencionei a série Cortex M separadamente enquanto falava sobre UCs. O córtex M são uCs obviamente.
e_asphyx
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.