Kapitulli 2 – Instruksionet dhe mënyrat e adresimit

Këto janë temat që trajtohen në këtë kapitull:

– Makinat virtuale

– Struktura e instruksioneve

– Makinat me zero,një, dy dhe tre adresa. Arkitektura Load/Store

– Mënyrat e adresimit

– Klasifikimi i instruksioneve

– Procesoret RISC/CISC dhe krahasimi i tyre

Ky kapitull i dedikohet pra tërësisht ISA (Instruction Set Architecture)

Perkufizimi i "Computer Architecture" sipas artikullit Architecture of IBM System/360

Computer Architecture definition definition sipas Amdahl etc.

….pjesë nga leksioni…

Ne kete kapitull trajtohen vetem ato instruksione qe mund te ekzekutohen ose interpretohen drejtperdrejt nga hardware i nen-sistemit qendror. Prandaj, per t’i dalluar ato nga instruksionet e gjuheve te zhvilluara si BASIC, COBOL, C, LISP, PASCAL, etj keto instruksione do ti quajme instruksine makine.

Per te sqaruar me mire vendin dhe rolin e ketyre instruksioneve, ne paragrafin e meposhtem te titulluar “Makinat virtuale” do te trajtojme më me detaje kete çeshtje, duke e pare nen nje kendveshtrim me te pergjithshem,  siç eshte strukturimi me shtresa i nje kompjuteri. Kesaj strukture do ti referohemi edhe ne kapitujt e tjere ne vazhdim.

Makinat virtuale

Bashkesia e instruksioneve te ekzekutueshme drejtpersedrejti nga hardware i nje kompjuteri quhet gjuhe makine, te cilen ne simbolikisht do ta shprehim me simbolin L1.

Kur konceptohet nje kompjuter i ri, ne pergjithesi, kerkohet qe instruksonet qe perbejne gjuhen e tij makine te jene sa me te thjeshte me qellim qe te zvogelohet kompleksiteti, pra kostoja, e hardwarit. Kjo natyrisht shoqerohet me nje te mete : gjuha makine te kompjuterëve eshte shume primitive dhe praktikisht e paperdoreshme si gjuhe programimi.

Per te zgjidhur kete problem, konceptohet nje bashkesi tjeter instruksionesh, qe formon gjuhen L2, e cila ne krahasim me gjuhen L1, eshte me e thjeshte dhe praktike per tu perdorur per programin.

Ekzistojne dy metoda per te arritur kete qellim :

n perkthimi ose kompilimi, i cili konsiston ne perftimin e nje programi te ri teresisht te shkruar ne gjuhen L1, qe perftohet nga zevendesimi, “perkthimin” i sejcilit instruksion te L2 me disa instruksine ekuivalente te L1.

n interpretimi, i cili konsiston ne perdorimin e nje programi te veçante (interpretuesi) i shkruajtur teresisht ne gjuhen L1, i afte qe pasi ekzaminon sejcilin instruksion te programit ne gjuhen L2, ekzekuton drejperdrejt sekuencen ekuivalente ne L1.

Shtresëzimi i makinave virtuale

Eshte me interes edhe kjo menyre te menduari : ne vend qe te arsyetojme me terma si kompilim dhe interpretim, eshte me lehte te imagjinojme nje kompjuter hipotetik, gjuha makine e te cilit nuk eshte më L1 por L2. Kemi te bejme me ate qe njihet me termin “makine virtuale” L2.

Me qellim qe si kompilimi ashtu edhe interpretimi te jene ne menyre te aresyeshme te thjeshte duhet qe gjuhet L2 dhe L1 te mos jene shume te ndryshme ndermjet tyre. Kjo do te sjelle domosdoshmerisht qe edhe gjuha L2  te mos jete plotesisht e pershtatshme si gjuhe programimi. Pra, do te jemi te detyruar te percaktojme nje bashkesi te re instruksionesh, qe formojne gjuhen L3, me prane perdorusit final dhe me larg hardwarit se gjuha L2.

Ne kete menyre mund te konceptojme nje seri gjuhesh, sejcila duke qene me praktike ne programim se paraardhesja e saj, deri sa te perftojme nje gjuhe Ln qe te gjykohet e pershtateshme. Sejcila nga keto gjuhe mbeshtetet mbi paraardhesen e saj duke bere qe nje kompjuter te mund te shihet si mbivendosje shtresash ose nivelesh siç eshte paraqitur ne figure.

 Makinat shumeshtresore aktuale

Duke u nisur nga modeli i kompjuterit te mesiperm, le te shohim tani se si paraqitet situata ne realitet. Aktualisht te gjithe kompjuterët kane me shume se dy nivele, ndersa zakonisht ata kane deri ne 6 nivele, sic eshte paraqitur ne figuren e meposhteme.

Makinat virtuale

Te analizojme ne vecanti sejcilin nga nivelet.

Niveli 0, i cili quhet edhe niveli fizik perbehet nga elektonika e kompjuterit qe perfaqesohet nga porta logjike, bistabla, regjistra, kujtesa etj. Pra siç shihet ne kete nivel nuk kemi te bejme fare me programim.

Niveli 1 ose shtresa e mikroprogramimit

Kjo shtrese perfshin te ashtuquajturat “mikroprograme” detyra e te cilave eshte te interpretoje instruksionet e nivelit te dyte.

Ne vitin 1951 anglezi Wilkes hodhi idenë se konceptimi i nje kompjuteri me tre nivele, ne vend te dy te asaj kohe, do te thjeshtonte shume hardwarin. Ky nivel i ri eshte pikerisht niveli i mikroprogramimit. Hardwari i nje kompjuteri te tille, ne vend te programeve ne gjuhe makine, ekzekuton mikroprograme, repertori i instruksineve te te cilave eshte i kufizuar dhe perbehet nga instruksine te thjeshte. Makina te tilla filluan te ndertohen ne vitet ’60, ndersa qe prej viteve ’70 shresa e mikroprogramimit u be dominuese.

Ne kapitujt e tjere do te analizojme ne menyre me te detajuar kete shrese.

Niveli 2 ose shtresa a makines tradicionale

Para se teknologjia e mikroprogramimit te perdorej gjeresisht, kjo shtrese nderfaqesohej drejtperdrejt me hardwar-in e kompjuterit. Pra, kjo shtrese tradicionalisht ka perfshire instruksione te ekzekutueshme drejpersedrejti nga hardware. Perdorimi i teknologjise se mikroprogramimit e ka ndryshur kete situate, pasi tani jane mikroprogramet dhe jo hardware ato qe interpretojne instruksionet e kesaj shtrese. Megjithate keto instruksione vazhdojne te quhen “instruksione makine” dhe ato do te jene objekti i ketij kapitulli.

Bashkesia e instruksioneve te kesaj shtrese perbejne ate qe zakonisht njihet me emrin “seti i instruksioneve” te nje procesori ose kompjuteri, d.m.th. teresia e instruksioneve qe ai eshte ne gjendje te ekzekutoje. Prandaj kjo shtrese quhet edhe ISA, Instruktion Set Architecture.

 Niveli 3 ose shtresa e sistemit operativ

Sherbimet qe ofrohen nga niveli 3 realizohen nepermjet nje interpretuesi, i cili ekzekutohet ne nivelin 2 dhe qe historikisht eshte njohur me emrin sistem shfrytezimi se sistem operativ (Operating System).

Ne perberje te kesaj shtrese gjenden pjesa me e madhe e instruksioneve te nivelit 2, te cilet ne kete rast marrin emrin “instruksione te zakonshem te nivelit 3”. Ndersa instruksionet specifike te kesaj shtrese shpesh ne literature njihen me emrin “system calls” dhe realizojne funksione te rendesishme si :

administrimi i hyrje/daljeve, administrimi i organizimit ose regjistrimit te informacionit ne disk ose shkurt organizimi i skedareve, administrimi i proceseve, administrimi i kujteses, etj.

Analiza e sistemve te shfrytezimit nuk eshte objekti i ketij kursi, por ato do te trajtohen ne kurse te posaçme. Linux, Unix, MacOS, Windows jane disa nga sistemet e shfrytezimit qe perdoren sot.

Niveli 4 ose shtresa e gjuhes asembler

Ekzistojne dy dallime thelbesore ndermjet niveleve 1-3 dhe atyre 4,5 qe jane:

a.  Nivelet 1-3 ekzistojne gjithmone ne formen e interpretuesve, ndersa nivelet 4 dhe 5 e me lart shpesh, por jo gjithmone, realizohen nepermjet kompilatoreve.

b.  Nivelet 1-3 per shkak te natyres dhe kompleksitetit qe paraqesin shkruhen dhe perdoren prej te ashtuquajturve “programues te sistemeve” dhe jane “domene” te tyre, ndersa ato 4 dhe 5 perdoren prej programuesve te aplikacioneve per te zgjidhur nje problem konkret.

Le te vazhdojme tani me trajtimin e e shtreses se gjuhes asembler.

Ne rastin e nje gjuhe asembler te paster çdo instruksion i saj i korrespondon ekzaktesisht nje instruksion ne gjuhe makine. Me fjale te tjera, n.q.s. çdo linje e programit permban nje instruksion ne gjuhe asembler dhe n.q.s. nje instruksion makine shprehet me nje fjale, atehere n linja programi ne asembler do te krijojne nje program ne gjuhe makine prej n fjalesh.

Gjuha asembler preferohet ne vend te asaj makine, per aresye se paraqitja simbolike e instruksioneve dhe adresimi simbolik qe ajo perdor, e bejne ate me te thjeshte per t’u perdorur.

Perveç ketij raporti te ngushte ndermjet instruksioneve ne asembler me instruksionet ne gjuhe makine, nje karakteristike tjeter e rendesishme e gjuheve asembler eshte fakti se nepermjet ketyre gjuheve mund te kapen (te kihet akses) te gjitha karakteristikat e kompjuterit qe programohet, gje e cila nuk eshte e vertete per gjuhet e nivelit me te larte (niveli 5). Shembull : testimi i bitit te kaperderdhjes, testimi i gjendjes se nderprerjeve te kompjuterit (interruptions), etj.

Gjuhet qe perdoren per programimimin e sistemeve shpesh jane hibride : ato kane sintaksen e gjuheve te nivelit te larte dhe instruksione afer gjuhes makine. Shembull tipik eshte gjuha C.

 Niveli 5 ose shtresa e gjuheve te programimit

Ne kete nivel gjenden gjuhet qe perdoren per programimin e aplikacioneve. Keto gjuhe qe njihen me emrin gjuhe te nivelit te larte  jane te shumta, ku nder me te njohurat mund te permendim : COBOL, FORTAN, ADA, APL, PASCAL, C, LISP, JAVA etj.

Ne perfundim te kesaj analize mund te nxjerrim si konkluzion se nje kompjuter mund te konsiderohet si nje teresi shtresash, ku sejcila shtrese permbledh ato para-ardheset. Nje shtrese paraqet nje nivel te caktuar abstraksioni dhe permban objekte te ndryshem dhe operacione mbi keta objekte.

Siç e permendem edhe pak me siper, gjithshka qe do te diskutojme ne kete kapitull ne lidhje me instruksionet, ka te beje vetem me instruksionet e shtreses se dyte (shtresa e makines tradicionale), shkurt ISA.

… vazhdimi në leksion…

Klikoni KETU për plotësime për Kapitullin II.


Komentet janë mbyllur.