Showing posts with label GOO WEI BENG. Show all posts
Showing posts with label GOO WEI BENG. Show all posts

Tuesday, 18 December 2012

LANGUAGE OF THE COMPUTERS : TRANSLATION AND STARTUP



Dalam pengkomputeran, kompilasi just-in-time (JIT), juga dikenali sebagai terjemahan dinamik, adalah satu kaedah untuk meningkatkan prestasi runtime program komputer berdasarkan kod bait (kod mesin maya). Sejak kod bait ditafsirkan ia melaksanakan lebih perlahan daripada kod mesin disusun, melainkan jika ia sebenarnya disusun kepada kod mesin, yang boleh dilakukan sebelum pelaksanaan - membuat program memuatkan perlahan atau semasa pelaksanaan. Dalam kes ini kedua - yang merupakan asas untuk penyusunan JIT - program disimpan dalam ingatan sebagai kod bait, tetapi segmen kod sedang berjalan preparatively dikumpulkan untuk kod mesin fizikal untuk berjalan lebih cepat.
JIT penyusun mewakili pendekatan hibrid, dengan terjemahan yang berlaku secara berterusan, dengan jurubahasa, tetapi dengan caching kod diterjemahkan untuk mengurangkan kemerosotan prestasi. Ia juga menawarkan kelebihan lain lebih kod disusun statik pada masa pembangunan, seperti pengendalian jenis data lewat terikat dan keupayaan untuk menguatkuasakan jaminan keselamatan.
JIT membina atas dua idea awal dalam persekitaran masa jalanan: bytecode pengumpulan dan penyusunan dinamik. Ia menukarkan kod di runtime sebelum melaksanakan ia natively, contohnya bytecode ke dalam kod mesin asli.
Beberapa persekitaran runtime moden, seperti Rangka Kerja Microsoft. BERSIH dan kebanyakan pelaksanaan Jawa, bergantung pada kompilasi JIT untuk kelajuan tinggi pelaksanaan kod.
JIT adalah serasi dengan mprotect ciri Pax dimasukkan dengan Linux kernel patch Grsecurity serta mencegah permohonan memori benar randomisation pada OpenBSD.

Dalam sistem bytecode-disusun, kod sumber diterjemahkan kepada perwakilan perantaraan yang dikenali sebagai bytecode. Bytecode bukan adalah kod mesin bagi mana-mana komputer tertentu, dan mungkin mudah alih di kalangan seni bina komputer. Bytecode kemudian boleh ditafsirkan oleh, atau menjalankan di, mesin maya. Orang yang mengkompilasi JIT membaca bytecodes dalam seksyen banyak (atau sepenuhnya, jarang) dan mengumpulkan mereka dinamik ke dalam bahasa mesin supaya program ini boleh berjalan lebih cepat. Jawa melakukan cek runtime pada pelbagai bahagian kod dan ini adalah sebab keseluruhan kod tidak disusun di sekali.Ini boleh dilakukan per-fail, setiap fungsi atau walaupun pada serpihan mana-mana kod sewenang-wenangnya;. Kod boleh disusun apabila ia adalah kira-kira untuk dilaksanakan (maka nama "just-in-time"), dan kemudian cache dan diguna semula kemudian tanpa perlu recompiled.

Sebaliknya, tradisional ditafsirkan mesin maya hanya akan mentafsir bytecode, secara amnya dengan prestasi yang lebih rendah. Beberapa penterjemah mentafsirkan kod sumber, tanpa langkah pertama menyusun bytecode, dengan prestasi yang lebih buruk lagi. Kod statik disusun atau kod asli disusun sebelum penempatan. Persekitaran kompilasi dinamik adalah salah satu di mana pengkompil boleh digunakan semasa pelaksanaan. Sebagai contoh, yang paling biasa Lisp sistem mempunyai fungsi menyusun yang boleh menyusun fungsi-fungsi baru yang diwujudkan semasa menjalankan. Ini menyediakan banyak kelebihan JIT, tetapi pengaturcara, bukannya runtime, adalah dalam kawalan apa bahagian kod disusun. Ini juga boleh menyusun kod yang dijana secara dinamik, yang boleh, dalam senario banyak, memberikan kelebihan besar prestasi lebih kod disusun statik [petikan diperlukan], serta lebih kebanyakan JIT sistem.
Satu matlamat yang sama menggunakan teknik JIT adalah untuk mencapai atau mengatasi prestasi kompilasi statik, manakala mengekalkan kelebihan tafsiran bytecode: Banyak "mengangkat berat" menghuraikan kod sumber asal dan melaksanakan pengoptimuman asas sering dikendalikan pada masa kompil, sebelum untuk penempatan: kompilasi dari bytecode kepada kod mesin adalah lebih cepat daripada menyusun dari sumber. Bytecode dikerahkan adalah mudah alih, tidak seperti kod asli. Sejak runtime mempunyai kawalan ke atas penyusunan, seperti bytecode ditafsirkan, ia boleh menjalankan dalam kotak pasir yang selamat. Penyusun dari bytecode kepada kod mesin adalah lebih mudah untuk menulis, kerana pengumpul bytecode mudah alih telah melakukan banyak kerja.
JIT kod umumnya menawarkan prestasi yang jauh lebih baik daripada jurubahasa. Di samping itu, ia boleh dalam beberapa kes menawarkan prestasi yang lebih baik daripada himpunan statik, sebagai pengoptimuman banyak hanya boleh dilaksanakan pada jangka masa:
1).Kompilasi boleh dioptimumkan kepada CPU disasarkan dan model sistem operasi di mana permohonan itu berjalan. Sebagai contoh JIT boleh memilih arahan CPU SSE2 apabila ia mengesan bahawa CPU menyokong mereka. Untuk mendapatkan tahap ini spesifisiti pengoptimuman dengan pengkompil statik, satu sama ada perlu menyusun binari untuk setiap platform dicadangkan / seni bina, atau lain termasuk versi pelbagai bahagian kod dalam binari tunggal.
2).Sistem ini adalah dapat mengumpul statistik tentang bagaimana program ini sebenarnya berjalan dalam persekitaran ia adalah dalam, dan ia boleh menyusun semula dan susun semula untuk prestasi yang optimum. Walau bagaimanapun, sesetengah penyusun statik juga boleh mengambil maklumat profil sebagai input.
Sistem boleh melakukan pengoptimuman kod global (misalnya 'inlining' fungsi perpustakaan) tanpa kehilangan kelebihan menghubungkan dinamik dan tanpa overhed wujud kepada penyusun linkers dan statik. 3).Khususnya, apabila melakukan penggantian sebaris global, proses penyusunan statik mungkin perlu cek masa jalanan dan memastikan bahawa panggilan maya akan berlaku jika kelas sebenar objek mengatasi kaedah inlined, dan cek keadaan sempadan pada capaian pelbagai mungkin perlu untuk diproses dalam gelung. Dengan penyusunan just-in-time dalam banyak kes pemprosesan ini boleh berpindah keluar gelung, sering memberi kenaikan besar kelajuan.
4).Walaupun ini adalah mungkin dengan statik disusun bahasa sampah dikutip, sistem bytecode lebih mudah boleh menyusun semula kod yang dilaksanakan bagi penggunaan cache yang lebih baik.

Kelewatan Permulaan dan Pengoptimalan
JIT biasanya menyebabkan sedikit kelewatan dalam pelaksanaan awal permohonan, kerana masa yang diambil untuk memuatkan dan menyusun bytecode. Kadang-kadang kelewatan ini dipanggil "masa kelewatan permulaan". Secara umum, lebih pengoptimuman JIT melaksanakan, lebih baik kod ia akan menjana, tetapi kelewatan awal juga akan meningkatkan. A pengkompil JIT itu mempunyai untuk membuat trade-off antara masa penyusunan dan kualiti kod ia berharap untuk menjana. Walau bagaimanapun, ia kelihatan bahawa banyak masa permulaan adalah kadang-kadang disebabkan oleh IO terikat operasi bukannya kompilasi JIT (sebagai contoh, kelas rt.jar data fail untuk Mesin Maya Java adalah 40 MB dan JVM mesti mendapatkan banyak data dalam fail ini Kontekstual besar).
Salah satu mungkin pengoptimuman, yang digunakan oleh Mesin Maya Java HotSpot Matahari, adalah untuk menggabungkan tafsiran dan kompilasi JIT. Kod permohonan mulanya ditafsirkan, tetapi monitor JVM yang urutan bytecode kerap dilaksanakan dan menterjemahkan mereka kepada kod mesin untuk pelaksanaan langsung kepada perkakasan. Untuk bytecode yang dilaksanakan hanya beberapa kali, ini menjimatkan masa kompilasi dan mengurangkan kependaman awal; untuk bytecode kerap dilaksanakan, kompilasi JIT digunakan untuk berjalan pada kelajuan tinggi, selepas fasa awal tafsiran perlahan. Selain itu, sejak program menghabiskan kebanyakan masa melaksanakan minoriti kod, masa kompilasi dikurangkan adalah penting. Akhirnya, semasa tafsiran kod awal, statistik pelaksanaan boleh dikumpul sebelum kompilasi, yang membantu untuk melaksanakan pengoptimuman yang lebih baik.
Tradeoff betul boleh berbeza disebabkan oleh keadaan. Sebagai contoh, Mesin Jawa Matahari Maya mempunyai dua mod utama-pelanggan dan pelayan. Dalam mod pelanggan, penyusunan minimum dan pengoptimuman dilakukan, untuk mengurangkan masa permulaan. Dalam mod pelayan, penyusunan yang luas dan pengoptimuman dilakukan, untuk memaksimumkan prestasi sekali permohonan itu berjalan dengan mengorbankan masa permulaan. Java lain just-in-time penyusun telah digunakan ukuran runtime beberapa kali kaedah telah dilaksanakan digabungkan dengan saiz bytecode kaedah sebagai satu heuristik untuk memutuskan bila untuk menyusun. Masih lagi menggunakan bilangan kali yang dilaksanakan digabungkan dengan pengesanan gelung. Secara umum, ia adalah lebih sukar meramalkan dengan tepat yang kaedah untuk mengoptimumkan dalam aplikasi berjalan pendek berbanding dengan orang-orang lama berjalan.
Imej Generator asli (Ngen) oleh Microsoft merupakan satu lagi pendekatan untuk mengurangkan kelewatan awal. Ngen pra-menyusun (atau "pra-jits") bytecode dalam imej Bahasa Common Intermediate ke dalam kod mesin asli. Hasilnya, tiada kompilasi runtime diperlukan. . BERSIH rangka kerja 2.0 dihantar dengan Visual Studio 2005 berjalan Ngen pada semua Microsoft perpustakaan DLL tepat selepas pemasangan. Pra-jitting menyediakan satu cara untuk meningkatkan masa permulaan. Walau bagaimanapun, yang berkualiti kod ia menjana tidak mungkin menjadi sebagai baik sebagai yang sedang jitted, untuk itu sebab yang sama mengapa kod disusun statik, tanpa profil-berpandu pengoptimuman, tidak boleh sebagai baik sebagai JIT disusun kod dalam kes yang melampau: kekurangan profil data untuk memandu, misalnya, selari caching.
Terdapat juga wujud Jawa pelaksanaan yang menggabungkan AOT (hadapan-of-masa) pengkompil dengan sama ada JIT pengkompil (Excelsior JET) atau jurubahasa (Pengkompil GNU untuk Java.)


MIPS SIMULATOR : SYSTEM CALLS AND MIPS ASSEMBLY LANGUAGE FORMAT

Sistem Calls
  • digunakan untuk membaca atau mencetak nilai atau rentetan dari tetingkap input / output, dan menunjukkan program akhir
  • menggunakan syscall rutin sistem operasi panggilan
  • pertama membekalkan nilai-nilai yang sesuai dalam daftar $ v0 dan $ a0-$ a1
  • nilai hasil (jika ada) dikembalikan dalam mendaftarkan $ v0

Jadual berikut menyenaraikan perkhidmatan syscall mungkin.


Service
Code
in $v0
Arguments
Results
print_int
1
$a0 = integer to be printed
print_float
2
$f12 = float to be printed
print_double
3
$f12 = double to be printed
print_string
4
$a0 = address of string in memory
read_int
5
integer returned in $v0
read_float
6
float returned in $v0
read_double
7
double returned in $v0
read_string
8
$a0 = memory address of string input buffer
$a1 = length of string buffer (n)
sbrk
9
$a0 = amount
address in $v0
exit
10

*Perkhidmatan print_string menjangka alamat untuk memulakan rentetan aksara dengan penamat null.Arahan. Asciiz mewujudkan rentetan aksara dengan penamat null.
*Perkhidmatan read_int, read_float dan read_double membaca seluruh barisan input sehingga dan termasuk watak newline.
*Perkhidmatan read_string mempunyai semantices sama seperti UNIX rutin fgets perpustakaan.
  -Ia berbunyi sehingga n-1 aksara ke dalam buffer dan menamatkan rentetan dengan watak nol.
  -Jika kurang daripada n-1 aksara berada dalam baris semasa, ia membaca sehingga dan termasuk newline dan menamatkan rentetan dengan watak batal.
*Perkhidmatan sbrk mengembalikan alamat blok memori bait mengandungi n tambahan. Ini akan digunakan untuk peruntukan memori dinamik.
*Perkhidmatan keluar berhenti program daripada berjalan.



e.g. Print out integer value contained in register $t2



li    $v0, 1                        # load appropriate system call code into register $v0;
                                       # code for printing integer is 1
move     $a0, $t2             # move integer to be printed into $a0: $a0 = $t2
syscall                             # call operating system to perform operation


e.g. Read integer value, store in RAM location with label int_value (presumably declared in data section)



li        $v0, 5                    # load appropriate system call code into register $v0;
                                       # code for reading integer is 5
syscall                             # call operating system to perform operation
sw     $v0, int_value        # value read from keyboard returned in register $v0;
                                      # store this in desired location

e.g.   Print out string (useful for prompts)
                    .data
string1          .asciiz "Print this.\n"               # declaration for string variable, 
                                                                # .asciiz directive makes string null terminated

                    .text
main:             li     $v0, 4              # load appropriate system call code into register $v0;
                                                   # code for printing string is 4
                     la  $a0, string1        # load address of string to be printed into $a0
                     syscall                    # call operating system to perform print operation
e.g. To indicate end of program, use exit system call; thus last lines of program should be:
li     $v0, 10          # system call code for exit = 10
syscall                  # call operating sys

MIPS Bahasa Himpunan Format


MIPS Daftar

  • MIPS bahasa himpunan adalah bahasa perhimpunan 3-alamat. Operan adalah sama ada immediates atau dalam daftar.
  • Terdapat 32 daftar yang kita biasanya menggunakan. Setiap 32 bit lebar. Daftar dikenal pasti dengan integer, bernombor 0-31.
  • Untuk rujukan daftar sebagai satu operan, gunakan sintaks $ x, di mana x ialah nombor daftar yang anda mahu.contoh: $ 12, $ 15
  • Beberapa batasan pada penggunaan daripada 32 daftar 32-bit. Disebabkan konvensyen yang ditetapkan oleh penyelaku, dan oleh seni bina, daftar tertentu digunakan untuk tujuan khas. Ia adalah bijak untuk mengelakkan penggunaan daftar mereka, sehingga anda memahami bagaimana untuk menggunakannya dengan betul.
1).$ 0
    0 (gunakan seperti yang diperlukan)
2).$ 1
    digunakan oleh penghimpun (simulator dalam kes kami) - tidak menggunakannya dalam program anda.
3).$ 2-7
    digunakan oleh penyelaku - jangan gunakan mereka melainkan anda tahu apa yang mereka dan bagaimana ia digunakan. (Mereka boleh digunakan sebagai tempat untuk lulus parameter, mengembalikan hasil daripada fungsi, dan tersirat yang akan digunakan untuk lulus nilai-nilai dalam pelaksanaan MAL I / O arahan.)
4).$ 26-27
    digunakan untuk melaksanakan mekanisme untuk memanggil prosedur khas yang melakukan I / O dan menjaga keadaan ralat yang lain (seperti limpahan)
5).$ 29
    adalah penunjuk timbunan - anda secara automatik diperuntukkan timbunan (perkataan), dan $ 29 dimulakan mengandungi alamat perkataan kosong di bahagian atas timbunan pada permulaan mana-mana program.


Format arahan dan Sintaksis

Operasi Aritmetik dan Logik
Ini bukanlah satu senarai lengkap arahan; ini adalah arahan anda perlu tahu mengenai, dan boleh digunakan apabila perlu.



mnemonic number     operands      C or C++ or Java
         of operands

move       2        d, s1         d = s1;
add        3        d, s1, s2     d = s1 + s2; two's complement
addu       3        d, s1, s2     d = s1 + s2; unsigned
sub        3        d, s1, s2     d = s1 - s2; two's complement
subu       3        d, s1, s2     d = s1 - s2; unsigned
mul        3        d, s1, s2     d = s1 * s2; two's complement
div        3        d, s1, s2     d = s1 / s2;  gives quotient
divu       3        d, s1, s2     d = s1 / s2;  gives quotient
rem        3        d, s1, s2     d = s1 % s2;  gives remainder
remu       3        d, s1, s2     d = s1 % s2;  gives remainder
and        3        d, s1, s2     d = s1 & s2; bitwise AND
or         3        d, s1, s2     d = s1 | s2; bitwise OR
not        2        d, s1         d = ~s1;  bitwise complement
nand       3        d, s1, s2     d = s1 NAND s2; no C equivalent
nor        3        d, s1, s2     d = s1 NOR s2; no C equivalent
xor        3        d, s1, s2     d = s1 ^ s2; bitwise XOR
rol        3        d, s1, s2     d = rotate left of s1 by s2 places
ror        3        d, s1, s2     d = rotate right of s1 by s2 places
sll        3        d, s1, s2     d = logical left shift of s1 by s2 places
sra        3        d, s1, s2     d = arithmetic right shift of s1 by s2 places
srl        3        d, s1, s2     d = logical right shift of s1 by s2 places


NOTA:

1).Untuk semua 3 operan arahan, di mana hanya 2 muncul dalam kod sumber, operan pertama adalah kedua-dua sumber dan destinasi keputusan.
2).tidak boleh meningkatkan bilangan operan.
3).d sentiasa daftar.
4).s2 boleh menjadi suatu daftar atau terdekat (berterusan dalam kod mesin)



Examples:
      move  $4, $9        # copy contents of $9 into $4

      mul   $12, $13, $14 # place 32-bit product of $13 and $14 into $12
                          # does not work correctly if result requires
                          # more than 32 bits

      add   $8, $9, $10   # two's complement sum of $9 and $10 placed in $8

      add   $20, $20, 1   # add (immediate value) 1 to the value in $20,
                          # result goes to $20

Perhatikan bahawa terdapat lain MAL aritmetik dan arahan logik, tetapi senarai ini adalah mencukupi buat masa sekarang.
Pada pemproses sebenar, operasi pembahagian integer memberikan dua keputusan: darjah dan bakinya. Apa yang berlaku dengan kedua-dua keputusan berbeza di kalangan seni bina.

Arahan beban dan Kedai
Pada senibina beban / stor, arahan sahaja yang menentukan operan yang datang dari atau pergi ke memori adalah beban dan kedai-kedai.

mnemonic number     operands      operation
         of operands

lw         2        d, addr       a word is loaded from addr and placed into d;
                                  the addr must be word aligned
lb         2        d, addr       a byte is loaded from addr and placed into 
                                  the rightmost byte of d;
                                  sign extension defines the other bits of d
lbu        2        d, addr       a byte is loaded from addr and placed into
                                  the rightmost byte of d;
                                  zero extension defines the other bits of d
li         2        d, immed      the immediate value is placed into d

sw         2        d, addr       a word in d is stored to addr; 
                                  the addr must be word aligned
sb         2        d, addr       a byte in the rightmost byte of d is stored to addr 

la         2        d, label      the address assigned to label is placed into d



nota:
1).terakhir dinyatakan dalam kod sumber di salah satu daripada 3 cara:
-anjakan (reg)
 Nilai segera (anjakan) ditambah kepada kandungan daripada reg untuk membentuk alamat yang berkesan.
-(reg)
 Kandungan reg itu adalah alamat.
-label
 Alamat adalah seperti yang diberikan kepada label.
2).d mesti spesifikasi daftar



Examples:
    la    $10, x      # place the address assigned for label x into register $10

    lw    $8, x       # load the word from memory at address x into register $8

    sb    $9, y       # store the contents of register $9 to memory at address y

    lb    $8, ($12)   # load the byte from the address given by the contents
                      # of register $12 into the least significant byte of
                      # register $8, sign extending to define the other bits

    sw    $10, 8($9)  # store the contents of register $10 to the address 
                      # obtained by adding the value 8 to the contents of 
                      # register $9




Kawalan Arahan
Arahan kawalan cawangan dan / atau melompat.
Seni bina PowerPC melaksanakan hanya satu subset ini, dan tugas penghimpun untuk mensintesis mereka yang tidak termasuk dalam arahan yang ditetapkan dari orang-orang yang dimasukkan. Dari senarai ini, anda tidak boleh membezakan yang disintesis daripada orang-orang yang dimasukkan.



mnemonic number     operands        operation
         of operands

b          1        label           unconditional branch to label
beq        3        r1, r2, label   branch to label if (r1) == (r2)
bne        3        r1, r2, label   branch to label if (r1) != (r2)
bgt        3        r1, r2, label   branch to label if (r1) > (r2)
bge        3        r1, r2, label   branch to label if (r1) >= (r2)
blt        3        r1, r2, label   branch to label if (r1) < (r2)
ble        3        r1, r2, label   branch to label if (r1) <= (r2)
beqz       2        r1, label       branch to label if (r1) == 0
bnez       2        r1, label       branch to label if (r1) != 0
bgtz       2        r1, label       branch to label if (r1) > 0
bgez       2        r1, label       branch to label if (r1) >= 0
bltz       2        r1, label       branch to label if (r1) < 0
blez       2        r1, label       branch to label if (r1) <= 0

j          1        label           unconditional jump to label
jal        1        label           unconditional jump to label, return address in $31



Examples:
    beq   $8, $14, do_else  # branch to do_else if the contents of register $8
                            # is the same as the contents of register $14



Input dan Output Arahan
Input dan output dilaksanakan oleh penyelaku yang kita gunakan untuk kursus. Mereka tidak tunjuk sebenarnya, tetapi cara untuk kod sumber (arahan) menyebabkan simulator untuk melakukan fungsi I / O. Sejak simulator telah ditulis dalam C, yang paling mudah I / O fungsi untuk meniru adalah mudah, standard CI / O fungsi.


mnemonic number     operands        operation
         of operands

putc         1        r1            print the ASCII character in the least 
                                    significant byte of r1
getc         1        r1            read a character, placing it in the least 
                                    significant byte of r1
puts         1        r1/label      print the null-terminated string that begins
                                    at the address within r1 or given by label





Examples:
     .data
     str1:  .asciiz  "hello."
     .text

     puts  str1
      

      -------------
      |hello.
      |      ^
             more output starts here, when more is printed





     .data
     str1:  .asciiz  "hello."
     .text

     la    $12, str1    # address of first character in string 
     puts  $12          # address of first character to print is in $12
      

      -------------
      |hello.
      |      ^
             more output starts here, when more is printed





     .data
     str1:  .asciiz  "hello.\nMy name is George."
     .text

     puts  str1

      -------------
      |hello.
      |My name is George.
      |                  ^
                         more output starts here, when more is printed





     .data
     str1:  .ascii   "Hi.\n"
     str2:  .asciiz  "I am a badger."
     .text

     puts  str1

      -------------
      |Hi.
      |I am a badger.
      |              ^
                     more output starts here, when more is printed


Keterangan: pengisytiharan hanya meletakkan watak-watak dalam ingatan. Watak-watak yang berdampingan. Arahan ascii tidak menambah watak nol menamatkan rentetan. Meletakkan arahan tahu untuk menghentikan aksara percetakan apabila ia menghadapi watak NULL ('\ 0'). Ia tidak mencari watak nol pada akhir rentetan pertama, jadi ia hanya menyimpan akan (melalui rentetan kedua) sehingga ia bertemu watak nol pada akhir rentetan kedua.

MEMORY ORGANIZATION : DEFINITION OF MEMORY


Definisi Memori :
Memori (atau lebih tepat disebut memori fisik) merupakan istilah generik yang merujuk pada media penyimpanan data sementara pada komputer. Setiap program dan data yang sedang diproses oleh prosesor akan disimpan di dalam memori fisik. Data yang disimpan dalam memori fisik bersifat sementara, karena data yang disimpan di dalamnya akan tersimpan selama komputer tersebut masih dialiri daya (dengan kata lain, komputer itu masih hidup). Ketika komputer itu direset atau dimatikan, data yang disimpan dalam memori fisik akan hilang. Oleh karena itulah, sebelum mematikan komputer, semua data yang belum disimpan ke dalam media penyimpanan permanen (umumnya berbasis disk, semacam hard disk atau floppy disk), sehingga data tersebut dapat dibuka kembali di lain kesempatan. Memori fisik umumnya diimplementasikan dalam bentuk Random Access Memory (RAM), yang bersifat dinamis (DRAM). Mengapa disebut Random Access, adalah karena akses terhadap lokasi-lokasi di dalamnya dapat dilakukan secara acak (random), bukan secara berurutan (sekuensial). Meskipun demikian, kata random access dalam RAM ini sering menjadi salah kaprah. Sebagai contoh, memori yang hanya dapat dibaca(ROM), juga dapat diakses secara random, tetapi ia dibedakan dengan RAM karena ROM dapat menyimpan data tanpa kebutuhan daya dan tidak dapat ditulisi sewaktu-waktu. Selain itu, hard disk yang juga merupakan salah satu media penyimpanan juga dapat diakses secara acak, tapi ia tidak digolongkan ke dalam Random Access Memory.

Penggunaan Memori :
Komponen utama dalam sistem komputer adalah Arithmetic and Logic Unit (ALU), Control CircuitryStorage Space dan piranti Input/Output. Tanpa memori, komputer hanya berfungsi sebagai piranti pemroses sinyal digital saja, contohnya kalkulator atau media player. Kemampuan memori untuk menyimpan data, instruksi dan informasi-lah yang membuat komputer dapat disebut sebagai komputer multi-fungsi (general-purpose). Komputer merupakan piranti digital, maka informasi disajikan dengan sistem bilangan biner (binary). Teks, angka, gambar, suara dan video dikonversikan menjadi sekumpulan bilangan biner (binary digit atau disingkat bit). Sekumpulan bilangan biner dikenal dengan istilah BYTE, dimana 1 byte = 8 bits. Semakin besar ukuran memori-nya maka semakin banyak pula informasi yang dapat disimpan di dalam komputer (media penyimpanan).

Jenis-jenis Memori :

  • Register prosesor
  • RAM atau Random Access Memory
  • Cache Memory (SRAM) (Static RAM)
  • Memori fisik (DRAM) (Dynamic RAM)
  • Perangkat penyimpanan berbasis disk magnetis
  • Perangkat penyimpanan berbasis disk optik
  • Memori yang hanya dapat dibaca atau ROM (Read Only Memory)
  • Flash Memory
  • Punched Card (kuno)
  • CD atau Compact Disk
  • DVD

Pembagian Memory :
Dalam pembicaraan mengenai arsitektur komputer seperti arsitektur von Neumann, misalnya, kapasitas dan kecepatan memori dibedakan dengan menggunakan hierarki memori. Hierarki ini disusun dari jenis memori yang paling cepat hingga yang paling lambat; disusun dari yang paling kecil kapasitasnya hingga paling besar kapasitasnya; dan diurutkan dari harga tiap bit memori-nya mulai dari yang paling tinggi (mahal) hingga yang paling rendah (murah).

Sunday, 28 October 2012

DIGITAL LOGIC : COMBINATIONAL CIRCUIT

A combinational circuit is a circuit  made up by combining logic gates such that the required logic at the output(s) depends only on the input logic present condition, both completely specified by either a truth table or by a Boolean expression.

Characteristics
(i) An output(s) remains constant, as long input conditions do not require change in output(s).
(ii) An output depends solely on the current input condition and not on any past input condition or past output condition.
(iii) A combinational circuit has no feedback of the output from a stage to the input of either that stage or any previous stage.
(iv) An output(s) at each stage appears after a delay in few tens or hundred ns depending upon the type or family of the gate used to implement the circuit.

Combinational circuit representation
1.  i). A block diagram for n inputs and m outputs.
    ii). A truth table of 2rows














Example- Truth Table Four Rows for 2 inputs and 1 output
   Inputs                          Output
A1     A2                            F
 0        0                             1
 0        1                             0
 1        0                             0
 1        1                             0

2.  i). SOP terms (2n miniterms) for each output
    ii). POS terms (2n maxterms) for each output
   iii). Karnaugh map of n variables and 2n cells

FORMULATION OF A PROBLEM IN A COMBINATIONAL CIRCUIT
A). First step is to select the combinational circuit(s) in a logic network for which the problem of designing as per specifications is to be solved.

B). Criteria for whether a problem or its part is solvable by a combination circuit or not, is as follows:
     1). Criteria for whether a problem or its part is solvable.
        i). Check whether the required logic at the output(s) depends only on the input logic conditions, both completely specified by either a truth table or by a Boolean expression.
       ii). Check whether an output(s) remains same, as long present input condition does not require the change in the output(s).
      iii). Check whether an output depends solely on the current input condition and not on any past input condition or past output condition.


Specification of each output as a function of input conditions
1. Specify the number of inputs, n. The n is also the number of literals in a Boolean expression for an output.
2. Specify the number of outputs, m.
3. Specify the delays permitted at the outputs.
4. Specify the fan-ins permitted at the inputs.
5. Specify fan-outs permitted from the targets gates and building blocks.
6. Design a ‘truth table’ for n inputs and m outputs. Each output corresponds to each possible combination of input conditions.
7.Write a Boolean expression for the logic circuit for each output: The n is also the number of literals in a Boolean expression for output.
8. Specify as SOP or POS standard Format

Specification of gate characteristics
1. Propagation delays
2. Fan-ins permitted are specified in the problem
3. If a possible combination of the input condition is unspecified or is don’t care, specify it by ‘x’. [The Boolean expression for the output is an incomplete Boolean function.]
4. If a possible condition is high impedance output ‘tristate’, specify it by  ‘*’.

Summary
1. A combinational circuit — made up by combining logic gates such that:
i). Required logic at the output(s) depends only on the input logic present condition.
ii). Both (inputs and output) completely specified by a truth table or Boolean expression.
2. A combinational circuit — Problem Formulation means
i). Building block selection
ii). Defining Specifications


ARITHMETIC FOR COMPUTERS : ARITHMETIC LOGIC UNIT (ALU)

1. is one of the many components within a computer processor
2. is the final processing performed by the processor
3. after the information has been processed by the ALU, it is sent to the computer memory
4. a combinational circuits that performs arithmetic and logical operations
5. arithmetic operations include addition,subtraction,multiplication,division,ect
6. logical operations involve Boolean logic :AND,OR,NOT and XOR
6. a fundamental component of all processors
7. the design and function of an ALU may vary between different processor models
8. for example, some ALUs only perform integer calculations, while others are designed to handle floating point operations as well


ALU Input and Output








1. Data are presented to the ALU in registers, and the results of an operation are stored in registers.

2. These registers are temporary storage locations within the processor that are connected by signal paths to the ALU.
3. The ALU may also set flags as the result of an operation.
4. For example, an over­flow flag is set to 1 if the result of a computation exceeds the length of the register into which it is to be stored.



A typical diagram of an ALU

Arithmetic Logic Unit schematic symbol












- A and B are the data inputs
- F is the control input to choose the function
- R is the result of the function applied to A and B
- D is the status of the output



Example of arithmetic operation :

1. Two's Complement Addition : add the values and discard any carry-out bit.

      using 8-bit two’s complement numbers.
a). Add −8 to +3
     (+3)   0000 0011
   +(−8)   1111 1000
   ------------------------
     (−5)   1111 1011

b). Add −5 to −2
     (−2)   1111 1110
   +(−5)   1111 1011
   ------------------------
     (−7) 1 1111 1001 : discard carry-out


2. Overflow Rule for addition : 
If 2 Two's Complement numbers are added, and they both have the same sign (both positive or both
negative), then overflow occurs if and only if the result has the opposite sign. Overflow never occurs when adding operands with different signs.
i.e.Adding two positive numbers must give a positive result
Adding two negative numbers must give a negative result

Overflow occurs if

  • (+A) + (+B) = −C


  • (−A) + (−B) = +C

Using 4-bit Two's Complement numbers (−8 ≤ x ≤ +7)

  (−7)   1001
+(−6)   1010
--------------
(−13) 1 0011 = 3 : Overflow (largest −ve number is −8)




3. Two's Complement Subtraction : Normally accomplished by negating the subtrahend and adding it to the minuhend. Any carry-out is discarded.
Using 8-bit Two's Complement Numbers (−128 ≤ x ≤ +127)

  (+8) 0000 1000                          0000 1000
−(+5) 0000 0101 -> Negate ->  +1111 1011
------                                          -------------
  (+3)                                         1 0000 0011 : discard carry-out


4. Overflow Rule for Subtraction :

- If 2 Two's Complement numbers are subtracted, and their signs are different, then overflow occurs if and only if the result has the same sign as the subtrahend.
Overflow occurs if

  • (+A) − (−B) = −C


  • (−A) − (+B) = +C
Using 4-bit Two's Complement numbers (−8 ≤ x ≤ +7)
Subtract −6 from +7
      (+7) 0111                          0111
    −(−6) 1010 -> Negate ->  +0110
   -------------                       -------
       13                                     1101 = −8 + 5 = −3 : Overflow 



5. Two's Complement Summary

i). Addition

  • Add the values, discarding any carry-out bit
ii). Subtraction

  • Negate the subtrahend and add, discarding any carry-out bit
iii). Overflow

  • Occurs when adding two positive numbers produces a negative result, or when adding two negative numbers produces a positive result. Adding operands of unlike signs never produces an overflow


  • Notice that discarding the carry out of the most significant bit during Two's Complement addition is a normal occurrence, and does not by itself indicate overflow


  • As an example of overflow, consider adding (80 + 80 = 160)10, which produces a result of −9610 in 8-bit two's complement:
       01010000 =  80
    + 01010000 =  80
    -------------
       10100000 = −96 (not 160 because the sign bit is 1.)
      (largest +ve number in 8 bits is 127)

6. Multiplication and Division
- No problem with unsigned (always positive) numbers, just use the same standard techiques as in base 10 (remembering that x[n] × y[n] = z[2n])

  • Multiplication Example : 11001012 × 1111012 (10110 × 6110)
             1100101   10110
            × 111101  × 6110
     ---------------
              1100101
          +1100101
        +1100101
      +1100101
    +1100101
    ----------------
    ?????????????
    ----------------    
    
    Easier to use intermediary results:
           1100101   10110
          × 111101  × 6110
          -----------
            1100101
          +1100101
         ------------
         111111001
           +1100101
      ---------------
      10100100001
            +1100101
     ----------------
     101101110001
             +1100101
    -----------------
    1100000010001 = 409610 + 204810 + 1610 + 1 = 616110
    -----------------


  • Division Example : 1001012 ÷ 1012 (3710 ÷ 510)
                  111 result = 710
           ---------
    101) 100101
            −101
            ---------
               1000
               −101
                 ------
                    111
                  −101
                  ------
                      10 remainder = 210
                      ---


Example of logical operations :

1. AND









The logical AND operation compares 2 bits and if they are both "1", then the result is "1", otherwise, the result is "0".

2. OR









The logical OR operation compares 2 bits and if either or both bits are "1", then the result is "1", otherwise, the result is "0".

3. XOR









The logical XOR (Exclusive OR) operation compares 2 bits and if exactly one of them is "1" (i.e., if they are different values), then the result is "1"; otherwise (if the bits are the same), the result is "0".

4. NOT










The logical NOT operation simply changes the value of a single bit. If it is a "1", the result is "0"; if it is a "0", the result is "1". Note that this operation is different in that instead of comparing two bits, it is acting on a single bit.