Din cauza timpului liber peste masura am zis sa scriu un tutorial dedicat celor interesati de arhitectura unui sistem sistem de calcul (ceea ce avem fiecare home user). Ce este mai exact un sistem de calcul : e un dispozitiv care lucreaza automat sub controlul unuiu program memorat , prelucrand date in vederea producerii unor rezultate ca efect al procesarii. Ar fi mai intai bine de notat functiile de baza ale unui SC , acestea fiind : procesarea de date , memorarea de date , transferul de informatii si controlul asupra tuturor componentelor SC. Structura sistemului de calcul este - hardware - partea de achipamente : unitatea centrala de procesare , memoria , dispozitive periferice (cdrom) ,etc - software - partea de programe : soft sistem(aplicatziile destinate SC-ului si SO-ului(Sistem Operation) , si soft utilizator(restul programelor) -firmware - partea de microprograme Nu stau sa explic ce e ala HDD , FDD etc, ci o sa trec direct la explicare procesarii informatiei Arhitectura (organizarea) unui SC se refera la acele atribute ale sistemului care sunt vizibile programatorului si nu au un impact direct asupra executiei unui program: setul de instructiuni masina , caracteristicile de reprezentare a datelor , modurile de adresare si sistemul de intrare/iesire(I/O). Din punct de vedere organizatoric , componentele unui SC sunt : - modulul de control - calea de date - memoria - sistemul I/O(input / output) - structuri de interconectare a componentelor Multzimea instructiunilor masina (Instruction Set Arhitecture - ISA , nu e slotu pentru placa sunet sau retea ala mare de langa PCI ) este de fapt o interfatza cheie intre nivelele de abstractizare , fiind interfatza dintre hard si soft-ul de nivel scazut (low level software). O astfel de interfatza permite uhnor implementari diferite ale SC sa ruleze un soft identic , in caz in care vorbim despre calculatoare compatibile , spre ex : calc compatibile IBM-PC nu au acelasi hardware dar raspund aceleiasi ISA). Ce defineste ISA ? ca sa intelegem mai exact ce si cum - organizarea SC , modul de stocare a informatiei(registri , memorie) - tipurile si structurile de date(codificari ,reprezentari) - formatul instructiunilor - setul de instriuctiuni pe care microprocesorul le poate efectua - conditiile de exceptie(accesarea locurilor din memorie inexistente , interuperile speciale , sau cum e in c++ (pt care se pricepe mai bine) throw si caught tratarea unei exceptzii , a unei erori , etc Mai precis organizarea unei masini se refera la - implementarea , capacitatea si performantza unitatilor functionale - interconexiunile dinte aceste unitatzi - fluxul de informatie dintre unitatzi - controlul acestui flux Asa ca fapt divers si e bine de stiut ca in prezent o mare parte din calculatoare sunt construite pe baza arhitecturii Neumann. Cateva caracteristici ale acestei arhitecturi Neumann sa enumar : - datele si instructiunile sunt reprezentate ca siruri de bitzi si sunt stocate intr-o memorie read/write. - continutul memoriei se poate accesa in functie de locatie(adresa) , indiferent de tipul inf continute - executia unui set de instructiuni se efectueaza secvential , prin citirea de instructiuni consecutive din memorie Unitatea centrala ( central processing unit - cpu) ; procesorul controleaza modul de operare al calculatorului si executa functiile de procesare ale datelor. Aceste functii ale CPU ar cam fi urmatoarele - obtinerea de instructiuni care trebuiesc executate - obtinerea datelor necesare instructiunilor - procesarea datelor - furnizarea rezultatelor obtinute La nivelu procesorului putem defini doua componente : Unitatea artmetica-Logica(ALU) , Unitatea de comanda si control(UCC) Pentru indeplinirea functiilor ce le-am enumerat mai sus procesorul are nevoie de registri si magistrale interne CPU. Ce sunt registri ?! cei de procesor zic ; bon , sa vedem .. Acesti registri sunt dispozitive de stocare temporara a datelor si informatiilor de control, de capacitate mica dar o viteza foarte mare , functioneaza ca o memorie cache. Ca sa fac o paranteza , sincer la un calculator Pentium 3 procesor 500mhz avea o viteza de 170 MB/s daca mai retzin bine. in fine , sa trecem mai departe cu explicare celor doua componente ale procesorului. Unitatea Aritmetica-Logica executa operatii ARITMETICE si LOGICE asupra datelor. UCC (Unitatea de comanda si control) este componenta CPU care dirijeaza toate componentele SC si catre magistrala sistem, sau capteaza semnale dinspre magistrala acestora. PEntru executia unei instructiuni , acesa si datele necesare trebuie aduse din memoria secundara sau de la un dispozitiv de intrare in memoria principala. CU coordoneaza cilclul de executie al instructiunii: - citirea instructiunii din memoria principala(FETCH) - decodificarea acesteia(DECODE) - obtinerea operanzilor necesarii instrunctiunii(READ MEMORY) - executia ei(EXECUTE, si daca e cazul ALU primeste controlul pt efectuarea oepratiei aritmetice sau logice implicate) - si in final furnizarea rezultatelor in registri sau memorie(STORE) Sa vedem cum sta treaba cu ceasul de sistem(The System Clock) ca tot il folosim zilnic Fiecare CPU are un ceas intern care produce si trimite semnale electrice pe magistrala de control pt a sincroniza operatiile sistemului. Semnalele alterneaza valori 0 si 1 cu o anumita frecventa numita frecventa ceasului de sistem. Timpul necesartrecerii din starea 0 in 1 si inapoi in 0 se numeste perioada ceasului sau ciclu de ceas(clock cycle). Ca observatie e bine de stiut : 1 Hz = 1 ciclu de ceas/secunda , frecventa = 1 / perioada. Toate operatiilor efectuate de microprocesor sunt sincronizate cu ceasul sistem. Asta inseamna ca procesorul nu poate efectua operatii mai rapid decat frecventa de tact a ceasului. Sa luam exemplu un procesor cu o viteza de ceas de 200 Mhz are un ceas intern care e capabil sa ticaie exact de 200.000.000 ori pe secunda , mult nu ? , deci un ciclu de ceas pt un astfel de procesor are o durata de 1 / 200.000.000 secunde O simpla instructiuni asm : mov destinatie , sursa se executa intre 2 si 14 cicluri de ceas procesor in functie de natura argumentelor destinatie si sursa , care pot fi : registri generali , registri de segment , constante , adrese de memorie. De-a lungu timpului , o problema serioasa a fost masurarea vitezei calculatoarelor , nah si cum s-a facut asta oare? Initial s-a pornit cu frecventa de ceas a CPU. S-a dovedit rapid a fi o masura neadecvata , ca astfel ajungeam sa masuram doua procesoare unul de 1 GHz si unul de 500 MHz si sa spunem ca ele pot rezolva o problema in acelasi timp sau puterea procesorului de 500 MHz poate fi mai mare decat a celui de 1 GHz. Capacitatea maxima de memorie pe care o poate adresa un procesor e de 1 MB la PC-uri. S-a introdus pentru masurarea vitezei calculatoarelor , notziunea MIPS (Millions of Instructions per Second) care nu mai depinde de ciclul de ceas. Aceasta masoara numarul de instructiunipe care le poate executa un procesor intr-o secunda. Mai este o derivata MFLOPS(Million of Floating-Point Instructions per second) reprezinta numarul de instructiuni in virgula flotanta(cum zic deseori programatorii) pe care un procesor le poate executa in unitatea de timp. Care e faza cu dimensiunea unui microprocesor , sau un calculator pe N bitzi , ca tot vedem placi video pe 64 bitzi pe 128 bitzi etc. Exista aici doua perspective la calculatoare. Una ar fi cea hardware , dimensiunea magistralei de date( de ex Pentium are o magistrala de date pe 64 bitzi = 64 linii de date , astfel ca la fiecare "memory cycle" procesorul poate accesa 8 octetzi din memorie) ( 1 octet = 1 kiloBye = 8 Kilobitzi doar ca informare dar cred ca asta se stie ). Si ar mai fi perspectiva soft : dimensiunea unui cuvant de memorie(dimensiunea registrilor CPU) Sa vedem cum e cu memoria..dooh E un dispozitiv de stocare al datelor pt un anumit interval de timp. Aici sunt multe criterii de clasificare a tipurilor de memorie ..e util sa le stim ca si cultura generala. Deci ar fi A) din punct de vedere al accesarii datelor A.1 memorie cu access aleator adica Random access Memory , locatziile pot fi accesat in orice ordine, ex orice chip de memorie (memorie on-chip) , precum memoria principala(DRAM, SRAM), memoria flash , etc A.2 memorie cu access asociativ , memorie cache A.3 memorie cu access secvential : pentru a accesa a n-a inregistrare trebuie parcurse n-1 inregistrari , ex benzile magnetice sau casetele alea de la casetofon simplu. A.4 memorie cu access direct : spre deosebire de accesul secvential , pozitionarea pe o anumita inregistrare se face in mod direct pe baza unui sistem de calcul de adresa. Ex : dispozitive de tip disc (hdd,floppydisk,cd-rom) alea alea Ar fi o categorie din punctul de vedere al volatilitatii B.1 memorie volatila ( de scurta durata) dupa ce scotzi sursa de la curent se pierde continutul, ex memoria principala SC care cotine datele si instructiunile unilizate curent de CPU. B.2 memorie non-volatila ( de lunga durata) - harddisk , cd-rom etc Ar mai fi C) din punctu de vedere al accesului de castre CPU C.1 memorie interna: accesata direct de catre CPU C.2 memorie secundara sau dispozitiv de stocare al datelor : hdd , fdd(floppy disk device) Si ar mai fi ultima D) din punctul de vedere al tipurilor de acces permise D.1 memorie read/write ex hard disk fdd D.2 memorie readonly doar citirea datelor , CD-rom Memoria principala (interna) cunoscuta sub numele de RAM reprezinta toate spatiile de stocare de date accesibile CPU fara folosirea canalelor I/O. In general capacitatea acestei memorii este intre 1 MB si 4 GB. Exista diferite tipuri de memorie principala , nu are rost sa stai sa le explic ci doar enumar cateva : DRAM(Dynamic RAM) , SRAM(Static RAM). Memoria SRAM e mai putin densa decat DRAM , de obicei raportul de capacitate DRAM/SRAM = 4-8 ; raportul de cost si timp de access SRAM/DRAM=8-16. Memoria secundara e reprezentata de dispozitivele precum Hard Disk Floppy Disk etc. Structura unui HDD ar fi bine stiuta , asa pe scurt. O metoda de adresare a informatiilor de pe disc in general este CHS(cylinde-head-sector). Discurile din HDD sunt organizate pe un cilintru , ele avand fetze , si pe fetze are piste circulare. Portziunile de o anumita marime din aceste piste exact cum ar fii o bucata de 100 m dintr-un teren de alergare de 400m se numesc sectoare. La o discheta spre ex ca e mai usor la ea avem urmatoare configuratie : 2 capete de citire / scriere numerotate 0 si 1 , 80 cilintri /disc (numerotati 0-79), 18 sectoare/pista (0-17) , 512 octetzi/sector. Un criteriu de evaluare a performantzei unui disc poate fi calcult dupa formula TimpAccess = TimpCautare + TimpRotire + TimpTransfer, unde TimpCautare depinde de nr de piste peste care trebuie sa se deplaseze capul de accesare si viteza de cautare a discului , TimpRotire e in functie de viteza de rotatie a discului si de distantza dintre sectorul care trebuie accesat si capul de accesare si TimpTransfer depinde de rata de transfer(bandwidth) a datelor. Cam astea ar fi asa cateva puncte de reper in a intelege un calculator heh. mai sunt multe de spus..mai multe pe viitor , now i'm tired and i have no more ideas Sper ca a ajutat cat de cat tutorialul pentru cei interesati ..daca tot am ales sa-l scriu. Bafta numa bine tuturor