Wie entwerfe ich meine eigenen ARM-basierten Prozessoren?

Ich habe mehrere Fragen dazu, wie ich meine eigene ARM-basierte CPU entwerfen würde?

  • Wie beginnt man mit einer ARM-Lizenz und endet mit einem Paket, das bereit ist, auf eine Platine gelötet zu werden?
  • Was bekomme ich von ARM (ich bin sicher, dass sie mehrere Lizenzoptionen zum Austeilen haben – Architekturlizenz (Qualcomm Snapdragon-Stil) und Core-Lizenz (TI OMAP-Stil))?
  • Welche Tools benötige ich, um fortzufahren, sobald ich „das gewisse Etwas“ von ARM habe?
  • Was schicke ich an die Fab?
  • Ich glaube, nur bestimmte Gießereien sind lizenziert, einen ARM-Kern auf einen Siliziumwafer zu ätzen. Habe ich recht?
  • Kann ich mir das als Student auf einem FPGA leisten? Wie bekomme ich praktische Erfahrungen für so etwas?
Hast du mit ARM gesprochen? [Bearbeitet von einem Moderator.]
Werfen Sie einen Blick auf opencores.com – dort gibt es viele verschiedene Prozessorkerne in verschiedenen Vollständigkeits- und Funktionszuständen. Was den Erhalt der tatsächlichen ARM-Kernquelle angeht ... wie @OlinLathrop sagt ... sprechen Sie mit ARM.
Ich verstehe die Ablehnungen nicht, das ist vielleicht eine naive Frage, aber meiner Meinung nach definitiv legitim.
@ JonL - Vielen Dank für Ihr Verständnis. Ich habe es naiv formuliert, um eine maximale Erklärung zu erhalten. Meine maximale Erfahrung ist das Schreiben von Verilog-Code für DSP-Projekte und einige CISC- und Pipeline-RISC-Prozessoren (Komplexität auf Graduiertenschulprojektebene).
@JonL: Weil die offensichtliche Antwort darin besteht, ARM zu fragen. Wir spekulieren bestenfalls nur, es sei denn, jemand hier arbeitet zufällig für ARM und weiß, welche Möglichkeiten es gibt. -1, da anscheinend kein Versuch unternommen wurde, dem offensichtlichen Weg zu folgen, oder dass überhaupt Nachforschungen angestellt wurden.
@OlinLathrop - Da ich keine IP kaufen werde, bezweifle ich, dass ein ARM-Vertreter seine Zeit damit verschwenden wird, mit mir zu sprechen. Bitte zeigen Sie mir eine nicht obskure Ressource über das Internet, auf die man bei der Recherche stoßen könnte. Ich hatte gehofft, dass hier jemand Erfahrung mit dem Arbeitsablauf Architecture -> Si oder Core -> Si hat.
Da Sie jetzt die offensichtliche Unplausibilität des Projekts bestätigt haben, indem Sie offen erklärt haben, dass Sie das IP nicht kaufen werden, was genau bringt es, eine Frage zu stellen, die untrennbar mit dem Kauf dieses bestimmten IP verbunden ist, anstatt einer generischen?
@ChrisStratton - Akademisches Interesse! Ich könnte mit meinem eigenen Design bei null anfangen, aber ich möchte den Workflow nicht im Auge behalten. Sollte ich beauftragt werden, einen Anwendungsprozessor zu entwerfen, ist ein solcher Einblick hilfreich. Wie wahrscheinlich ist es darüber hinaus, ein Tool (einen ARM-Kern / eine ARM-Architektur) zu verwenden, wenn man sich seiner Existenz, Vorteile oder Kenntnisse über seine Verwendung nicht bewusst ist.
Das Problem ist, dass Ihre Frage spezifisch für einen Workflow ist, dem Sie nicht folgen können. Die Arbeitsabläufe, denen Sie folgen können – die Verwendung eines originalen oder frei verfügbaren Designs in einem HDL, um auf ein FPGA abzuzielen – unterscheiden sich davon ebenso wie Spekulationen von Tatsachen.
Ich verstehe, dass ich möglicherweise keinen ARM in ein FPGA bekommen könnte. Nach dem, was Sie geschrieben haben, klingt es so, als hätte ich einen anderen Arbeitsablauf, wenn ich einen MIPS-Kern wähle. Werde ich? Wenn ich einen Xilinx Zynq verwendet habe, kann ich einen Teil dieses Workflows erleben?
@ChrisStratton - Das Zynq-Entwicklungsboard - Glauben Sie, dass dies eine Teilerfahrung beim Entwerfen um einen Armkern herum sein kann? (Kernlizenz) digilentinc.com/Products/…
Der Cortex-M1-Kern scheint dazu bestimmt zu sein, in jedem geeignet leistungsfähigen FPGA zu laufen. Die großen FPGA-Anbieter verfügen über die IP-Lizenz und liefern sie dem Designer wie jeden anderen Softcore. Ich nehme an, nicht kostenlos, aber es gibt wahrscheinlich Programme, die speziell für den akademischen Gebrauch verfügbar sind.
Ich bin vor kurzem auf diese Lektüre gestoßen. Gibt Ihnen einen guten Überblick darüber, wie das ARM-Geschäftsmodell selbst funktioniert, welche Art von Lizenzen sie vergeben und wie hoch die ungefähren Kosten sind. https://www.anandtech.com/show/7112/the-arm-diaries-part-1-how-arms-business-model-works/3

Antworten (5)

So machen es Unternehmen:

  1. Sammeln Sie etwa 10 Millionen US-Dollar.
  2. Verhandeln Sie mit ARM, um eine Lizenz zu erhalten. Dies wird wahrscheinlich mindestens 1 Million US-Dollar kosten.
  3. Holen Sie sich die Designdateien von ARM. Es wird wahrscheinlich in irgendeiner Form von VHDL, Verilog oder einer "verschlüsselten" Netzliste vorliegen.
  4. Entwerfen Sie Ihren eigenen Chip mit einer Mischung aus Ihrer eigenen Logik (für die Peripherie) und dem, was ARM Ihnen gegeben hat. Dieser Schritt erfordert wahrscheinlich eine teure CAD-Software und ein kleines Expertenteam. Erwarten Sie, mindestens 5 Millionen US-Dollar und mehrere Jahre auszugeben.
  5. Lassen Sie sich die Masken für den Chip selbst herstellen. Wenn Sie einen modernen Halbleiterprozess verwenden, kostet dies rund 1 Million US-Dollar.
  6. Lassen Sie den Chip selbst herstellen. Der Preis variiert, sollte aber weniger als 0,5 Millionen US-Dollar betragen.
  7. Debuggen Sie den von Ihnen erstellten Chip, beheben Sie die Fehler und gehen Sie dann zurück zu Schritt 5, bis Sie etwas haben, das Sie verkaufen können.

So machst DU es:

  1. Nehmen Sie an Ihrer örtlichen Universität an einem Computerarchitekturkurs für Hochschulabsolventen teil.
  2. Nehmen Sie mehr Kurse in digitaler Logik und was auch immer.
  3. Entwerfen Sie eine CPU von Grund auf neu in VHDL oder Verilog.
  4. Entwerfen Sie eine andere CPU von Grund auf neu.
  5. Sehen Sie sich den ARM-Befehlssatz an und entwerfen Sie eine kompatible CPU.
  6. Lassen Sie Ihre ARM-kompatible CPU in einem FPGA arbeiten.
  7. Geben Sie Ihren VHDL/Verilog-Quellcode nicht weiter, es sei denn, Sie möchten verklagt werden.
  8. Nutzen Sie Ihre ARM-Erfahrung, um eine gute Dissertation für Ihre Promotion zu schreiben.
  9. Verwenden Sie Ihren PhD, um einen Job bei ARM oder TI oder wem auch immer zu bekommen. Wiederholen Sie dann den Prozess mit den vorherigen 7 Schritten, wie ein Unternehmen es macht.

Ok, diese Liste ist ein wenig augenzwinkernd, aber im Grunde richtig. Der Punkt ist, machen Sie sich nicht einmal die Mühe, direkt mit ARM zu verhandeln, denn die Chancen stehen gut, dass Sie das Geld nicht haben. Und tun Sie auch nichts, was dazu führt, dass Sie von ARM verklagt werden.

+1. Ausgezeichnete Antwort. Was ich sagen wollte, aber besser.
Was sollte Ihrer Meinung nach in einem Computerarchitekturkurs für Hochschulabsolventen enthalten sein? Da uns unser Computerarchitekturmodul nicht viel über Design, mehr Theorie, weniger praktisches als solches verriet.
Jeder gute Kurs würde die Grundstruktur verschiedener Arten von CPUs und ihre Funktionsweise beinhalten. Die Themen sollten Mikrocode, Befehlsdecodierung, ALUs, Speicherzugriff, Cache, Register, Pipelining, Datenrisiken, Befehlsvorabruf usw. abdecken.
Gibt es einen Grund dafür, dass der Befehlssatz des ARM an und für sich patentierbarer wäre als alle anderen CPUs, von denen es viele Klone gibt? Sicherlich gibt es einige architektonische Merkmale, die patentiert sind, aber wenn das Ziel darin besteht, eine CPU zu entwerfen, die mit vorhandenen Compilern funktioniert, würde der Befehlssatz selbst ein Problem darstellen?
@supercat Normalerweise sind Anweisungen selbst nicht sehr patentfähig, es sei denn, sie enthalten einige architektonische Dinge. MIPS tat dies mit ihren CPUs, wo sie einige Anweisungen patentierten, die Wörter laden/speichern würden, die nicht wortausgerichtet sind, sowie einige Dinge, um dynamisch zwischen Big und Little Endian umzuschalten. Dies wurde vor Gericht angefochten, als MIPS einen MIPS-Klonhersteller verklagte und MIPS gewann (um das Jahr 2000 herum). Bei den meisten Patenten geht es jedoch um Architekturfragen. Sie können leider keine CPU erstellen, die mit vorhandenen Compilern kompatibel ist, ohne sowohl die Architektur als auch den Befehlssatz zu kopieren.
@DavidKessner - Tolle Antwort. Können Sie einige Tools vorschlagen, die tatsächlich verwendet werden? Ich habe mich in den Produktbereichen der „Big Three“ (Synopsys / Mentor / Cadence) umgesehen und mich in ihrem Arsenal an Designwerkzeugen verirrt – Functional Verification-Produkte, Physical Verification-Produkte, Logic Design. Ich konnte nicht einmal die Produkte von einem der drei großen EDA-Unternehmen zuordnen. mit ihrem Gegenstück von der anderen EDA Co. Werden diese Tools an Universitäten gelehrt? Wie kommt man einmal darum herum, das zu lernen? Ich bin in einem PhD-Programm an der Texas Tech U., aber es geht nicht um Architektur.
@DavidKessner: Ich glaube nicht, dass die meisten Compiler die Endianness dynamisch wechseln oder andere solche Dinge tun, oder? Ich würde denken, dass es möglich sein sollte, eine Teilmenge des ARM-Befehlssatzes auszuwählen, auf die Compiler angewiesen werden könnten, ihre Ausgabe zu beschränken, die jedoch keine verbotenen Funktionen enthielt. Das Konzept, Wortladungen von möglicherweise falsch ausgerichteten Adressen zuzulassen, wurde 1978 demonstriert, wenn nicht vorher (Intel 8086), also würde ich dort keine Probleme sehen, wenn man Endian-ness nicht dynamisch ändert. Haben Sie Referenzen dafür, was genau ARM behauptet?
Der Architekturkurs an meiner Universität hat genau das gelehrt – wir haben ein RISC in Xilinx ISE Web Pack implementiert und versucht, es mit Modelsim zu beweisen – nichts wurde auf einem echten FPGA implementiert. Die Pipeline-Gefahrendiskussion war nur theoretisch. Die einzigen verwendeten Tools waren das ISE Webpack und Modelsim. Am Ende des Kurses war mir der professionelle Workflow, den Qualcomm oder TI like Co. zur Einführung ihrer Produkte verwenden, noch nicht einmal bewusst.
@LordLoh. das hört sich nach dem Computerarchitekturkurs an, an dem ich teilgenommen habe. Ich hoffe, es war einer für Sie.
Der Computer Engineering-Kurs, den ich belegt habe, hat eine CPU in VHDL implementiert. Es war nicht nur ein Modul, sondern eine Serie über die 3 Jahre. Diejenigen, die alle Tests bestanden haben, wurden tatsächlich auch über den Sommer hergestellt! Einer der Dozenten war eigentlich Designer des ursprünglichen BBC-Mikros – die Abteilung hatte also Verbindungen zu ARM.
Und das ist nicht ARM, sondern MIPS droht mit Opencore-Designs brej.org/yellow_star/letter.pdf
Ich bin nicht überrascht. Ich habe tatsächlich vor etwa 10 Jahren mit Damjan Lampret gesprochen, als OpenCores anfing. Zu der Zeit hatte ich gerade meinen eigenen MIPS-Kern fertig gestellt, aber aufgrund der drohenden Klage entschieden, ihn nicht zu veröffentlichen. Ich habe Damjan geraten, solche Sachen auch zu vermeiden, aber er hat offensichtlich nicht darauf gehört.

ARM hat ein Universitäts-DesignStart-Programm . Als Student können Sie nur auf grundlegendes Cortex-M0-Material zugreifen. Aber wenn Sie wirklich interessiert sind, binden Sie Ihre Fakultät ein und Sie haben dann Zugriff auf viel mehr Designmaterial (Verilog FPGA-Code, Evaluierungs-IP, Simulationen usw.)

Danke :-) Ich werde versuchen, meinen Berater dazu zu bringen, einige davon anzufordern.
WFIW, diese Antwort ist jetzt veraltet, sowohl Cortex-M0 als auch Cortex-M3 sind verfügbar, und einige Teile des Produkts stehen Nicht-Studenten/Institutionen offen.

Sehen Sie sich diesen ARM-Core auf OpenCores an.

Aber seien Sie gewarnt: Solche Neuimplementierungen werden von ARM lediglich toleriert: eetimes.com/author.asp?section_id=36&doc_id=1287452 , Sie werden eine Unterlassungserklärung / Klage davon entfernt sein. Ziehen Sie auch Open Archs wie RISC-V in Betracht.

Der ARM Cortex-M1 (wahrscheinlich der einfachste der ARM-Prozessoren) ist der erste ARM-Prozessor, der speziell für die Implementierung als Softprozessor in FPGAs entwickelt wurde. Es ist für die folgenden FPGA-Typen optimiert :

Actel (M1 ProASIC3 and M1 Fusion)
Altera (Cyclone-II, Stratix-III)
Xilinx (Spartan-3, Virtex-5)

ARM selbst stellt ein Cortex-M1-Entwicklungskit für Altera Cyclone III her, obwohl es mit 625 US-Dollar von DigiKey etwas teuer ist . Sie erhalten jedoch das gesamte ARM Cortex-M1-IP und eine Lizenz für die Entwicklung (plus eine kostenlose Lizenzgebühr für 1000 Boards für diejenigen, die in Produktion gehen, ziemlich cool).

Es gibt möglicherweise einige Optionen, um das IP selbst zu erhalten (vielleicht haben sie ein akademisches Programm, jemand anderes erwähnte ein Universitätsprogramm, aber das war für das M0). Dann könnten Sie ein Entwicklungsboard separat kaufen.

Hier sind einige weitere Informationen über den ARM Cortex-M1 auf Altera .

Hier sind einige Informationen zum Anbringen eines ARM Cortex-M1 auf einem Actel FPGA.

Inzwischen besteht Interesse an anderen Versionen des ARM Cortex auf FPGA; Hier ist ein Artikel von jemandem, der einen ARM Cortex-M0 auf einem Xilinx FPGA implementiert hat.

Wenn Sie das Design ändern möchten, versuchen Sie, eine "richtige" 32-Bit-Maschine zu erstellen. Derzeit liest der ARM 32-Bit-Befehle 8 Bits gleichzeitig, was bedeutet, dass der PC bei jedem Befehlsabruf um 4 erhöht.

Sie können jetzt über das DesignStart-Programm von ARM auf den Cortex-M3-Prozessor (und ein erweiterbares AHB/APB-Subsystem) zugreifen.

Die Eval-Option stellt ein FPGA-Target bereit (Simulation wird unterstützt, mit verschleiertem RTL des Kerns, alles andere in Verilog). Dies zielt derzeit auf das ARM MPS2+ FPGA mit mbed-Unterstützung ab.

Die Pro-Version (nur für Unternehmen/Universitäten verfügbar, die eine Lizenz unterzeichnen können) ermöglicht die Herstellung und enthält den Prozessorkern in Verilog (dies umfasst sowohl Cortex-M0 als auch Cortex-M3).