Simulatoren vu Computersystemer: e vertraute Vollplattformsimulator an onbekannt Auer an Spuren

Am zweeten Deel vum Artikel iwwer Computersystemsimulatoren wäert ech weider an enger einfacher Aféierungsform iwwer Computersimulatoren schwätzen, nämlech iwwer d'Vollplattform Simulatioun, déi den duerchschnëttleche Benotzer am meeschten begéint, wéi och iwwer d'Auer-vun -Auer Modell a Spuren, déi méi heefeg an Entwéckler Kreeser sinn.

Simulatoren vu Computersystemer: e vertraute Vollplattformsimulator an onbekannt Auer an Spuren

В éischten Deel Ech hu geschwat iwwer wat Simulatoren am Allgemengen sinn, wéi och iwwer d'Niveaue vun der Simulatioun. Elo, baséiert op deem Wëssen, proposéieren ech e bësse méi déif ze dauchen an iwwer Vollplattform Simulatioun ze schwätzen, wéi d'Spure sammelen, wat se spéider mat hinnen ze maachen, wéi och iwwer Auer-fir-Auer mikroarchitektural Emulatioun.

Voll Plattform Simulator, oder "Eleng am Feld ass kee Krieger"

Wann Dir d'Operatioun vun engem spezifeschen Apparat studéiere wëllt, zum Beispill eng Netzwierkkaart, oder Firmware oder Chauffer fir dësen Apparat schreiwen, da kann esou en Apparat getrennt simuléiert ginn. Wéi och ëmmer, et isoléiert vum Rescht vun der Infrastruktur ze benotzen ass net ganz bequem. Fir de entspriechende Chauffer ze lafen, braucht Dir en zentrale Prozessor, Erënnerung, Zougang zu engem Datebus etc. Zousätzlech erfuerdert de Chauffer e Betribssystem (OS) an e Netzwierkstack fir ze funktionéieren. Zousätzlech kann e separaten Paketgenerator an Äntwertserver erfuerderlech sinn.

E Vollplattform Simulator erstellt en Ëmfeld fir e komplette Softwarestack ze lafen, deen alles aus dem BIOS an dem Bootloader bis zum OS selwer a seng verschidden Ënnersystemer enthält, sou wéi deeselwechten Netzwierkstack, Chauffeuren a Benotzerniveau Uwendungen. Fir dëst ze maachen, implementéiert et Software Modeller vun de meeschte Computerapparater: Prozessor a Gedächtnis, Disk, Input / Output Geräter (Tastatur, Maus, Display), souwéi déiselwecht Netzwierkkaart.

Drënner ass e Blockdiagramm vum x58 Chipsatz vun Intel. E Vollplattform Computersimulator op dësem Chipsatz erfuerdert d'Ëmsetzung vun de meeschte vun den opgezielten Apparater, och déi am IOH (Input/Output Hub) an ICH (Input/Output Controller Hub), déi net am Detail am Blockdiagramm duergestallt sinn. . Obwuel, wéi d'Praxis weist, sinn et net vill Apparater déi net vun der Software benotzt ginn déi mir lafen. Modeller vun esou Geräter mussen net erstallt ginn.

Simulatoren vu Computersystemer: e vertraute Vollplattformsimulator an onbekannt Auer an Spuren

Déi meescht Oft sinn Vollplattform Simulatoren um Prozessorinstruktiounsniveau ëmgesat (ISA, kuckt hei ënnen). virdrun Artikel). Dëst erlaabt Iech de Simulator selwer relativ séier a preiswert ze erstellen. Den ISA-Niveau ass och gutt, well e méi oder manner konstant bleift, am Géigesaz zum Beispill dem API/ABI-Niveau, dee méi dacks ännert. Zousätzlech erlaabt d'Implementatioun um Instruktiounsniveau Iech sougenannt onverännert binär Software auszeféieren, dat heescht, scho kompiléiert Code ouni Ännerunge lafen, genau sou wéi et op real Hardware benotzt gëtt. An anere Wierder, Dir kënnt eng Kopie ("Dump") vun Ärer Festplack maachen, et als Bild fir e Modell an engem Vollplattform Simulator spezifizéieren, a voila! - D'OS an aner Programmer ginn am Simulator gelueden ouni zousätzlech Aktiounen.

Simulator Leeschtung

Simulatoren vu Computersystemer: e vertraute Vollplattformsimulator an onbekannt Auer an Spuren

Wéi schonn uewen ernimmt, ass de Prozess vun Simulatioun de ganze System, dat ass, all seng Apparater, eng zimlech lues Entreprise. Wann Dir och all dëst op engem ganz detailléierte Niveau ëmsetzen, zum Beispill, mikroarchitektonesch oder logesch, da gëtt d'Ausféierung extrem lues. Awer den Instruktiounsniveau ass eng passend Wiel an erlaabt dem OS a Programmer mat Geschwindegkeeten auszeféieren, déi genuch sinn fir de Benotzer bequem mat hinnen ze interagéieren.

Hei wier et ubruecht d'Thema vun der Simulatorleistung ze beréieren. Et gëtt normalerweis an IPS (Instruktioune pro Sekonn) gemooss, méi präzis a MIPS (Milliounen IPS), dat heescht d'Zuel vun de Prozessorinstruktiounen, déi vum Simulator an enger Sekonn ausgefouert ginn. Zur selwechter Zäit hänkt d'Geschwindegkeet vun der Simulatioun och vun der Leeschtung vum System of, op deem d'Simulatioun selwer leeft. Dofir kann et méi korrekt sinn iwwer de "Slowdown" vum Simulator am Verglach zum Original System ze schwätzen.

Déi meescht üblech Vollplattform Simulatoren um Maart, wéi QEMU, VirtualBox oder VmWare Workstation, hu gutt Leeschtung. Et kann de Benotzer net emol bemierken datt d'Aarbecht am Simulator leeft. Dëst geschitt dank de spezielle Virtualiséierungsfäegkeeten, déi a Prozessoren ëmgesat ginn, binär Iwwersetzungsalgorithmen an aner interessant Saachen. Dëst ass alles en Thema fir en getrennten Artikel, awer kuerz, Virtualiséierung ass eng Hardware Feature vu modernen Prozessoren, déi Simulatoren erlaabt d'Instruktioune net ze simuléieren, awer se fir d'Ausféierung direkt un e richtege Prozessor ze schécken, wann natierlech d'Architekturen vun de Simulator an de Prozessor sinn ähnlech. Binär Iwwersetzung ass d'Iwwersetzung vum Gaaschtmaschinncode an den Hostcode a spéider Ausféierung op engem richtege Prozessor. Als Resultat ass d'Simulatioun nëmme liicht méi lues, 5-10 Mol, a leeft dacks souguer mat der selwechter Geschwindegkeet wéi de richtege System. Och wann dëst vu ville Faktoren beaflosst gëtt. Zum Beispill, wa mir e System mat e puer Dutzend Prozessoren simuléiere wëllen, da fällt d'Geschwindegkeet direkt vun dësen e puer Dutzend Mol erof. Op der anerer Säit ënnerstëtzen Simulatoren wéi Simics an de leschten Versiounen Multiprocessor Host-Hardware an effektiv paralleliséiert déi simuléiert Cores op d'Käre vun engem richtege Prozessor.

Wa mir iwwer d'Geschwindegkeet vun der mikroarchitektonescher Simulatioun schwätzen, ass et normalerweis e puer Uerderen vun der Gréisst, ongeféier 1000-10000 Mol méi lues wéi d'Ausféierung op engem normale Computer, ouni Simulatioun. An Implementatioune um Niveau vu logeschen Elementer si méi lues duerch e puer Uerderen vun der Gréisst. Dofir gëtt en FPGA als Emulator op dësem Niveau benotzt, wat d'Performance wesentlech erhéijen kann.

D'Grafik hei ënnen weist eng geschätzte Ofhängegkeet vun der Simulatiounsgeschwindegkeet op Modelldetailer.

Simulatoren vu Computersystemer: e vertraute Vollplattformsimulator an onbekannt Auer an Spuren

Beat-by-Beat Simulatioun

Trotz hirer gerénger Ausféierungsgeschwindegkeet sinn mikroarchitektonesch Simulatoren zimlech heefeg. Simulatioun vun den internen Blocks vum Prozessor ass noutwendeg fir d'Ausféierungszäit vun all Instruktioun präzis ze simuléieren. Mëssverständnis kann hei entstoen - no all, et schéngt, firwat net einfach d'Ausféierungszäit fir all Instruktioun programméieren. Awer sou e Simulator wäert ganz ongenau sinn, well d'Ausféierungszäit vun der selweschter Instruktioun ka vu Ruff zu Uruff ënnerscheeden.

Dat einfachst Beispill ass eng Erënnerung Zougangsinstruktioun. Wann déi ugefrote Erënnerungsplaz am Cache verfügbar ass, da wäert d'Ausféierungszäit minimal sinn. Wann dës Informatioun net am Cache ass ("Cache Miss"), da wäert dëst d'Ausféierungszäit vun der Instruktioun staark erhéijen. Also ass e Cache Modell erfuerderlech fir eng korrekt Simulatioun. Allerdéngs ass d'Matière net limitéiert op de Cache Modell. De Prozessor wäert net einfach waarden op Daten aus der Erënnerung zréckgezunn wann se net am Cache sinn. Amplaz fänkt et un déi nächst Instruktiounen auszeféieren, déi auswielen déi net vum Resultat vum Liesen aus der Erënnerung hänken. Dëst ass déi sougenannt "aus Uerdnung" Ausféierung (OOO, Ausféierung vun der Uerdnung), déi néideg ass fir d'Idle Zäit vum Prozessor ze minimiséieren. D'Modellering vun de entspriechende Prozessorblocken hëlleft dëst alles ze berücksichtegen wann Dir d'Ausféierungszäit vun den Instruktiounen berechnen. Ënnert dësen Instruktiounen, ausgeführt wärend d'Resultat vum Liesen aus der Erënnerung gewaart gëtt, kann eng bedingte Sprangoperatioun optrieden. Wann d'Resultat vun der Bedingung am Moment onbekannt ass, da stoppt de Prozessor nach eng Kéier d'Ausféierung net, awer mécht e "Guess", mécht déi entspriechend Branche a féiert weider proaktiv Instruktioune vum Iwwergangspunkt aus. Sou e Block, deen e Brancheprädiktor genannt gëtt, muss och am mikroarchitektonesche Simulator ëmgesat ginn.

D'Bild hei ënnen weist d'Haaptblocken vum Prozessor, et ass net néideg ze wëssen, et gëtt nëmmen gewisen fir d'Komplexitéit vun der mikroarchitektonescher Implementatioun ze weisen.

Simulatoren vu Computersystemer: e vertraute Vollplattformsimulator an onbekannt Auer an Spuren

D'Operatioun vun all dëse Blocken an engem richtege Prozessor gëtt mat speziellen Auersignaler synchroniséiert, an datselwecht geschitt am Modell. Sou e mikroarchitektonesche Simulator gëtt Zykluspräzis genannt. Säin Haaptzweck ass d'Performance vum entwéckelte Prozessor genau virauszesoen an / oder d'Ausféierungszäit vun engem spezifesche Programm ze berechnen, zum Beispill e Benchmark. Wann d'Wäerter manner wéi néideg sinn, da wäert et néideg sinn d'Algorithmen a Prozessorblocken z'änneren oder de Programm ze optimiséieren.

Wéi uewen gewisen, ass d'Auer-fir-Auer Simulatioun ganz lues, sou datt se nëmme benotzt gëtt wann Dir bestëmmte Momenter vun der Operatioun vum Programm studéiert, wou et néideg ass fir d'real Geschwindegkeet vun der Ausféierung vum Programm erauszefannen an d'Zukunft Leeschtung vum Apparat ze evaluéieren. Prototyp gëtt simuléiert.

An dësem Fall gëtt e funktionnelle Simulator benotzt fir déi verbleiwen Laafzäit vum Programm ze simuléieren. Wéi geschitt dës Kombinatioun vu Gebrauch an der Realitéit? Als éischt gëtt de funktionnelle Simulator lancéiert, op deem d'OS an alles wat néideg ass fir de Programm ze studéieren, gelueden ass. Iwwerhaapt si mir net un der OS selwer interesséiert, an och net an den initialen Etappe vum Start vum Programm, seng Konfiguratioun, asw. Mir kënnen awer och dës Deeler net iwwersprangen an direkt weidergoen fir de Programm vun der Mëtt auszeféieren. Dofir sinn all dës virleefeg Schrëtt op engem funktionnelle Simulator lafen. Nodeems de Programm bis zum Moment vum Interessi fir eis ausgefouert gouf, sinn zwou Méiglechkeeten méiglech. Dir kënnt de Modell mat engem Auer-vun-Zyklus Modell ersetzen a weider Ausféierung. De Simulatiounsmodus deen ausführbare Code benotzt (dat ass, reegelméisseg kompiléiert Programmdateien) gëtt Ausféierungsgedriwwen Simulatioun genannt. Dëst ass déi allgemeng Simulatiounsoptioun. Eng aner Approche ass och méiglech - Spuergedriwwe Simulatioun.

Trace-baséiert Simulatioun

Et besteet aus zwee Schrëtt. Mat engem funktionnellen Simulator oder op engem richtege System gëtt e Log vu Programmaktiounen gesammelt an an eng Datei geschriwwen. Dëse Log gëtt eng Spuer genannt. Ofhängeg vun deem wat iwwerpréift gëtt, kann d'Spuer ausführbar Instruktiounen, Erënnerungsadressen, Portnummeren an Ënnerbriechungsinformatioun enthalen.

De nächste Schrëtt ass d'Spuer ze "spillen", wann de Clock-by-Auer Simulator d'Spuer liest an all d'Instruktiounen ausféiert. Um Enn kréie mir d'Ausféierungszäit vun dësem Stéck vum Programm, souwéi verschidde Charakteristike vun dësem Prozess, zum Beispill de Prozentsaz vun Hits am Cache.

Eng wichteg Feature fir mat Spueren ze schaffen ass Determinismus, dat ass, andeems Dir d'Simulatioun op déi uewe beschriwwen Manéier leeft, ëmmer erëm reproduzéiere mir déiselwecht Sequenz vun Aktiounen. Dëst mécht et méiglech, andeems Dir Modellparameter (Cache, Puffer a Schlaanggréissten) verännert a verschidde intern Algorithmen benotzt oder se ofstëmmt, ze studéieren wéi e bestëmmte Parameter d'Systemleistung beaflosst a wéi eng Optioun déi bescht Resultater gëtt. All dëst kann mat engem Prototyp Apparat Modell gemaach ginn ier Dir en aktuellen Hardware Prototyp erstellt.

D'Komplexitéit vun dëser Approche läit an der Bedierfnes fir d'éischt d'Applikatioun auszeféieren an d'Spuer ze sammelen, wéi och déi grouss Gréisst vun der Spuerdatei. D'Virdeeler enthalen d'Tatsaach datt et genuch ass nëmmen den Deel vum Apparat oder der Plattform vun Interesse ze simuléieren, während Simulatioun duerch Ausféierung normalerweis e komplette Modell erfuerdert.

Also, an dësem Artikel hu mir d'Features vun der Vollplattform Simulatioun gekuckt, iwwer d'Geschwindegkeet vun den Implementatiounen op verschiddenen Niveauen geschwat, d'Auer-vun-Zyklus Simulatioun a Spuren. Am nächsten Artikel wäert ech d'Haaptszenarie beschreiwen fir Simulatoren ze benotzen, souwuel fir perséinlech Zwecker wéi och aus enger Entwécklungssiicht a grousse Firmen.

Source: will.com

Setzt e Commentaire