Warum wird die CPU manchmal als BCM2708, manchmal als BCM2835 bezeichnet?

49

Ich habe das System on Chip von Raspberry Pi gesehen, das normalerweise als "BCM2835" bezeichnet wird (z. B. bei Wikipedia ), aber manchmal als "BCM2708" (z. B. Quellen für Linux SPI-Treiber in bcm2708.c oder in Kommentaren zu meiner anderen Frage) ).

Was ist richtig oder beides - warum? Insbesondere, wenn es für beide Datenblätter Inkonsistenzen gibt, welche sind als "wichtiger" zu verstehen?

akavel
quelle

Antworten:

13

Tatsächlich ist die Diskrepanz auf die Bezeichnung des Siliziums und des Chipgehäuses zurückzuführen. Ursprünglich gab es den als BCM2708 bekannten Silizium-Chip, die gesamte anfängliche Entwicklung erfolgte daraufhin.

In einem gestapelten 9x9-Paket mit 256 MB DRAM wird es dann als BCM2763 bezeichnet. (Gestapelt wird, wenn Sie das DRAM-Silizium buchstäblich oben auf den Prozessor kleben und die Bonddrähte nach unten auf das Substrat legen.)

Wenn der Speicher jedoch POP-fähig ist (Paket für Paket, das DRAM-Paket ist an der Oberseite des Prozessorpakets angebracht), wurde er als BCM2835 bezeichnet. Dies ist das Gerät, auf dem ARM aktiviert war.

Spätere Versionen des Chips folgen demselben Schema, es gibt jetzt drei Siliziumteile, BCM2708, BCM2709 und BCM2710 und drei Gehäuse, BCM2835, BCM2836 und BCM2837.

GSH
quelle
20

Zusätzlich zu Steves Antwort gibt es hier eine Diskussion über das GIT-Hub-Problemprotokoll für Linux-Treiber, in der besprochen wird, wie die Treiber beschriftet werden sollen. Die relevanten Beiträge sind:

Popcornmix:

Technisch gesehen ist 2708 die Familie und 2835 eine spezifische Implementierung. Wir wissen jetzt, dass 2835 die einzige Implementierung in der Familie ist, die Linux ausführen kann (und es wird keine neuen Modelle dieser Familie geben), daher ist es wahrscheinlich egal, welches Modell verwendet wird, obwohl es konsistent sein sollte.

lp0:

Es wäre also vernünftig, alle Treiber 2708 mit Ausnahme der spezifischen Gerätebaumdatei 2835 zu benennen. (Unter der Annahme, dass ein anderes Modell dieser Familie, das Linux ausführen kann, eine andere Liste von Geräten benötigt)

Jon Egerton
quelle
Ein anderer Kommentar legt nahe, dass "BCM2708 möglicherweise die CPU-Komponente ist, die Teil des BCM2835 ist". Einige Links zu Beweisen aus erster Hand wären nett ... (außerdem habe ich diese Frage gestellt, weil ich mehr als das möchte, was ich bereits im ersten Google-Ergebnis gefunden habe)
akavel
1
Ich habe versucht, welche zu finden. Das Broadcom-Datenblatt ist hier verlinkt: raspberrypi.org/wp-content/uploads/2012/02/… . Die BCM2708-Nummer wird jedoch nicht angegeben. Soweit ich sehen kann, erscheinen diese beiden Zahlen nur in Beiträgen, in denen solche Fragen gestellt werden.
Jon Egerton
14

Technisch ist 2708 der Name für die Familie der Chips und 2835 der spezifische Chip im Pi. In Bezug auf das Datenblatt, das das andere ersetzt, würde ich das BCM2835 (spezifisch) gegenüber dem BCM2708 (Familie) auswählen.

Steve Robillard
quelle
1
Harte Zitierweise erforderlich . Ein anderes Poster schlägt vor, dass vielleicht "BCM2708 die CPU-Komponente ist, die Teil des BCM2835 ist". Entschuldigen Sie, aber warum soll ich Ihnen glauben, nicht ihm?
Akavel
1
Als "anderes Plakat" möchte ich sagen, dass es sich um Spekulationen handelte, die auf den Kernelquellen basierten. Ich habe auch keine konkreten Beweise ... und wir sollten wirklich eine kanonische (vorzugsweise Broadcomm) Quellenantwort haben.
Maria Zverina
1
@MariaZverina In diesem speziellen Fall ist eine solche kanonische Quelle möglicherweise nicht von jedermann erhältlich - da eine NDA erforderlich ist, um alle Details auf dem Chip zu erhalten. Infolgedessen kann ein pragmatischerer Ansatz erforderlich sein. Lassen Sie mich eine Frage stellen, um den Kontext für die Frage zu ermitteln. Was versuchen Sie zu tun, das Sie aufgrund dieser Namensfrage nicht können?
Steve Robillard
@MariaZverina und akavel Ich bin gerade auf dieses Video auf YouTube youtube.com/watch?v=5jEVBK7P1GA von Geert van Leuw gestoßen , das über den Chip im Pi spricht, und er bezeichnet ihn als 2835. Als Informationsquelle für die Pi-Hardware Ich denke, Sie werden zustimmen, dass es nicht viel besser wird.
Steve Robillard
4

Es ist zu beachten, dass der ARM-Kern kein primärer Teil des SoC ist, sondern ein Hilfskern, der an der Seite hinter einer System-MMU steckt. Der Hauptprozessor (Boot-Prozessor) ist der VideoCore, der eine frühe Initialisierung durchführt, die System-MMU einrichtet und den ARM-Kern bootet.

Bcm2708 bezieht sich höchstwahrscheinlich auf den Hauptteil des SoC, der den VideoCore-Prozessor und die Peripheriegeräte enthält (siehe die Tabelle der VideoCore-SoCs in Wikipedia , beachten Sie, dass kein bcm27xx-Teil einen ARM-Kern hat).

Basierend auf der Treiber-Quellcode-Version von Broadcom habe ich tatsächlich den Eindruck, dass alle VC4-SoCs auf dem bcm2708 basieren, während VC3 bcm2707 ist. Es gibt jedoch mindestens drei bcm2708-Revisionen (a0, b0, c0), und a0 unterscheidet sich ausreichend, um überall #ifdefs und einige eigene Header zu haben. Es gibt auch eine Ausnahme für "VC4 big island", dessen Hauptüberschrift nicht enthalten ist, aber ich kann nicht wirklich viel darüber finden, obwohl diese Bemerkung eine interessante ist.

Daher ist es sinnvoll, dass sich die Fahrer auf den 2708 beziehen (insbesondere, wenn sie von Broadcom entwickelt wurden).

Ich bin nicht sicher, was ich von der RPI2-Meldung bcm2709 halten soll ... Es gibt zahlreiche Aussagen, dass sich die SoCs bcm2835 und bcm2836 nur im ARM-Subsystem und in der Basisadresse der Peripherie unterscheiden (dh geringfügig unterschiedliche System-MMU-Konfiguration) wahrscheinlich ist es in der Tat auch bcm2708 basiert, aber die verfügbaren Informationen sind eher begrenzt. Ich frage mich, ob gerade jemand die Zahl für den Code überschritten hat, der davon ausgeht, dass bcm2708 einen ARM11-Kern impliziert (obwohl dies in der Tat überhaupt keinen ARM-Kern impliziert).

Bearbeiten: Das neu veröffentlichte bcm2836 quad-A7-Dokument bestätigt, dass es ebenfalls auf dem bcm2708 basiert.

Matthijs
quelle
Ich glaube der BCM2709 ist ARMv8. ARMv8 ist AArch64 (ARM-64) und bedeutet, dass die Hardware Erweiterungen wie crc32, pmull, aes, sha1 und sha2 hat .
Jww
Ähm, hast du meine Antwort überhaupt gelesen? BCM2708 bezieht sich nur auf den Hauptteil des SoC (VideoCore 4 + -Peripherie), kein ARM. Sehen Sie sich zB die Header-Version von Broadcom an, um eine Vorstellung davon zu bekommen, was sie enthält. Das BCM2835 / 6/7 (und viele andere Teile) wurden dann konstruiert, indem ein ARM-Subsystem arm11 / quad-a7 / quad-a53 (bzw.) auf seine Seite geklebt wurde. Dies hat jedoch nicht viel mit dem Rest des SoC zu tun.
Matthijs
0

Meine Suche nach dieser Frage wurde von dieser Seite veranlasst

Beachten Sie die Antwort des Befehls cat / proc / cpuinfo

...

Hardware: BCM2708

Revision: 1000002

Slomobile
quelle
Hm, interessant! Obwohl angesichts der anderen Antworten, ich glaube es immer noch nicht die Situation genug löst - es immer noch beide Familiennamen sein kann, oder spezifische Implementierung Namen, oder etwas anderes ...
akavel