Es gibt ja z.B. bei der i386-Architektur einige Probleme durch Bugs in den Przessoren, die vom Compiler umgangen werdne müssen. Ist das bei AVR und ARM auch so, oder weisen diese durch die einfachere Architektur keine größeren Fehler auf. Werden eventuell gefundene Fehler durch einzelne Revisionen korrigiert, oder werden Compiler-Workarounds eingesetzt? Vielen Dank schonmal für Eure Hilfe!
Hast du schon einmal Errata Sheets gesehen? Hier sind diese Bugs dokumentiert und meistens auch ein Lösung wie man diese Bugs dann umgehen kann.
Ja ich habe sie angeguckt. Ich meinte eher wie die Bugs in diesen Architekturen gehandhabt werden, also sind in den Compilern Workarounds eingebaut oder werden die Chips einfach in neuen Revisionen gefixt?
Frag ich mich ja, auf welche Errata du dich beziehst. Gib mal einen Tip, welchen Bug ein Compiler bei AVR berücksichtigen sollte? Wenn beispielsweise ein EEPROM unterhalb 900KHz Takt nicht mehr recht funktioniert oder der ADC in bestimmten Konstellationen Mist baut, was soll der Compiler denn da machen? Gleiche Frage für die von die erwähnten x86-er übrigens. Unter den diversen Bugs beispielsweise der K8 Prozessoren ist kein einziger dabei, an dem Compiler irgendwas drehen könnte. Systemdesign, BIOS, Betriebssystem ja, aber nicht der Compiler.
Ein berühmter Bug in x86 ist der fdiv-Bug im Pentium, durch den Fließkomma-Divisionen zu fehlerhaften Ergebnissen führen konnten. Es gibt noch eine ganze Reihe anderer Bugs in den Assembler-Instruktionen, die durchaus vom Compiler umgangen werden können. Beim AVR habe ich bisher noch nicht von sowas gehört.
Also die meisten Bugs sind bei ARM und AVR wohl nicht Architektur / Core spezifisch sondern eher in Peripherals oder noch schlechter in analogen Bloecken zu finden. Bei Architektur Bugs koennte evtl. der Compiler was machen aber die gibts kaum noch, AVR und ARM7 sind soweit ich weiss beide seit ca. 10 Jahren auf dem Markt, irgendwann lass mal gut sein mit neuen Bugs. Die Chips basierend auf diesen Architekturen sind zwischen 10 Tagen und 10 Jahren auf dem Markt ;-) Also mit Compilern geht insgesamt wenig, mit studieren der Errata Sheets allerdings ne ganze Menge. Robert
Mit dem FDIV-Bug bin ich durchaus vertraut. Allergings hat der nicht so sehr bei den Compilerherstellern für Aktivität gesorgt, als vielmehr bei Intel. Und hat ein für alle Mal mit der unseligen Tradition gebrochen, diese Errata Sheets nur gegen Maulkorb NDA rauszurücken. Generell gilt bei x86, dass alles was Anwendungsprogramme betrifft, Sache des Prozessorherstellers und ggf. des Betriebssystems ist, nicht des Compilers. "Es gibt noch eine ganze Reihe anderer Bugs in den Assembler-Instruktionen, die durchaus vom Compiler umgangen werden können." Beispiel aus neuerer Zeit? Den letzten dieser Art fand ich beim K6, bei dem der Beschreibung nach die fehlerhafte Konstellation vermieden werden kann. Indes schrieb AMD trotzdem "Workaround none", fand also diese Vorstellung nicht so prickelnd. Was AVR angeht, oder auch ARM: Sonderlich komplex sind die Cores diese Teile ja nicht und der ARM7-Core ist auf dem Weg über technisch sehr ähnliche ältere ARM-Cores im Wesentlichen bald 2 Jahrzehnte alt. Die x86-Bugs, die öfter mal Programme ausser Tritt bringen konnten, sind auch eher in den komplexeren Teilen angesiedelt (ebd. Divider, Branch Target Cache [K6, der war weitaus ärgerlicher als FDIV], Caches/TLBs, SMP-Support, usw.).
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.