Kompüter universal hesablama maşını kimi

Nasir Nasirli
Pragmatech
Published in
4 min readAug 2, 2020

Bu məqalədə real problemin elektronların köməyi ilə necə həll olunduğunu izah etməyə çalışacağam.

Kompüter haqqında iki əsas məsələni əvvəlcədən bilmək vacibdir. İstənilən kompüter, istər superkompüter olsun, istər smartfon olsun, kifayət qədər vaxt və yaddaş verildiyi halda istənilən problemi həll etmək gücündədir. Amma hansı problemə hansı kompüterin seçilməsi biz insanların işidir. Məsələn, peyk məlumatlarını smartfonla analiz edib sabahkı hava proqnozunu 50 ilə verə bilərik, amma superkompüter bunu 10 dəqiqəyə edəcək. Bütün kompüterlər eyni arxitekturaya malikdir və eyni cür işləyirlər. İkinci məsələ isə həll edəcəyimiz problemi insan dilində ifadə etmək, onu kompüterin başa düşəcəyi elektrik gərginliyinə çevirmək lazımdır. Bütün bu məsələlər son 50 ildə dahi insanlar tərəfindən kəşf və ixtira olunub, işin çətin hissəsi görülüb. Necə işlədiyini anlamaq isə asan işdir.

NASA-nın “Apollo” missiyasını idarə edən kompüter. Hazırkı smartfonlar bu kompüterdən min dəfələrlə güclüdür.

Biz problemdən elektrona gedən yolun nə olduğuna baxaq.

  1. Problem
  2. Alqoritmlər
  3. Proqramlaşdırma dili
  4. Maşın arxitekturası(ISA)
  5. Mikroarxitektura
  6. Elektrik dövrələri
  7. Tranzistorlar

Kompüterdən nə istədiyimizdən qabaq problemin nə olduğunu bilmək lazımdır. İnsan dili kifayət qədər çətindir, frazeoloji birləşmələrlə doludur. Məsələn, mən mikrokontrollerə desəm ki, “qazın borunun bu hissəsində təzyiqini azaltmaq lazımdır”, mikrokontrollerdən təxmini belə cavab gələcək: “qazı yolub bacalaşdırmaq daha yaxşı həll yoludur”. Əslində biz insan dilinin çətin olduğunu bilərək problemi çox xırda hissələrə bölməli, onu daha yaxşı təsvir etməliyik.

Alqortim isə yaxşı izah olunmuş problemin maşın dilinə tərcüməsində ilk addımdır. Alqoritm - sonlanması mümkün olan və problemin həllinə aparan addım-addım edilən prosedurlardır. Alqoritmlərin 3 əsas xassəsi vardır:

Dəqiqlik. Addım o qədər dəqiq ifadə olunmalıdır ki, kompüterin başqa iş etməsi mümkün olmasın. Məsələn, “elə et ki, nəticədə 5 alınsın” kim yox, “1 və 4-dən elə istifadə et ki, nəticədə 5 alınsın”. Cəm işarəsi istifadə etməkdən başqa variant yoxdur.

Effektiv hesablanma. Hər bir hesablamanın effektivliyi nəzərə alınmalıdır. Məsələn, kompüterə ən böyük sadə ədədi tapmaq tapşırığı vermək düzgün deyil. Ən böyük sadə ədədin tapılması mümkün deyil, bu tip tapşırıqlar alqoritm dizaynında yolverilməzdir, boşuna zaman və resursların itkisidir.

Sonluluq. Alqoritmdə mütləq olaraq əvvəl axır addımların sayı bitməlidir, sonsuza qədər davam edə bilməz. Proqramçının əsas vəzifələrindən biri problemin həllinə aparacaq ən az sayda addımları olan alqoritmi seçməkdir.

Heapsort alqoritmi

Növbəti addım isə alqoritmi proqram dilinə çevirməkdir. Bizim işlətdiyimiz proqram dilləri maşının yox, insanların başa düşməsi üçündür. Hazırda mindən çox proqramlaşdırma dilləri mövcuddur. Proqram dillərində insan dilindəki kimi ikimənalılıq yoxdur. Hər bir sətirin, hər bir dəyişənin konkret mənası vardır. Hansı problem üçün hansı proqramlaşdırma dilinin seçilməsi də proqramçının məsuliyyətidir. Əksər dillər “Turing complete”dir, yəni istənilən problemi həll edə bilər, amma zaman və işin effektivliyi baxımından dilin düzgün seçilməsi çox vacibdir. Proqramlaşdırma dilləri yüksək və aşağı səviyyəli olmaqla iki qrupa bölünür. Dil kompüter elementlərinə nə qədər yaxındırsa, o qədər aşağı sayılır. Nə qədər uzaqdadırsa yüksək səviyyə dil sayılır. Aşağı səviyyə dil kompüter arxitekturası üçün spesifikdir, məsələn assembly dili. Yüksək səviyyəli dillər isə arxitekturadan asılı deyil, məsələn, Pythonda yazılmış kod bütün növ kompüterlərdə işləyir.

C dilində yazılmış proqramın həyat tsikli

Növbəti addım proqramı xüsusi əmrlər dəstinə çevirməkdir ki kompüter proqramı işləyə bilsin. Komanda dəsti arxitekturası(instruction set architecture) proqram və kompüter kompenentləri arasında interfeysdir. Komanda dəsti arxitekturası data tipləri, operandlar və ünvanlama rejimləri yığımıdır. Data tipləri, operandlar və ünvanlama rejimləri arxitekturadan asılı olaraq dəyişir və onlarla, yüzlərlə ola bilər. Məsələn, X86 arxitekturası yüzdən çox əməliyyat, ondan çox data tipi, iyirmidən çox ünvanlama rejimindən ibarətdir. Yükək səviyyəli dildən arxitekturanın anlayacağı dilə tərcümə kompilyator vasitəsiylə olunur. Hər arxitekturanın özünün unikal kompilyatoru olur.

Kompüter arxitekturasının sxematik quruluşu

Mikroarxitektura isə arxitekturanın prosessor üçün spesifik düzəlmiş versiyasıdır. Kompüter mühəndisləri elə sistem qurmağa çalışırlar ki, prosessorun performans və qiyməti arasında ortaq məxrəc tapılsın. Mikroarxitektura prosessorun spesifik xüsusiyyətlərini nəzərə alaraq elə qurulur ki, maksimum effektivlik alınsın.

Intel prosessorunun mikroarxitekturası

Elektrik dövrələri dedikdə məntiq qapıları nəzərdə tutulur. Məntiq qapıları tranzistorlardan təşkil olunub. Ən sadə əməliyyatlar bu məntiq qapılarının sadə kombinasiyalarından ibarət olan dövrələrdə həyata keçirilir. XOR, OR, AND, NOT, NAND kimi məntiq qapıları vardır. Bunların içərisində ən vacibi NAND elementidir ki, ancaq bunu istifadə etməklə hesablama sistemini qurmaq mümkündür.

NAND ən vacib məntiq elementi hesab olunur.

Kompüterlərdə istifadə olunan tranzistorlar CMOS transiztorlarıdır. CMOS p və n tip MOSFET-lərin kombinasiyasından yaranır, demək olar ki, bütün rəqəmsal məntiq bu kombinasiyanın məhsuludur.

CMOS inversləyici. Şəkildə bir ədəd p və bir ədəd n tip MOSFET-i görə bilərsiniz.

Yekunda onu qeyd edim ki, əgər biz elektron dilində danışa bilsəydik bizə kompüter lazım olmayacaqdı. Kompüter insan və elektron dili arasında tərcüməçidir.

--

--