Forum: Mikrocontroller und Digitale Elektronik Wieviel mehr an Strom braucht man für 64 Bit fähige Mikrocontroller?


von Nano (Gast)


Lesenswert?

gegenüber solchen mit 8, 16 oder 32 Bit?
Bzw. von wie vielen mA sprechen wir hier?

Wie stark macht sich die Bitbreite beim Stromverbrauch bemerkbar
und könnte man auch sparsame 64 Bit Mikrocontroller bauen, die sich für 
Kleinstaufgaben eignen, wie sie auch von einem MSP430 (16 Bit) oder 
PICmicro (8 Bit) oder ATtiny (8 Bit) erfüllt werden?

Grund meiner Frage bezieht sich insbesondere auf so Meldungen wie diese 
hier:
https://www.heise.de/developer/meldung/Rust-faehrt-die-Unterstuetzung-fuer-32-Bit-Apple-Plattformen-zurueck-4628635.html

Wenn man Programmierfehler, wie sie in C möglich sind, vermeiden möchte, 
wären Sprachen wie Rust hilfreich. Wenn die Entwickler dieser Sprache 
aber nicht einmal die Unterstützung von 32 Bit CPUs einplanen, dann 
bliebe im Mikrocontrollerbereich nur noch ein Verzicht auf diese Sprache 
oder eine Vergrößerung der Bitbreite bei Mikrocontrollern übrig.
Insofern stellt sich die Frage, ob eine Vergrößerung der Bitbreite bei 
akzeptablem Mehrverbrauch an Strom machbar ist.

Texas Instrument gibt bspw. für ihren 16 Bit breiten MPS430 einen 
Stromvebrauch von 100 uA/​MHz unter Last bzw. aktiv an.
Würde man so einen µC auf 64 Bit auslegen, würde der Stromverbrauch dann 
linear, quadratisch oder gar logarithmisch ansteigen?

von c-hater (Gast)


Lesenswert?

Nano schrieb:

> wären Sprachen wie Rust hilfreich. Wenn die Entwickler dieser Sprache
> aber nicht einmal die Unterstützung von 32 Bit CPUs einplanen, dann
> bliebe im Mikrocontrollerbereich nur noch ein Verzicht auf diese Sprache
> oder eine Vergrößerung der Bitbreite bei Mikrocontrollern übrig.

Na, da fällt die Wahl dann doch echt leicht ;o)

von Yalu X. (yalu) (Moderator)


Lesenswert?

Nano schrieb:
> Wenn die Entwickler dieser Sprache aber nicht einmal die Unterstützung
> von 32 Bit CPUs einplanen,

Das steht nirgends geschrieben. Es ist ausdrücklich die Rede von
32-Bit-APPLE-Plattformen. Und auch diese werden nach wie vor
unterstützt, nur eben nicht mehr in gleichem Umfang wie bspw.
32-Bit-x86-Linux und -Windows.

: Bearbeitet durch Moderator
von Jan B. (do9jhb)


Lesenswert?

Yalu X. schrieb:
> Das steht nirgends geschrieben. Es ist ausdrücklich die Rede von
> 32-Bit-APPLE-Plattformen. Und auch diese werden nach wie vor
> unterstützt, nur eben nicht mehr in gleichem Umfang wie bspw.
> 32-Bit-Linux und -Windows.

Genau und das liegt hauptsächlich an Apple, weil sich auf neuen MacOS 
Versionen weder 32-bit Programme ausführe n noch mit XCode bauen 
lassen...

von Nano (Gast)


Lesenswert?

Yalu X. schrieb:

> Das steht nirgends geschrieben. Es ist ausdrücklich die Rede von
> 32-Bit-APPLE-Plattformen.

Ja, der Grund ist allerdings sicherlich nicht Apple, sondern die 
Einschränkungen durch 32 Bit.
D.h. die anderen Plattformen werden folgen, wenn der Markt nur klein 
genug dafür geworden ist.

von Olaf (Gast)


Lesenswert?

> gegenüber solchen mit 8, 16 oder 32 Bit?
> Bzw. von wie vielen mA sprechen wir hier?

Da gibt es keinerlei Zusammenhang. Der Stromverbrauch haengt stark von 
der Faehigkeit der Hardware ab, der Faehigkeit der Entwickler und der 
Aufgabe die damit geloest werden soll. Stark vereinfachend kann man aber 
sagen das moderne 32Bit Controller weniger Strom brauchen weil man bei 
deren Entwicklung staerker auf Stromsparen geachtet hat. Das geht sogar 
soweit das Renesas jetzt mit den SOTBs einen komplett neuen Prozess 
vorgestellt hat.

> Wenn man Programmierfehler, wie sie in C möglich sind, vermeiden möchte,

Naja, man kann Programmierfehler effizienter vermeiden wenn der 
Entwickler faehiger ist.

> wären Sprachen wie Rust hilfreich. Wenn die Entwickler dieser Sprache
> aber nicht einmal die Unterstützung von 32 Bit CPUs einplanen, dann
> bliebe im Mikrocontrollerbereich nur noch ein Verzicht auf diese Sprache

Es ist fuer eine Sprache vollkommen irrelevant wieviel Bit der 
Zielprozessor hat. Das interessiert allein den Compilerbauer und der 
koennte den Compiler vermutlich fuer so ziemlich jeden Prozessor bauen 
wenn er nur Bock drauf hat.

> Texas Instrument gibt bspw. für ihren 16 Bit breiten MPS430 einen
> Stromvebrauch von 100 uA/​MHz unter Last bzw. aktiv an.

Wenn ich das richtig im Kopf habe dann liegen die aktuellen SOTBs bei 
30uA/Mhz und sind 32Bit. Den Zusammenhang den du zu sehen glaubst denn 
gibt es so nicht.

Olaf

von (prx) A. K. (prx)


Lesenswert?

Nano schrieb:
> Ja, der Grund ist allerdings sicherlich nicht Apple, sondern die
> Einschränkungen durch 32 Bit.

Da die Frage im Kontext von ATtiny und MSP430 steht: Worin bestehen bei 
Mikrocontrollern dieser Anwendungsklasse die Einschränkungen durch 32 
Bits gegenüber 64 Bits?

: Bearbeitet durch User
von Nano (Gast)


Lesenswert?

Olaf schrieb:
>> Wenn man Programmierfehler, wie sie in C möglich sind, vermeiden möchte,
>
> Naja, man kann Programmierfehler effizienter vermeiden wenn der
> Entwickler faehiger ist.

Das ist weder eine gute Argumentation noch eine gute Basis.
Irgendwo habe ich mal einen Vortrag gesehen, wo genau diese 
Argumentation zerstört wurde, ich finde sie allerdings gerade nicht.
Im Kern geht es aber darum, dass selbst gestandene Projekte, die 
herausragende Entwickler haben, sich solche durch die Programmiersprache 
bedingte vermeidbare Fehler einschleichen, weil Entwickler eben auch 
Menschen sind und auch nicht in jedem Augenblick absolut fit sind.

Man kann also ledig sagen, dass fähigere Entwickler weniger Fehler 
machen als Anfänger, aber Fehler machen die auch und sie machen sie 
selbst aufgrund ihrer Erfahrung trotzdem.


>> wären Sprachen wie Rust hilfreich. Wenn die Entwickler dieser Sprache
>> aber nicht einmal die Unterstützung von 32 Bit CPUs einplanen, dann
>> bliebe im Mikrocontrollerbereich nur noch ein Verzicht auf diese Sprache
>
> Es ist fuer eine Sprache vollkommen irrelevant wieviel Bit der
> Zielprozessor hat. Das interessiert allein den Compilerbauer und der
> koennte den Compiler vermutlich fuer so ziemlich jeden Prozessor bauen
> wenn er nur Bock drauf hat.

Der offizielle Rust Compiler verwendet sogar LLVM bzw. baut darauf auf 
und trotzdem scheint man diese 32 Bit Apple CPUs nicht mehr unterstützen 
zu wollen.


>> Texas Instrument gibt bspw. für ihren 16 Bit breiten MPS430 einen
>> Stromvebrauch von 100 uA/​MHz unter Last bzw. aktiv an.
>
> Wenn ich das richtig im Kopf habe dann liegen die aktuellen SOTBs bei
> 30uA/Mhz und sind 32Bit.

Interessante Technik, kannte ich noch nicht.

> Den Zusammenhang den du zu sehen glaubst denn
> gibt es so nicht.
>
> Olaf

Ich hoffe mal du hast recht. Es wäre echt schade, wenn man Rust nicht 
auf 8 oder 16 Bit µC zukunftsfähig einsetzen könnte.

von Nano (Gast)


Lesenswert?

A. K. schrieb:
> Nano schrieb:
>> Ja, der Grund ist allerdings sicherlich nicht Apple, sondern die
>> Einschränkungen durch 32 Bit.
>
> Da die Frage im Kontext von ATtiny und MSP430 steht: Worin bestehen bei
> Mikrocontrollern dieser Anwendungsklasse die Einschränkungen durch 32
> Bits gegenüber 64 Bits?

Vielleicht breitere Register, die man für den Compiler haben will?

von Programmierer (Gast)


Lesenswert?

Olaf schrieb:
> Es ist fuer eine Sprache vollkommen irrelevant wieviel Bit der
> Zielprozessor hat

Es ist sehr wohl relevant, ob alle Daten + Code in einen linearen 
Adressraum passen oder nicht. Der AVR-GCC muss ja diverse Verrenkungen 
machen um die getrennten Flash/RAM Bereiche zu verwalten (__flash und 
so). Bei einem Zeiger muss man immer wissen, wozu er gehört, weshalb man 
von Standard C Funktionen mehrere Varianten braucht. Bei 32bit (z.B. 
ARM) passt alles in einen linearen Adressraum, und man kann alles 
einheitlich adressieren (passt viel besser zu C). Für Mikrocontroller 
reichen die 32bit weitgehend aus, weshalb es nicht so viel Bedarf für 
64bit gibt.
16bit sind schon wenig, selbst AVRs haben teilweise mehr Speicher als 
64kB und müssen mit Bankswitching arbeiten (Krücke - verkompliziert 
Compiler und C-Programmierung). 24bit reicht für 16 MB, was zwar für 
vieles reichen würde aber als nicht-2er-Potenz einfach komisch ist...

Für 64bit-uC könnte man die ALU und den Bus so bauen, dass 64bit 
Operationen als 2 sequentielle 32bit Operationen gemacht werden. So 
würde man weniger Gatter und weniger Strom brauchen, aber die 64bit 
Operationen werden natürlich langsamer - was nicht ganz so schlimm ist 
wenn man davon nicht so viele braucht.

von Frank K. (fchk)


Lesenswert?

Nano schrieb:
> Yalu X. schrieb:
>
>> Das steht nirgends geschrieben. Es ist ausdrücklich die Rede von
>> 32-Bit-APPLE-Plattformen.
>
> Ja, der Grund ist allerdings sicherlich nicht Apple, sondern die
> Einschränkungen durch 32 Bit.

Sowohl amd64 als auch AArch64 aka arm64 aka avrmv8 haben nicht nur 
breitere Register, sondern auch mehr davon sowie weitere 
Architekturverbesserungen, und allein das hilft den Compilern, 
effizienteren Code zu erzeugen. Das war auch bei IOS die treibende 
Kraft, auf 64 Bit zu gehen. Rein vom Adressraum her wäre es da zumindest 
bis jetzt nicht unbedingt nötig gewesen, selbst das iPhone 11 hat nur 
4GB RAM.

Das Streichen der 32 Bit Untersützung hat bei Apple vor allem das Ziel 
gehabt, alte APIs nicht mehr pflegen zu müssen (nicht alles wirde auf 64 
Bit migriert, vor allem bei Carbon nicht) und zu vermeiden, dass Libs 
doppelt im Speicher liegen (als 32 und 64 Bit Version).

fchk

von (prx) A. K. (prx)


Lesenswert?

Nano schrieb:
> Vielleicht breitere Register, die man für den Compiler haben will?

Immer noch: Wozu soll das gut sein?

Die meisten Daten auf 64-Bittern sind 32 Bits breit, weil das LLP64- 
oder LP64-Modell genutzt wird, bei den Ints 32 Bits breit sind. 
Lediglich die Pointer sind routinemässig 64 Bit breit, was aber 
unterhalb einiger GB Adressraum absolut nichts bringt.

Willst du den Compiler auf einem 64-Bit ATtiny laufen lassen? Oder 
willst du dem als Ersatz eines NE555 programmierten ATtiny eine 64 Bit 
Datenverarbeitung zukommen lassen?

von c-hater (Gast)


Lesenswert?

Programmierer schrieb:

> Es ist sehr wohl relevant, ob alle Daten + Code in einen linearen
> Adressraum passen oder nicht. Der AVR-GCC muss ja diverse Verrenkungen
> machen um die getrennten Flash/RAM Bereiche zu verwalten (__flash und
> so).

Das ist so. Hat aber absolut nix mit der "Bittigkeit" des Controllers zu 
tun.

Sonst könnten 8Bit-Controller nämlich nur 256Byte adressieren, 
16Bit-Controller nur 64kB usw...

Relevant ist vielmehr erstens die Breite von Indexregistern, denn das 
ist, worüber Hochsprachen ihr Konzept von Zeigern oder Referenzen 
umsetzen.

Und zweitens, ob es überhaupt einen einheitlichen Addressraum für alle 
Arten von "Speicher" gibt. Das ist bei praktisch keinem µC und bei 
praktisch keiner CPU der Fall. Weil es eben oft einen Sinn ergibt, die 
Adressräume unterschiedlicher "Speicher"arten getrennt zu halten.

Wenn die Speichermodelle von Hochsprachen ein Problem damit haben, ist 
nicht die Hardware schuld, sondern das unvollkommene Sprachkonzept der 
Hochsprachen. So einfach ist das.

von (prx) A. K. (prx)


Lesenswert?

Programmierer schrieb:
> 16bit sind schon wenig, selbst AVRs haben teilweise mehr Speicher als
> 64kB und müssen mit Bankswitching arbeiten

Und TI hat die sehr elegante MSP430 Architektur zu MSP430X vergewaltigt. 
Wobei das in der Dimension ATtiny nicht wirklich unter den Nägeln 
brennt.

Will man alle µC-Aufgaben mit einer Architektur angehen, egal ob 
Treppenhauslicht oder Heimautomation, nimmt man 32-Bit ARM und die Sache 
hat sich. Ein Motiv für 64 Bits sehe ich nicht.

von Alex D. (daum)


Lesenswert?

Programmierer schrieb:
> Olaf schrieb:
>> Es ist fuer eine Sprache vollkommen irrelevant wieviel Bit der
>> Zielprozessor hat
>
> Es ist sehr wohl relevant, ob alle Daten + Code in einen linearen
> Adressraum passen oder nicht. Der AVR-GCC muss ja diverse Verrenkungen
> machen um die getrennten Flash/RAM Bereiche zu verwalten (__flash und
> so). Bei einem Zeiger muss man immer wissen, wozu er gehört, weshalb man
> von Standard C Funktionen mehrere Varianten braucht. Bei 32bit (z.B.
> ARM) passt alles in einen linearen Adressraum, und man kann alles
> einheitlich adressieren (passt viel besser zu C). Für Mikrocontroller
> reichen die 32bit weitgehend aus, weshalb es nicht so viel Bedarf für
> 64bit gibt.

Naja, nur weil der Mikrocontroller einen 8bit Kern hat, heißt das nicht, 
dass er nur 8bit Adressen hat. Die STM8 Controller z.B. haben einen 
linearen Adressraum und dafür 3 Addressierungsmodi (short mem mit 8bit, 
long mem mit 16bit und extended mem mit 24bit Adressen).

Aber ein 32bit Kern hat noch mehr Vorteile, es ist beispielsweise recht 
aufwendig eine Multiplikation von breiteren Datentypen durchzuführen. 
Eine 16bit*16bit -> 32bit Multiplikation ist bei jeder 8bit Architektur 
deutlich aufwendiger als 8bit*8bit, bei 32 bit Architekturen aber 
trivial in meist 1-2 Zyklen machbar.

von Alex D. (daum)


Lesenswert?

c-hater schrieb:
> Und zweitens, ob es überhaupt einen einheitlichen Addressraum für alle
> Arten von "Speicher" gibt. Das ist bei praktisch keinem µC und bei
> praktisch keiner CPU der Fall. Weil es eben oft einen Sinn ergibt, die
> Adressräume unterschiedlicher "Speicher"arten getrennt zu halten.

Doch, viele Mikrocontroller haben einen linearen Adressraum in dem 
Flash, RAM und Peripherieregister enthalten sind. Dadurch können 
Konstanten im Flash gespeichert werden, und trotzdem funktioniert ein 
Zugriff darauf genau gleich, es kann also ein normaler Pointer verwendet 
werden, um diese zu Adressieren.

von Olaf (Gast)


Lesenswert?

> Der offizielle Rust Compiler verwendet sogar LLVM bzw. baut darauf auf
> und trotzdem scheint man diese 32 Bit Apple CPUs nicht mehr unterstützen
> zu wollen.

Das ist dann aber wohl eine Frage von Politik und Resourcen und nicht 
von der Technik.

> Ich hoffe mal du hast recht. Es wäre echt schade, wenn man Rust nicht
> auf 8 oder 16 Bit µC zukunftsfähig einsetzen könnte.

Du kannst die Sprache bei Microcontroller nicht zukunftsfaehig einsetzen 
weil dort seit >20Jahren C das Mass der Dinge ist. Du hast jede Menge 
alten Source in C und du hast jede Menge Entwickler die nur C koennen. 
Und jeder neue coole Rustentwickler muss auch C koennen weil er sonst 
mit den altlasten nicht klarkommt. Und wenn er nun schon mal C kann, 
dann kann man auch gleich bei C bleiben da er ja noch fuenf 
Arbeitskollegen im Projekt hat die nur C koennen. Das ist dann ein 
Henne/Ei Problem.

> Es ist sehr wohl relevant, ob alle Daten + Code in einen linearen
> Adressraum passen oder nicht.

Das ist dann allein ein Aergernis fuer den Compilerbauer. Als Entwickler 
der den Controller programmiert merkst du das doch gar nicht.

Fuer maximale Energieeffizienz ist es viel wichtiger ob ein spezieller 
Controller zu deiner Anwendung passt oder nicht.

> 16bit sind schon wenig, selbst AVRs haben teilweise mehr Speicher als
> 64kB und müssen mit Bankswitching arbeiten (Krücke - verkompliziert

Ich hab jahrelang die M16C programmiert. Die laufen Kreise um die AVRs. 
Hat aber deutsche Entwickler nie interessiert. Die essen nur ihre 
gewohnte Currywurst. .-)

Oder ein anderes interessantes Detail. Ein SH2A hat 16Registerbaenke. 
Der ist schneller in einem IRQ und wieder draussen als so oller AVR 
braucht um nur seine Daten auf den Stack zu schaufeln. Bei Anwendungen 
mit hoher IRQ-Last sicher ein wichtiges Kriterium oder? Solange man nur 
eine LED blinken laesst vollkommen egal.

Oder moderne Controller die es erlauben das interne Ram in Segmenten 
abzuschalten. Spart Strom wenn man es nutzen kann, spart nix wenn man 
das ganze Ram immer braucht.

Manche Controller (Silabs/Gecko) haben auch die Faehigkeit den internen 
RC Oszilator zu kalibrieren. Dann brauchst du den externen Quarz nur 
noch manchmal. Spart auch Strom wenn man das nutzen kann.

Wenn du unter 100uA mittlere Stromaufnahme angekommen bist dann haengt 
es wirklich sehr davon ab wie der aktuelle Prozessor zu deiner Anwendung 
passt. Und auch wieviel Zeit die Entwickler in die Optimierung stecken 
duerfen.

Olaf

von (prx) A. K. (prx)


Lesenswert?

Alex D. schrieb:
> Aber ein 32bit Kern hat noch mehr Vorteile, es ist beispielsweise recht
> aufwendig eine Multiplikation von breiteren Datentypen durchzuführen.

Es gibt in jeder Grösse gelegentlich den Wunsch, es noch grösser zu 
machen. Und umgekehrt, Unnötiges wegzulassen. Bei ARM7 war der 
kombinatorische Multiplizierer optional (das zweite M in ARM7TDMI), weil 
er Platz brauchte. Im Kleinstbereich wie dem ATtiny4 lässt man den 
halben Registersatz weg, damit der Chip bei der für diese Chips üblichen 
alten Fertigungstechnik ins SOT23 Gehäuse passt.

von Stefan F. (Gast)


Lesenswert?

A. K. schrieb:
> Worin bestehen bei Mikrocontrollern dieser Anwendungsklasse
> die Einschränkungen durch 32 Bits gegenüber 64 Bits?

Sie können nur maximal 4 GB RAM adressieren.

SCNR

von c-hater (Gast)


Lesenswert?

Alex D. schrieb:

> Doch, viele Mikrocontroller haben einen linearen Adressraum in dem
> Flash, RAM und Peripherieregister enthalten sind.

Viele? Mach' bitte mal eine Liste. Und dann mach eine Liste von all 
denen, bei denen das nicht der Fall ist.

Nur, damit du mal ein Gefühl für die tatsächlichen Relationen 
bekommst...

von Alex D. (daum)


Lesenswert?

A. K. schrieb:
> Alex D. schrieb:
>> Aber ein 32bit Kern hat noch mehr Vorteile, es ist beispielsweise recht
>> aufwendig eine Multiplikation von breiteren Datentypen durchzuführen.
>
> Es gibt in jeder Grösse gelegentlich den Wunsch, es noch grösser zu
> machen. Und umgekehrt, Unnötiges wegzulassen. Bei ARM7 war der
> kombinatorische Multiplizierer optional (das zweite M in ARM7TDMI), weil
> er Platz brauchte. Im Kleinstbereich wie dem ATtiny4 lässt man den
> halben Registersatz weg, damit der Chip bei der für diese Chips üblichen
> alten Fertigungstechnik ins SOT23 Gehäuse passt.

Bei ARM Cortex-M0 hat der Hersteller auch die Wahl, ob er einen 32 Cycle 
Multiplier oder einen 1 Cycle Multiplier einbaut, aber ich habe noch 
keinen ARM Cortex M Controller ohne 1 Cycle Multiplier gesehen. Der Kern 
selbst braucht bei einem solchen Mikrocontroller ja nicht den Großteil 
des DIEs, RAM + Flash + Peripherie ist deutlich größer (Laut ARM hat ein 
Cortex-M0 bei 180nm Fertigung ca 0,11mm², allerdings ist das die 
Minimalversion).

von (prx) A. K. (prx)


Lesenswert?

Olaf schrieb:
> Ich hab jahrelang die M16C programmiert.

Als Ziel für C Compiler ist diese Architektur aber auch eher mau. Wenn 
man darauf Wert legt.

> Die laufen Kreise um die AVRs.

Schneller und grösser als für die Anwendung schnell und gross genug hat 
keinen Nährwert. Mikrocontroller unterliegen deshalb anderen 
wirtschaftlichen Regeln als PC-Prozessoren.

Ein Motiv kann Vereinheitlichung der Entwicklung sein. Hauptsächlich 
deshalb gibts die kleinen Cortexe, die mit den 8/16-Bittern 
konkurrieren. Nicht weil man dafür unbedingt 32 Bits braucht.

Aber wo ist das Motiv für 64 Bits? Damit man mit einem Apple-PCs einen 
Mikrocontroller ersetzen kann?

: Bearbeitet durch User
von Alex D. (daum)


Lesenswert?

c-hater schrieb:
> Alex D. schrieb:
>
>> Doch, viele Mikrocontroller haben einen linearen Adressraum in dem
>> Flash, RAM und Peripherieregister enthalten sind.
>
> Viele? Mach' bitte mal eine Liste. Und dann mach eine Liste von all
> denen, bei denen das nicht der Fall ist.
>
> Nur, damit du mal ein Gefühl für die tatsächlichen Relationen
> bekommst...

Mit linearem Adressraum:
    - Alle ARM Cortex M Controller
    - PIC32
    - MSP430 (soweit ich gefunden hab, noch nie was damit gemacht)
    - STM8
Mit getrenntem Adressraum:
    - AVR
    - wahrscheinlich noch einige, besonders ältere Architekturen

von (prx) A. K. (prx)


Lesenswert?

Komisch, dass noch niemand die eine Mikrocontroller-Architektur aller 
Mikrocontroller erwähnt hat: 8051. Besonders unter Berücksichtigung der 
Qualitäten, wie genug Adressräume für jeden und umständliche 
Adressierung von allem jenseits von 128 Bytes RAM. Trotzdem gibts den 
weiterhin massenhaft.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

MSP430 ist die Reinkarnation der 8051 Serie.

von m.n. (Gast)


Lesenswert?

A. K. schrieb:
> Komisch, dass noch niemand die eine Mikrocontroller-Architektur aller
> Mikrocontroller erwähnt hat: 8051.

Genau der fehlte in der Liste wie auch die ganzen Intel-Infineon 
Nachfolger
251, 80C16x und was alles so entfernt mit x86 zu tun hat:

Alex D. schrieb:
> Mit getrenntem Adressraum:
>     - AVR
>     - wahrscheinlich noch einige, besonders ältere Architekturen

Lustig auch, daß beim 8051 nur ein minimaler Stack vorhanden ist, der 
aber erstaunlicherweise immer ausgereicht hat. Der Keil-Compiler war 
sehr geschickt in der Optimierung.

von (prx) A. K. (prx)


Lesenswert?

m.n. schrieb:
> Der Keil-Compiler war sehr geschickt in der Optimierung.

Keil gebührt Respekt dafür, einer Architektur leidlich effizientes C 
nahe gebracht zu haben, die dafür denkbar ungeeignet ist.

Aber nachdem es immerhin eine 32 Bit Z80 gibt: Wärs nicht an der Zeit, 
im Sinne des Threads einen 64 Bit 8051 zu definieren?

: Bearbeitet durch User
von Carl D. (jcw2)


Lesenswert?

Stefan ⛄ F. schrieb:
> MSP430 ist die Reinkarnation der 8051 Serie.

Vergleich mal das Programmiermodell des MSP430 mit dem der PDP11.
Besonders im Bezug auf Adressierungsarten und deren Verwendbarkeit.

von MaWin (Gast)


Lesenswert?

Nano schrieb:
> Wie stark macht sich die Bitbreite beim Stromverbrauch bemerkbar

Siehe
"Freescale erlaubt gerade mit dem Flexis QE128 auch den direkten 
Vergleich von 8 bit CPU zu 32 bit CPU bei ansonsten gleichen 
Bedingungen, 8 Bit $3,59/10k 11mA, 32 Bit $3,80/10k 27mA. Der 8 Bit hat 
natürlich bessere Codedichte und es gibt ihn auch optional in kleinerem 
Gehäuse (wohl wegen kleinerer Chipfläche)."

aus www.dse-faq.elektronik-kompendium.de/dse-faq.htm

von Wolfgang (Gast)


Lesenswert?

Nano schrieb:
> Wie stark macht sich die Bitbreite beim Stromverbrauch bemerkbar

Das kommt u.a. auf die Größe der Strukturen auf dem Chip an.
Der dynamische Stromerbrauch ist wegen umzuladender Kapazitäten 
proportional zur Taktfrequenz.

von Bestes Mann, wo gibt (Gast)


Lesenswert?

Olaf schrieb:

> Ich hab jahrelang die M16C programmiert.

Das kenne ich: So lange dauert es bei mir auch oft, bis das Programm 
fehlerfrei ist.
:)

von Squierrel (Gast)


Lesenswert?

Ich hab da noch irgendwo eine Masterarbeit rumfliegen, welche sich mit 
Laufzeit eines Frameworks welches in verschiedenen Sprachen in 
verschiedenen Testzenarien bezüglich Laufzeit getestet wurde.

C++, C, RUST, PASCAL ...

Es ist ausgewertet worden wie lange die Implementierung gebraucht hat, 
wie viele BUGs im Code waren und die Laufzeit der Aufrufe.

RUST war wenn ich mich richtig erinnere Faktor 10000 langsamer als C. 
Hatte mehr Fehler und die Implementierung hat mehr Zeit in Anspruch 
genommen. Ich behaupte mal RUST kann nicht so schlecht sein, da müssen 
die Programmierer schon ihren Beitrag geleistet haben. Auch die C++ 
Ergebnisse waren sehr ernüchternd. Nach dem lesen hatte ich Verständnis 
dafür warum man sich bei der Linux-Kernel Entwicklung so gegen C++ 
wehrt. Da wurde ja mal von jemandem gessagt: C++ wäre das kleinere 
Problem, vor allem wolle man keine C++ Programmierer.

Ich kenne auch Implementierungen welche auf Cortex-R5 (600 MHz) und 
Cortex-A53 (1,2 GHz) laufen. Hier ist es so das ein "Softwaredurchlauf" 
auf dem R5 ca. 60% waren es glaube der Energie des A53 gebraucht hat. 
Allerdings braucht es > 3 R5 wenn man so schnell sein will wie der A53 
und wird Final beim Stromverbrauch auch schlechter dastehen 
(Synchronisierung usw. Qualcomm hatte da mal Zahlen, ich glaube die 
waren bei 64% der Leistung bei Octa Core gegenüber einem hypthetischen 
8x schnelleren Singelcore ... ist allerdings ja auch stark von 
Software/Problemstellung abhängig).

Den A53 sollten pro Befehl bezüglich Energieverbrauch nicht primär 64 
Bit zu schaffen machen, sondern vor allem dürften es wohl eher MMU, 
Sprungvorhersage, Stalls, Cache usw. sein.

Ich habe die letzen 24 Monate Primär in folgenden Sprachen programmiert: 
C++ > C > Assembler > Python > BAT/SHELL-Scripte

von Squierrel (Gast)


Lesenswert?

Olaf schrieb:
>> gegenüber solchen mit 8, 16 oder 32 Bit?
>> Bzw. von wie vielen mA sprechen wir hier?
>
> Da gibt es keinerlei Zusammenhang. Der Stromverbrauch haengt stark von
> der Faehigkeit der Hardware ab, der Faehigkeit der Entwickler und der
> Aufgabe die damit geloest werden soll. Stark vereinfachend kann man aber
> sagen das moderne 32Bit Controller weniger Strom brauchen weil man bei
> deren Entwicklung staerker auf Stromsparen geachtet hat. Das geht sogar
> soweit das Renesas jetzt mit den SOTBs einen komplett neuen Prozess
> vorgestellt hat.

Renesas ist bei den Halbleiterprozessen in bestimmten bereichen schon 
immer beeindruckend.
Allerdings wurde ihr schneller Flash, der schnelle Cortex-M3 wegen der 
vielen Stalls hinter RX-Cores zurückfallen ließ ja durch den  z.B. ART 
Accelerator™ von ST schnell belanglos.
Aber auch bezüglich Ausbeute sind die recht beeindruckend. Einige 
übernommene Firmen hatten ja nach Lehrstunden bezüglich der 
Halbleiterprozesse erschreckend bessere Ausbeuten. Mich hätte da ja 
schon mal interessiert was die da verändert haben jeweils ... an die 
Infos werde ich wohl aber niemals kommen :D

von Axel L. (axel_5)


Lesenswert?

Nano schrieb:
> gegenüber solchen mit 8, 16 oder 32 Bit?
> Bzw. von wie vielen mA sprechen wir hier?
>
> Wie stark macht sich die Bitbreite beim Stromverbrauch bemerkbar
> und könnte man auch sparsame 64 Bit Mikrocontroller bauen, die sich für
> Kleinstaufgaben eignen, wie sie auch von einem MSP430 (16 Bit) oder
> PICmicro (8 Bit) oder ATtiny (8 Bit) erfüllt werden?
>

Das hängt vor allem von der verwendeten Technologie ab. Eine 40nm 
Technologie ist wesentlich sparsamer als eine 180nm Technologie, hat 
aber in der Regel höhere Leckströme. Ausnahmen bestätigen die Regel.

Da die 8-Bitter in der Regel in 180nm oder 130nm gefertigt werden, 
während 32 Bitter eher in kleiner Strukturen gefertigt werden, sind die 
32-Bitter im Betrieb sparsamer, wobei man nicht vergessen darf, dass 
hier in der Regel auch die Frequenzen deutlich höher sind, was das 
wieder kompensiert. Dazu kommt aber, dass gerade Speicher relativ hohe 
Leckströme haben, so dass die größeren Speicher bei den 32-Bittern den 
Standby-Stromverbrauch hochtreiben. Und PLLs oder USB Schnittstellen, 
die bei den 32 Bittern häufiger sind, brauchen auch ordentlich Strom.

Die 64-Bitter sind dann eher in 65/40nm Strukturen und feiner unterwegs, 
was den Stromverbrauch weiter senkt. Aber auch hier gilt, dass das durch 
größere Speicher und höhere Frequenzen kompensiert wird.

Zum Teil hat man aber in den feineren Strukturen mitlerweile Massnahmen 
gegen die Leckströme implementiert, was die Situation wieder verbessert.

Ein 32-Bitter, den man mit 8 Mhz betreibt, dürfte daher sparsamer sein, 
als ein 8-Bitter bei 8 Mhz.

Gruß
Axel

von Alex D. (daum)


Lesenswert?

Axel L. schrieb:
> Da die 8-Bitter in der Regel in 180nm oder 130nm gefertigt werden,
> während 32 Bitter eher in kleiner Strukturen gefertigt werden, sind die
> 32-Bitter im Betrieb sparsamer, wobei man nicht vergessen darf, dass
> hier in der Regel auch die Frequenzen deutlich höher sind, was das
> wieder kompensiert. Dazu kommt aber, dass gerade Speicher relativ hohe
> Leckströme haben, so dass die größeren Speicher bei den 32-Bittern den
> Standby-Stromverbrauch hochtreiben. Und PLLs oder USB Schnittstellen,
> die bei den 32 Bittern häufiger sind, brauchen auch ordentlich Strom.

Bei den STM32 sind auf jeden Fall die F0 und F1 in 180nm gefertigt, G0, 
L0 und L4 soweit ich weiß in 90nm und H7 in 40nm.

Über die meisten 8-Bitter kann ich nichts sagen, allerdings ist 
zumindest der Attiny13A laut 
https://zeptobars.com/en/read/atmel-attiny13a in 500nm gefertigt, also 
gehe ich mal davon aus, dass die meisten AVR Controller in 500nm 
gefertigt sind.

von c-hater (Gast)


Lesenswert?

Axel L. schrieb:

> Ein 32-Bitter, den man mit 8 Mhz betreibt, dürfte daher sparsamer sein,
> als ein 8-Bitter bei 8 Mhz.

Das ist wahrscheinlich falsch.

Du bringst in deinen Darstellungen zwei Sachen durcheinander: die 
dynamische Stromaufnahme und die Leckströme.

Ersteres hängt wesentlich vom Takt ab, aber auch von den 
Gatekapazitäten. Bei gleichem Takt sind die im Vorteil, die die 
kleineren Gatekapazitäten haben, also die mit der geringeren 
Strukturgröße. Genau das ist nämlich der Grund, die Strukturgröße zu 
verringern: um einen höheren Takt erreichen zu können.

Blöderweise haben die geringeren Strukturgrößen gleichzeitig den 
Nachteil, die Leckströme zu erhöhen. Je geringer also der Takt ist, 
desto mehr sind die Dinger mit den großen Strukturen im Vorteil.

Für die Situation mit Takt=0 gibt es bei den schnellen Teilen zur Lösung 
des Leckstrom-Problems einen "einfachen" Trick: es wird nicht nur der 
Takt abgeschaltet, sondern auch die Stromversorgung. Aber schon dieser 
"einfache" Trick ist in Wirklichkeit recht komplex (und damit anfällig 
für Designfehler). Dazu kommt aber: er hilft nicht für kleinen Takt 
(aber größer 0). Da knallt der Leckstrom-Nachteil voll rein. Umso mehr, 
je geringer der Takt.

von MaWin (Gast)


Lesenswert?

Nano schrieb:
> enn die Entwickler dieser Sprache aber nicht einmal die Unterstützung
> von 32 Bit CPUs einplanen, dann bliebe im Mikrocontrollerbereich nur
> noch ein Verzicht auf diese Sprache oder eine Vergrößerung der Bitbreite
> bei Mikrocontrollern übrig

Nein, man kann auch auf 8 bit Controllern eine Sprache so 
implementieren, dass der Grunddatentyp und Adressbereich mit 64 bit 
beschrieben wird.
Ist natürlich eher resourcenfressender Overkill.
Aber Rust ist eh für Kinderprogrammierer, vergiss sie.

von c-hater (Gast)


Lesenswert?

MaWin schrieb:

> Nein, man kann auch auf 8 bit Controllern eine Sprache so
> implementieren, dass der Grunddatentyp und Adressbereich mit 64 bit
> beschrieben wird.

Ja, das wäre tatsächlich die Lösung.

> Ist natürlich eher resourcenfressender Overkill.

Das müsste nicht so sein. Schließlich hat die Sprache zur Designzeit 
bereits alle Informationen über die Speicherbereiche und ihre 
Eigenschaften. Der Teil wird ja in den gegenwärtigen Backends auch 
abgehandelt, die mit sowas umgehen müssen. Also sollte es nach den 
Gesetzen der Logik möglich sein, ein generelles Sprachmodell dafür zu 
schaffen, welches eine Behandlung ohne Ressourcenfrass zur Laufzeit 
ermöglicht.

Natürlich müsste man sich von der Idee einer universellen Verwendbarkeit 
von Pointern verabschieden. Aber komischerweise ist genau dies ja 
eigentlich ein Sprachziel, was mit erstaunlich viel Syntax-Bombast 
durchgesetzt wird. Da wäre ganz sicher auch noch Platz für 
"Speicherbereiche" gewesen. Wenn man beim Konzept nachgedacht hätte...

C ist Dreck!

von Programmierer (Gast)


Lesenswert?

Squierrel schrieb:
> Auch die C++ Ergebnisse waren sehr ernüchternd. Nach dem lesen hatte ich
> Verständnis dafür warum man sich bei der Linux-Kernel Entwicklung so
> gegen C++ wehrt. Da wurde ja mal von jemandem gessagt: C++ wäre das
> kleinere Problem, vor allem wolle man keine C++ Programmierer.

Ich hab eine Master Projekt Arbeit, die das Gegenteil beweist. Der 
"jemand" was übrigens Linus Torvalds, welcher seine Behauptungen durch 
den exzessiven Gebrauch von Schimpfworten "belegt".

Faktor 10000 ist heftig. Das bedeutet, Rust ist völlig witzlos und für 
Performance kritische Teile ungeeignet, obwohl es genau dafür intendiert 
ist - wie z.B. Browser, bei denen es auch verwendet wird. Komisch.

von Nano (Gast)


Lesenswert?

MaWin schrieb:
> Nano schrieb:
>> Wie stark macht sich die Bitbreite beim Stromverbrauch bemerkbar
>
> Siehe
> "Freescale erlaubt gerade mit dem Flexis QE128 auch den direkten
> Vergleich von 8 bit CPU zu 32 bit CPU bei ansonsten gleichen
> Bedingungen, 8 Bit $3,59/10k 11mA, 32 Bit $3,80/10k 27mA. Der 8 Bit hat
> natürlich bessere Codedichte und es gibt ihn auch optional in kleinerem
> Gehäuse (wohl wegen kleinerer Chipfläche)."
>
> aus www.dse-faq.elektronik-kompendium.de/dse-faq.htm

Danke, das sind doch mal Zahlen mit denen man einen Richtwert hat.

von Nano (Gast)


Lesenswert?

Squierrel schrieb:
> Ich hab da noch irgendwo eine Masterarbeit rumfliegen, welche sich mit
> Laufzeit eines Frameworks welches in verschiedenen Sprachen in
> verschiedenen Testzenarien bezüglich Laufzeit getestet wurde.
>
> C++, C, RUST, PASCAL ...
>
> Es ist ausgewertet worden wie lange die Implementierung gebraucht hat,
> wie viele BUGs im Code waren und die Laufzeit der Aufrufe.
>
> RUST war wenn ich mich richtig erinnere Faktor 10000 langsamer als C.

Von wann war die Masterarbeit?
Rust ist noch nicht so alt, das kann gut an fehlender Optimierung 
liegen.

Die neueren Benchmarks die ich bisher so gesehen habe, lassen Rust 
keineswegs so schlecht dastehen.


> Hatte mehr Fehler

Dann dürfte das ein noch recht unreifer Compiler gewesen sein, was dann 
aber auch nicht verwunderlich wäre.
Was für eine Version war das?

von Nano (Gast)


Lesenswert?

Axel L. schrieb:
> Da die 8-Bitter in der Regel in 180nm oder 130nm gefertigt werden,
> während 32 Bitter eher in kleiner Strukturen gefertigt werden, sind die
> 32-Bitter im Betrieb sparsamer, wobei man nicht vergessen darf, dass
> hier in der Regel auch die Frequenzen deutlich höher sind, was das
> wieder kompensiert.

Ich hätte jetzt gedacht, dass man zwar ältere FABs durchaus noch für 
weniger wichtige Chips nutzt, aber man die Fertigungsgröße auch bei den 
8 Bittern nachzieht.
Denn je kleiner die Strukturen, desto kleiner kann die Die Fläche sein 
und das senkt die Kosten.
Aus China gibt's z.B. Mikroprozessoren zu einem Preis von 3 Cent/Chip. 
Irgendwie muss das ja zu schaffen sein. Eine Verkleinerung der 
Strukturgröße wäre hier nahelegend.
Lohn- und Energiekosten spielen natürlich auch noch eine kleine Rolle, 
wobei sich China im Fall von letzterem gegenüber anderen Ländern wie 
z.B: Südkorea nicht mehr so groß unterscheidet und bezüglich Lohnkosten 
gehe ich mal davon aus, dass die modernen Fabriken sowieso 
hochautomatisiert sind.


> Dazu kommt aber, dass gerade Speicher relativ hohe
> Leckströme haben, so dass die größeren Speicher bei den 32-Bittern den
> Standby-Stromverbrauch hochtreiben. Und PLLs oder USB Schnittstellen,
> die bei den 32 Bittern häufiger sind, brauchen auch ordentlich Strom.
>
> Die 64-Bitter sind dann eher in 65/40nm Strukturen und feiner unterwegs,
> was den Stromverbrauch weiter senkt. Aber auch hier gilt, dass das durch
> größere Speicher und höhere Frequenzen kompensiert wird.
>
> Zum Teil hat man aber in den feineren Strukturen mitlerweile Massnahmen
> gegen die Leckströme implementiert, was die Situation wieder verbessert.
>
> Ein 32-Bitter, den man mit 8 Mhz betreibt, dürfte daher sparsamer sein,
> als ein 8-Bitter bei 8 Mhz.

Das ist gut zu wissen. Danke für deine Antwort.

von Nano (Gast)


Lesenswert?

Programmierer schrieb:
> Squierrel schrieb:
> ...
> Faktor 10000 ist heftig. Das bedeutet, Rust ist völlig witzlos und für
> Performance kritische Teile ungeeignet, obwohl es genau dafür intendiert
> ist - wie z.B. Browser, bei denen es auch verwendet wird. Komisch.

Ich tippe auf einen alten Compiler mit geringer Optimierung.

Die aktuelle Compilerversion schlägt sich, je nach dem was man testet, 
recht gut:
https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/rust.html

von Blechbieger (Gast)


Lesenswert?

Nano schrieb:
> Denn je kleiner die Strukturen, desto kleiner kann die Die Fläche sein
> und das senkt die Kosten.

Auch da gibt es Grenzen und zwar durch die IO-Zellen. Die werden in 
deutlich gröberen Strukturen als die minimale Strukturbreite der Logik 
hergestellt um bestimmte Spannungsbereiche und Treiberstärke zu 
erreichen. Sobald die Logik komplett in den Bereich des geschlossen 
IO-Rings passt wird der Chip trotz kleinerer Strukturen nicht kleiner. 
Ab diesem Punkt müsste man auf Flip-Chip umsteigen. Stattdessen packen 
die Hersteller mit kleineren Strukturen mehr Logik, z.B. 32 Bit statt 16 
Bit, in diese Fläche.

von Christopher J. (christopher_j23)


Lesenswert?

Squierrel schrieb:
> RUST war wenn ich mich richtig erinnere Faktor 10000 langsamer als C.
> Hatte mehr Fehler und die Implementierung hat mehr Zeit in Anspruch
> genommen.

Ohne Belege würde ich diese Behauptung mal direkt im Reich der Legenden 
verorten.

Nano schrieb:
> Yalu X. schrieb:
>
>> Das steht nirgends geschrieben. Es ist ausdrücklich die Rede von
>> 32-Bit-APPLE-Plattformen.
>
> Ja, der Grund ist allerdings sicherlich nicht Apple, sondern die
> Einschränkungen durch 32 Bit.

Warum sollte das denn so sein? Welche Einschränkung sollte das denn 
sein? Warum gibt es dann nach wie vor Support für 32-Bit Linux (sowohl 
x86 als auch ARM)?

Beitrag #6128966 wurde von einem Moderator gelöscht.
von Olaf (Gast)


Lesenswert?

> Blöderweise haben die geringeren Strukturgrößen gleichzeitig den
> Nachteil, die Leckströme zu erhöhen. Je geringer also der Takt ist,
> desto mehr sind die Dinger mit den großen Strukturen im Vorteil.

Gerade das behauptet Renesas mit ihren SOTB geloest zu haben.

https://www.renesas.com/sg/en/solutions/key-technology/sotb/process.html

Natuerlich Marketing redet viel und es ist die Frage wie sich das in der 
Praxis macht, aber ich hab ihr Demokit schon auf dem Tisch. .-)

Olaf

von Programmierer (Gast)


Lesenswert?

Ernst schrieb im Beitrag #6128966:
> Dafür langen einfach beherrschbare 8 Bit, richtig programmiert locker.

Wenn der Automat WLAN o.ä. zur Kommunikation verwenden soll wird das 
schon eher schwierig. In WLAN-Modulen sind vermutlich immer 32bit 
Prozessoren. Ein solches Modul mit 8bit-Prozessor ansteuern gilt 
nicht...

von (prx) A. K. (prx)


Lesenswert?

Es ist kann insgesamt einfacher sein, mit einem 32-Bitter Aufgaben zu 
erledigen, die auch ein 8-Bitter mit links macht, als umgekehrt.

von Frank K. (fchk)


Lesenswert?

Nano schrieb:

> Ich hätte jetzt gedacht, dass man zwar ältere FABs durchaus noch für
> weniger wichtige Chips nutzt, aber man die Fertigungsgröße auch bei den
> 8 Bittern nachzieht.
> Denn je kleiner die Strukturen, desto kleiner kann die Die Fläche sein
> und das senkt die Kosten.

Ja. Aber: Kleinere Strukturen können dann auch nur kleinere Spannungen 
ab.

Bei den 8-Bit und 16 Bit PICs hat Microchip das auch gemacht. Die neuere 
laufen intern nur noch mit 2.5 oder 1.8V, und nur der IO-Ring läuft noch 
mit 3.3 oder 5V. Atmel hats bei den AVRs verpennt.

So kleine Designs sind aber pad-bound. Heißt: Die Bondpads und die 
IO-Treiber bestimmen die Die-Größe, d.h. auch eine kleinere Technologie 
bringt für die Die-Size nichts mehr. Da kann man dann einfach mehr Logik 
reinwerfen, oder wie bei den dsPIC33CH einfach einen zweiten Core.

fchk

von Unfassbar (Gast)


Lesenswert?

Ernst schrieb im Beitrag #6128966:
> Dafür langen einfach beherrschbare 8 Bit, richtig programmiert locker.
> Deren potentieller Einsatzbereich ist ohnehin größer als man hier
> glauben lassen will.

Kann man machen. Würde ich aber nicht mehr machen. Weil ein einfacher 
32bit ARM M0/M0+/M1 heute bei gleichen Preis mehr Leistung und mehr 
Speicher bietet. Die Dinger kosten einfach weniger und man arbeitet auf 
einer Plattform.

Also ich benutze für so gut wie nichts mehr einen 8bitter.

von (prx) A. K. (prx)


Lesenswert?

Frank K. schrieb:
> laufen intern nur noch mit 2.5 oder 1.8V, und nur der IO-Ring läuft noch
> mit 3.3 oder 5V. Atmel hats bei den AVRs verpennt.

Wenn man den Finger an einen dsPIC30 hält, der noch nicht so arbeitete, 
dann weiss man sofort, weshalb Microchip sich diese Mühe machte.

von Alex D. (daum)


Lesenswert?

Olaf schrieb:
>> Blöderweise haben die geringeren Strukturgrößen gleichzeitig den
>> Nachteil, die Leckströme zu erhöhen. Je geringer also der Takt ist,
>> desto mehr sind die Dinger mit den großen Strukturen im Vorteil.
>
> Gerade das behauptet Renesas mit ihren SOTB geloest zu haben.
>
> https://www.renesas.com/sg/en/solutions/key-technology/sotb/process.html
>
> Natuerlich Marketing redet viel und es ist die Frage wie sich das in der
> Praxis macht, aber ich hab ihr Demokit schon auf dem Tisch. .-)
>
> Olaf

Also auf den ersten Blick sieht deren SOTB Transistor eigentlich gleich 
aus wie STs UTBB-FD-SOI hier: 
https://www.st.com/content/st_com/en/about/innovation---technology/FD-SOI/learn-more-about-fd-soi.html

von Nano (Gast)


Lesenswert?

Blechbieger schrieb:
> Nano schrieb:
>> Denn je kleiner die Strukturen, desto kleiner kann die Die Fläche sein
>> und das senkt die Kosten.
>
> Auch da gibt es Grenzen und zwar durch die IO-Zellen. Die werden in
> deutlich gröberen Strukturen als die minimale Strukturbreite der Logik
> hergestellt um bestimmte Spannungsbereiche und Treiberstärke zu
> erreichen. Sobald die Logik komplett in den Bereich des geschlossen
> IO-Rings passt wird der Chip trotz kleinerer Strukturen nicht kleiner.
> Ab diesem Punkt müsste man auf Flip-Chip umsteigen. Stattdessen packen
> die Hersteller mit kleineren Strukturen mehr Logik, z.B. 32 Bit statt 16
> Bit, in diese Fläche.

Danke für die Info.

von Stefan F. (Gast)


Lesenswert?

c-hater schrieb:
> Da wäre ganz sicher auch noch Platz für
> "Speicherbereiche" gewesen. Wenn man beim Konzept nachgedacht hätte...

Da stimme ich Dir zu. Allerdings ist C deswegen nicht "Dreck". Man kann 
sich jeder Programmiersprache irgendein missing Feature heraussuchen und 
dann sagen, dass die Sprache Dreck sei. Wenn man aber mal schau, wie 
lange diese Programmiersprache großflächig eingesetzt wird, muss man 
schon erkennen, dass sie (warum auch immer) zu den erfolgreichsten aller 
Zeiten gehört.

Dein geliebtes Assembler kennt übrigens auch keine unterschiedlichen 
Pointer-Typen für Speicherbereiche.

PS: Wo ist eigentlich deine Homepage oder dein Buch, wo du dich mal so 
richtig gründlich über C ausgekotzt hast? Dann könntest du darauf 
verweisen anstatt Dir immer wieder die Mühe zu machen, dich mit neuen 
Hassbeiträgen lächerlich zu machen.

von MaWin (Gast)


Lesenswert?

Unfassbar schrieb:
> Also ich benutze für so gut wie nichts mehr einen 8bitter

Du bist ein ganz toller Hecht.

Wahrscheinlich programmierst du auch alles noch in Assembler.

Auf Hochsprachenebene kann es einem nämlich egal sein, wie viel Bits der 
ausführende Prozessor hat.

Da benutzt man einfach den billigsten uC der den Job erfüllt.

von Olaf (Gast)


Lesenswert?

> Also auf den ersten Blick sieht deren SOTB Transistor eigentlich gleich
> aus wie STs UTBB-FD-SOI hier:

Kannte ich noch garnicht. Irgendwie ist der Vertrieb von ST relativ 
muede. Kann mich garnicht erinnern ob die schonmal in der Firma zu 
besuch waren.

Aber es zeigt natuerlich auch mal wieder das so allgemeine Aussagen 
Familie A mit xbit braucht mehr Strom als Familie B mit ybit Unsinn 
sind. Da steckt einfach zuviel drin.



> Wenn man aber mal schau, wie lange diese Programmiersprache großflächig
> eingesetzt wird, muss man schon erkennen, dass sie (warum auch immer)
> zu den erfolgreichsten aller Zeiten gehört.

C hatte zu Anfang einfach den Vorteil am besten das Hirn der vorhandenen 
C-Programmierer anzusprechen. Und C war sehr frueh verfuegbar:
https://de.wikipedia.org/wiki/BDS_C

Und danach war die Sprache einfach immer schon da.

Ich koennte mir auch schoeneres vorstellen. Aber gleichzeitig bin ich 
froh das es embedded nur eine Sprache gibt. Es waere doch zum kotzen 
wenn es da genauso einen Wirrwar gaebe wie auf PCs.

Olaf

von Rolf M. (rmagnus)


Lesenswert?

Programmierer schrieb:
> Olaf schrieb:
>> Es ist fuer eine Sprache vollkommen irrelevant wieviel Bit der
>> Zielprozessor hat
>
> Es ist sehr wohl relevant, ob alle Daten + Code in einen linearen
> Adressraum passen oder nicht. Der AVR-GCC muss ja diverse Verrenkungen
> machen um die getrennten Flash/RAM Bereiche zu verwalten (__flash und
> so).

Das liegt aber nicht an dessen Bitbreite, sondern daran, dass er zwei 
getrennte Speicherbusse hat, um auf beide gleichzeitig zugreifen zu 
können.

> 16bit sind schon wenig, selbst AVRs haben teilweise mehr Speicher als
> 64kB und müssen mit Bankswitching arbeiten (Krücke - verkompliziert
> Compiler und C-Programmierung).

AVRs sind aber keine 16-Bit-Prozessoren.

> Für 64bit-uC könnte man die ALU und den Bus so bauen, dass 64bit
> Operationen als 2 sequentielle 32bit Operationen gemacht werden.

Welchen Vorteil hätte man dann noch von den 64 Bit? Abgesehen davon: Wie 
machst du eine 64-Bit-Multiplikation mit nur zwei 32-Bit-Operationen?

von Stefan F. (Gast)


Lesenswert?

Olaf schrieb:
> Und danach war die Sprache einfach immer schon da

Ich ergänze: und sie erfüllt ihren Zweck nach wie vor.

Diese beiden Punkte zusammen werden wohl ausschlaggebend sein.

Olaf schrieb:
> Aber gleichzeitig bin ich
> froh das es embedded nur eine Sprache gibt.

Ich glaube, das stimmt nicht so ganz. Mir falle da spontan noch diese 
ein: C++ (Arduino, Symbian), Basic (Bascom), Java (Android), Python 
(ESP32)

von Alex D. (daum)


Lesenswert?

Rolf M. schrieb:
> Das liegt aber nicht an dessen Bitbreite, sondern daran, dass er zwei
> getrennte Speicherbusse hat, um auf beide gleichzeitig zugreifen zu
> können.

Linearer Adressraum und getrennte Speicherbusse schließen sich nicht 
gegenseitig aus. Alle ARM Cortex M3/M4/M7 Kerne haben einen I-Bus und 
einen D-Bus, die einfach an anderen Adressbereichen liegen, trotzdem 
kann darauf mit den gleichen instructions zugegriffen werden.

von Carl D. (jcw2)


Lesenswert?

Rolf M. schrieb:
...
>
>> Für 64bit-uC könnte man die ALU und den Bus so bauen, dass 64bit
>> Operationen als 2 sequentielle 32bit Operationen gemacht werden.
>
> Welchen Vorteil hätte man dann noch von den 64 Bit? Abgesehen davon: Wie
> machst du eine 64-Bit-Multiplikation mit nur zwei 32-Bit-Operationen?

Vielleicht um Chipfläche zu sparen. Das wäre ja nicht neu:
http://www.righto.com/2013/09/the-z-80-has-4-bit-alu-heres-how-it.html
Vermutlich kommen daher die "Halfcarry"-Flags in vielen 8-Bittern.

von (prx) A. K. (prx)


Lesenswert?

Carl D. schrieb:
> Vermutlich kommen daher die "Halfcarry"-Flags in vielen 8-Bittern.

Nope, das kommt von BCD-Rechnung.

von Carl D. (jcw2)


Lesenswert?

Carl D. schrieb:
> Rolf M. schrieb:
> ...
>>
>>> Für 64bit-uC könnte man die ALU und den Bus so bauen, dass 64bit
>>> Operationen als 2 sequentielle 32bit Operationen gemacht werden.
>>
>> Welchen Vorteil hätte man dann noch von den 64 Bit? Abgesehen davon: Wie
>> machst du eine 64-Bit-Multiplikation mit nur zwei 32-Bit-Operationen?
>
> Vielleicht um Chipfläche zu sparen. Das wäre ja nicht neu:
> http://www.righto.com/2013/09/the-z-80-has-4-bit-alu-heres-how-it.html
> Vermutlich kommen daher die "Halfcarry"-Flags in vielen 8-Bittern.

BTW, über den Z80-Designer sagten Kollegen, daß er für jeden 
Zusatzbefehl genau vorhersagen konnte, wieviel Platz das zusätzlich 
braucht.

von Rolf M. (rmagnus)


Lesenswert?

Meine Frage war nicht, warum man es intern 32-bittig macht, sondern 
warum man es dann überhaupt nach außen hin als 64-Bitter erscheinen 
lassen will. Ein µC wird in der Regel keinen 64-Bit-Adressraum brauchen, 
und wenn dann auch keine echten 64-Bit-Rechenoperationen zur Verfügung 
stehen, was hab ich dann davon?

von Carl D. (jcw2)


Lesenswert?

A. K. schrieb:
> Carl D. schrieb:
>> Vermutlich kommen daher die "Halfcarry"-Flags in vielen 8-Bittern.
>
> Nope, das kommt von BCD-Rechnung.

Was man mit 4-Bit einfacher hinbekommt, als mit 8. was man auch hinter 
dem Link lesen kann, zum Thema "bessere BCD-Unterstützung Z80 vs 8085".

von (prx) A. K. (prx)


Lesenswert?

Wo ist eigentlich in diesem Zusammenhang "nach aussen hin"?
Viele µCs haben aussen nur I/O-Pins.

von Stefan F. (Gast)


Lesenswert?

Rolf M. schrieb:
> Ein µC wird in der Regel keinen 64-Bit-Adressraum brauchen,
> und wenn dann auch keine echten 64-Bit-Rechenoperationen zur Verfügung
> stehen, was hab ich dann davon?

Adressraum und Rechenregister sind zwei paar Schuhe. Bei Prozessoren 
<32bit war das noch sehr offensichtlich.

von (prx) A. K. (prx)


Lesenswert?

Carl D. schrieb:
>> Nope, das kommt von BCD-Rechnung.
>
> Was man mit 4-Bit einfacher hinbekommt, als mit 8.

Marginal. Das war sicher nicht der Grund. Zumal eine 4-Bit ALU bei einem 
8-Bitter weniger häufig ist als das half carry. Eine 4-Bit ALU kenne ich 
nur von der Z80.

: Bearbeitet durch User
Beitrag #6129576 wurde vom Autor gelöscht.
Beitrag #6129582 wurde vom Autor gelöscht.
von Rolf M. (rmagnus)


Lesenswert?

A. K. schrieb:
> Wo ist eigentlich in diesem Zusammenhang "nach aussen hin"?

Es ging um diese Aussage:

Programmierer schrieb:
> Für 64bit-uC könnte man die ALU und den Bus so bauen, dass 64bit
> Operationen als 2 sequentielle 32bit Operationen gemacht werden.

Es wurde also vorgeschlagen, einen µC so zu bauen, dass sowohl das 
Rechenwerk, als auch der Bus intern nur 32-bittig ist, er sich aber dem 
Programmierer gegenüber (und das meinte ich mit "nach außen hin") als 
64-Bitter präsentiert. Und meine Frage dazu war, was das bringen sollte.

Stefan ⛄ F. schrieb:
> Rolf M. schrieb:
>> Ein µC wird in der Regel keinen 64-Bit-Adressraum brauchen,
>> und wenn dann auch keine echten 64-Bit-Rechenoperationen zur Verfügung
>> stehen, was hab ich dann davon?
>
> Adressraum und Rechenregister sind zwei paar Schuhe.

Ja, aber man wird heute sicherlich keinen Prozessor mehr bauen, der eine 
64-Bit-ALU, aber nur einen 32-Bit-Adressraum hat.

von (prx) A. K. (prx)


Lesenswert?

Rolf M. schrieb:
> Es wurde also vorgeschlagen, einen µC so zu bauen, dass sowohl das
> Rechenwerk, als auch der Bus intern nur 32-bittig ist, er sich aber dem
> Programmierer gegenüber (und das meinte ich mit "nach außen hin") als
> 64-Bitter präsentiert. Und meine Frage dazu war, was das bringen sollte.

In dieser Dimension wohl nichts. Aber vielleicht bringt ARM ja mal einen 
Cortex M-1, dessen 32-Bit ISA intern platzsparend bitseriell 
implementiert ist. Wär nicht neu, die 8-Bitter Motorola 6804 und der 
SC/MP von NS waren intern bitseriell.

von Axel L. (axel_5)


Lesenswert?

Carl D. schrieb:
> Rolf M. schrieb:
> ...
>>
>>> Für 64bit-uC könnte man die ALU und den Bus so bauen, dass 64bit
>>> Operationen als 2 sequentielle 32bit Operationen gemacht werden.
>>
>> Welchen Vorteil hätte man dann noch von den 64 Bit? Abgesehen davon: Wie
>> machst du eine 64-Bit-Multiplikation mit nur zwei 32-Bit-Operationen?
>
> Vielleicht um Chipfläche zu sparen. Das wäre ja nicht neu:
> http://www.righto.com/2013/09/the-z-80-has-4-bit-alu-heres-how-it.html
> Vermutlich kommen daher die "Halfcarry"-Flags in vielen 8-Bittern.

Das war zu den Zeiten interessant, als so ein Prozessor das einzige 
Bauteil auf dem Die war. Heute ist da noch der Speicher (Flash und RAM) 
sowie jede Menge Peripherie drauf. Die CPU ist nicht so besonders groß 
im Vergleich.

Gruß
Axel

von Carl D. (jcw2)


Lesenswert?

Axel L. schrieb:
> Carl D. schrieb:
>> Rolf M. schrieb:
>> ...
>>>
>>>> Für 64bit-uC könnte man die ALU und den Bus so bauen, dass 64bit
>>>> Operationen als 2 sequentielle 32bit Operationen gemacht werden.
>>>
>>> Welchen Vorteil hätte man dann noch von den 64 Bit? Abgesehen davon: Wie
>>> machst du eine 64-Bit-Multiplikation mit nur zwei 32-Bit-Operationen?
>>
>> Vielleicht um Chipfläche zu sparen. Das wäre ja nicht neu:
>> http://www.righto.com/2013/09/the-z-80-has-4-bit-alu-heres-how-it.html
>> Vermutlich kommen daher die "Halfcarry"-Flags in vielen 8-Bittern.
>
> Das war zu den Zeiten interessant, als so ein Prozessor das einzige
> Bauteil auf dem Die war. Heute ist da noch der Speicher (Flash und RAM)
> sowie jede Menge Peripherie drauf. Die CPU ist nicht so besonders groß
> im Vergleich.
>
Das war ja nicht die Frage. Wenn weiter oben zu lesen war, daß die 
IO-Treiber/Pads den Hauptanteil der Chipfläche ausmachen, dann kann man 
gut nachvollziehen, warum man gerne noch einen 
Parallel-32-bit-Multiplizierer zum ARM dazu baut, denn selbst wenn der 
50% der CPU-Fläche ausmacht, dann ist das kaum was in Vergleich zur 
Gesamtfläche.

Zum Thread-Thema: 32-Bit ist genug um alles in einem linearen Adressraum 
ansprechen zu können, typische μC-Rechnungen ohne Reguster-/Befehlssplit 
hinzubekommen und damit einhergehende Synchronisationsprobleme zu 
umgehen.
Manchmal (oft?) reicht auch weniger, aber mehr stört nur die Puristen.

von Olaf (Gast)


Lesenswert?

> Ich glaube, das stimmt nicht so ganz. Mir falle da spontan noch diese
> ein: C++ (Arduino, Symbian), Basic (Bascom), Java (Android), Python
> (ESP32)

Aehem...ich dachte Embedded und ohne Bastler. Da hab ich bisher 
ausschliesslich C gesehen. Gelegentlich kommt mal die Frage auf ob man 
nicht auch C++ nehmen koennte, aber irgendwie versandet das immer...

Olaf

von Jemand (Gast)


Lesenswert?

Olaf schrieb:
>> Ich glaube, das stimmt nicht so ganz. Mir falle da spontan noch
> diese
>> ein: C++ (Arduino, Symbian), Basic (Bascom), Java (Android), Python
>> (ESP32)
>
> Aehem...ich dachte Embedded und ohne Bastler. Da hab ich bisher
> ausschliesslich C gesehen. Gelegentlich kommt mal die Frage auf ob man
> nicht auch C++ nehmen koennte, aber irgendwie versandet das immer...
>
> Olaf

Hast du mal geguckt, was alles für Luftfahrt, Raumfahrt und Smartcards 
verwendet wird?

von Carl D. (jcw2)


Lesenswert?

Jemand schrieb:
> Olaf schrieb:
>>> Ich glaube, das stimmt nicht so ganz. Mir falle da spontan noch
>> diese
>>> ein: C++ (Arduino, Symbian), Basic (Bascom), Java (Android), Python
>>> (ESP32)
>>
>> Aehem...ich dachte Embedded und ohne Bastler. Da hab ich bisher
>> ausschliesslich C gesehen. Gelegentlich kommt mal die Frage auf ob man
>> nicht auch C++ nehmen koennte, aber irgendwie versandet das immer...
>>
>> Olaf
>
> Hast du mal geguckt, was alles für Luftfahrt, Raumfahrt und Smartcards
> verwendet wird?

In Fliegern sicher ESP, dann kann man sich dank Wifi die 
fehleranfälligen Verdrahtung der Sensoren sparen.


PS:
Wer sich aufregt, sollte seinen Ironiesensor kalibrieren lassen.

von Programmierer (Gast)


Lesenswert?

Olaf schrieb:
> Da hab ich bisher
> ausschliesslich C gesehen.

Auf SIM-Karten läuft Java. C++ geht auch sehr gut.

Rolf M. schrieb:
> Ein µC wird in der Regel keinen 64-Bit-Adressraum brauchen,

Darum ging's - große Mengen an Speicher über 4GB ansteuern, weil 
64bit-Operationen selbst nicht so wichtig sind.

von (prx) A. K. (prx)


Lesenswert?

Carl D. schrieb:
> Wer sich aufregt, sollte seinen Ironiesensor kalibrieren lassen.

Man darf dann aber den Ironiesensor vorher nicht anhand von Information 
über Boeings internes Netzwerk der 787 kalibirieren.
https://www.darkreading.com/vulnerabilities---threats/boeing-787-on-board-network-vulnerable-to-remote-hacking-researcher-says/d/d-id/1335463

von Carl D. (jcw2)


Lesenswert?

A. K. schrieb:
> Carl D. schrieb:
>> Wer sich aufregt, sollte seinen Ironiesensor kalibrieren lassen.
>
> Man darf dann aber den Ironiesensor vorher nicht anhand von Information
> über Boeings internes Netzwerk der 787 kalibirieren.
> 
https://www.darkreading.com/vulnerabilities---threats/boeing-787-on-board-network-vulnerable-to-remote-hacking-researcher-says/d/d-id/1335463

Ja, Netzwerk gibt es auch als Kabel, aber davon hab ich nicht 
geschrieben ("Wifi").

von Rolf M. (rmagnus)


Lesenswert?

Programmierer schrieb:
> Rolf M. schrieb:
>> Ein µC wird in der Regel keinen 64-Bit-Adressraum brauchen,
>
> Darum ging's - große Mengen an Speicher über 4GB ansteuern, weil
> 64bit-Operationen selbst nicht so wichtig sind.

In einem µC? Nenn mir doch mal einen, der auch nur annähernd an die 
Grenze kommt.

von Maxe (Gast)


Lesenswert?

Carl D. schrieb:
> Zum Thread-Thema: 32-Bit ist genug um alles in einem linearen Adressraum
> ansprechen zu können, [...]
> Manchmal (oft?) reicht auch weniger, aber mehr stört nur die Puristen.

Variablen brauchen dann mehr Platz im Speicher. 64 Bit sind immerhin 8 
Byte. Fuer z.B. einen Boolean-Wert. Byteweiser Speicherzugriff kann 
helfen, aber ob der Chipdesigner auch 16- & 32-Bit-Zugriffe vorsieht? 
Alignment?

von (prx) A. K. (prx)


Lesenswert?

Maxe schrieb:
> aber ob der Chipdesigner auch 16- & 32-Bit-Zugriffe vorsieht?

Bei einer für Mikrocontroller vorgesehenen Architektur wärs schon 
seltsam, käme die ohne sie?

Bei DEC Alpha und den ersten ARM-Generationen wurden manche 
Teilwortzugriffe "vergessen". Beide legten nach.

: Bearbeitet durch User
von Carl D. (jcw2)


Lesenswert?

Maxe schrieb:
> Carl D. schrieb:
>> Zum Thread-Thema: 32-Bit ist genug um alles in einem linearen Adressraum
>> ansprechen zu können, [...]
>> Manchmal (oft?) reicht auch weniger, aber mehr stört nur die Puristen.
>
> Variablen brauchen dann mehr Platz im Speicher. 64 Bit sind immerhin 8
> Byte. Fuer z.B. einen Boolean-Wert. Byteweiser Speicherzugriff kann
> helfen, aber ob der Chipdesigner auch 16- & 32-Bit-Zugriffe vorsieht?
> Alignment?

Aber den Unterschied zwischen n*2 und n*2^32 kann man schon erkennen, 
oder?

von Axel L. (axel_5)


Lesenswert?

Carl D. schrieb:

> Das war ja nicht die Frage. Wenn weiter oben zu lesen war, daß die
> IO-Treiber/Pads den Hauptanteil der Chipfläche ausmachen, dann kann man
> gut nachvollziehen, warum man gerne noch einen
> Parallel-32-bit-Multiplizierer zum ARM dazu baut, denn selbst wenn der
> 50% der CPU-Fläche ausmacht, dann ist das kaum was in Vergleich zur
> Gesamtfläche.

Das bezog sich auf einen 8-Bitter in einer 40nm Technologie.

von Programmierer (Gast)


Lesenswert?

Maxe schrieb:
> Byteweiser Speicherzugriff kann
> helfen, aber ob der Chipdesigner auch 16- & 32-Bit-Zugriffe vorsieht?

Selbstverständlich beherrschen sowohl 32bit-ARM als auch 64bit-ARM 8, 
16, 32 und 64bit-Zugriffe. Somit wird hier nix verschwendet. Die 
Architektur stellt entsprechende Alignment-Anforderungen, welche die 
Compiler aber korrekt umsetzen, sofern man korrekten Code schreibt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.