Tampilkan postingan dengan label Komputer. Tampilkan semua postingan
Tampilkan postingan dengan label Komputer. Tampilkan semua postingan

Jumat, 04 Agustus 2017

Jurnal Tentang Pengertian Teknologi

Pengertian teknologi dapat dijabarkan dalam beragam makna. Setiap orang yang mengenal teknologi akan mengartikannya sesuai dengan latar belakang pemikirannya saat mempelajari teknologi ini. Lalu bagaimana definisi teknologi menurut beberapa orang?

Berikut ini kami sajikan kutipan mengenai pengertian teknologi / definisi teknologi dari beberapa jurnal dan referensi online.


Teknologi adalah alat bantu manusia untuk mencapai tujuan. Teknologi diciptakan untuk mempermudah atau memperlancar suatu pekerjaan. Alat dalam suatu teknologi dapat berupa perangkat baik itu perangkat keras maupun perangkat lunak.

Purwanto H., 2009. TEKNOLOGI PENGOLAH HASIL PERTANIAN. Jurnal Mediagro. VOL 5. NO 1, 2009: HAL 15 - 19.

Sumber : https://publikasiilmiah.unwahas.ac.id/index.php/Mediagro/article/download/891/1003


Teknologi adalah manifestasi dari imajinasi manusia tentang sebuah dunia yang lebih baik. Melalui teknologi manusia membangun masa depan kebudayaan dan kehidupan mereka. Perkembangan teknologi tidak saja ditentukan oleh nilai-nilai budaya yang ada, tetapi ia justru dapat membentuk budaya-budaya baru: budaya media, budaya informasi atau budaya virtual.

Pilalang Y.A., 2013. BUDAYA TEKNOLOGI DI INDONESIA: KENDALA DAN PELUANG MASA DEPAN. Jurnal Sosioteknologi Vol 12, No 28.

Sumber : http://journals.itb.ac.id/index.php/sostek/article/view/1105


Kata Teknologi seringkali oleh masyarakat diartikan sebagai alat elektronik. Tapi oleh ilmuwan dan ahli filsafat ilmu pengetahuan diartikan sebagai pekerjaan ilmu pengetahuan untuk memecahkan masalah praktis. Jadi teknologi lebih mengacu pada usaha untuk memecahkan masalah manusia.

Andri R.M., 2017. PERAN DAN FUNGSI TEKNOLOGI DALAM PENINGKATAN KUALITAS PEMBELAJARAN. Jurnal Ilmiah Research Sains VOL. 3. NO. 1 Februari 2017.

Sumber : http://www.jurnalmudiraindure.com/wp-content/uploads/2017/04/PERAN-DAN-FUNGSI-TEKNOLOGI-DALAM-PENINGKATAN-KUALITAS-PEMBELAJARAN.pdf


Bagi kebanyakan orang, teknologi hanya berupa komputer, software atau kapal terbang namun sebenarnya teknologi itu lebih dari itu semua. Teknologi merupakan inti dari sebuah ilmu pengetahuan dan pengetahuan inilah yang dapat digunakan dalam kegiatan dan kehidupan manusia sehari-hari.

Noor I.H.M., 2011. Pemanfaatan Ilmu Pengetahuan dan Teknologi Dalam Kegiatan Pengabdian Masyarakat di Perguruan Tinggi. Jurnal Pendidikan dan Kebudayaan, Vol. 17, Nomor 3, Mei 2011.

Sumber : http://jurnaldikbud.kemdikbud.go.id/index.php/jpnk/article/download/27/25


Tidak dapat dipungkiri dalam mekanisme manajemen perubahan, teknologi mengambil peran yang sangat penting dalam percaturan peradaban. Banyak orang mengartikan teknologi itu sebagai suatu alat yang canggih yang berkaitan dengan mesin, proses mekanistik ataupun seperti alat elektronik dan sejenis.

Mawardi I., 2012. ICT (Information And Communication Technology) Sebagai Wahana Transformasi Pendidikan. Jurnal Fakultas Agama Islam Vol 3, No 1

Sumber : http://id.portalgaruda.org/?ref=browse&mod=viewarticle&article=114626


Menurut Iskandar Alisyahbana (1980) Teknologi telah dikenal manusia sejak jutaan tahun yang lalu karena dorongan untuk hidup yang lebih nyaman, lebih makmur dan lebih sejahtera. Jadi sejak awal peradaban sebenarnya telah ada teknologi, meskipun istilah “teknologi” belum digunakan. Istilah “teknologi” berasal dari “techne “ atau cara dan “logos” atau pengetahuan. Jadi secara harfiah teknologi dapat diartikan pengetahuan tentang cara. Pengertian teknologi sendiri menurutnya adalah cara melakukan sesuatu untuk memenuhi kebutuhan manusia dengan bantuan akal dan alat, sehingga seakan-akan memperpanjang, memperkuat atau membuat lebih ampuh anggota tubuh, pancaindra dan otak manusia

Yap, itu tadi beberapa jurnal mengenai pengertian teknologi / definisi teknologi. Kalian bisa memeriksa kutipannya dari sumber link yang sudah disertakan. Mudah-mudahan makalah/karya tulis/laporan/skripsi/apapun;-nya cepat kelar ya :)
Read more

Rabu, 28 Desember 2016

Memahami Istilah Abstraction Layer dengan Analogi Sederhana

Abstraction layer?  Saya mengartikan abstraction layer sebagai lapisan-lapisan antar muka yang berguna menyembunyikan kerumitan dalam beragamnya perbedaan dan mengambil beberapa persamaan dalam berbagai macam perbedaan.

Misalnya: Jalan-jalan.  Kata jalan-jalan terdengar implisit. Kemanapun arahnya, itulah yang namanya jalan-jalan. Setelah yakin memutuskan untuk pergi, ada beberap opsi yang bisa dipilih, jalan-jalan ke jakarta, jalan jalan ke surabaya, jalan-jalan ke semarang, ataupun ke kota lainnya. Jika kita sudah memilih jalan-jalan ke Surabaya, misalnya; kita selanjutnya memilih opsi transportasi. Misalnya dengan sepeda atau dengan kereta.

Ungkapan di atas adalah sebuah analogi sederhana untuk abstraction layer. Contoh abstraction layer yang sering kita temui adalah dalam manajemen file. Di antara beragam jenis file, filesystem dan media penyimpanan yang digunakan; kita dapat menyalin data melalui file manager dengan cara yang sama; meskipun sumber dan tujuan data memiliki properti yang berbeda. Ini berkat abstraction layer.
file abstraction layer

Ilustrasi di atas menunjukkan bagaimana proses akses file bekerja dengan alur kerja yang berbeda. Pertaama, Proses baca file melalui layer filesystem. Bisa diibaratkan FAT dan NTFS adalah  objek yang sama-sama merupakan turunan class filesystem. Semua filesystem memiliki method bacaFile(), namun tiap filesystem memiliki implementasinya sendiri-sendiri.

Dibawahnya lagi, layer filesystem harus berkomunikasi dengan layer disk I/O. Baik floppy ataupun CD adalah turunan class disk yang memiliki method bacaData() dengan implementasinya sendiri-sendiri pula.
Read more

Minggu, 25 Desember 2016

Belajar Assembly MIPS / PIC32 Dengan MARS Simulator

Prosesor MIPS adalah pioner dari arsitektur prosesor RISC. Ia pernah berjaya di era 90-an di mana industri prosesor sedang gencar-gencarnya melakukan riset. Akan tetapi sekarang ini seperti mulai turun pamornya. Meski demikian MIPS memiliki kelebihan tersendiri, terutama dalam hal kesederhanaannya. Beberapa referensi juga mengatakan bahwa harga jual MIPS di pasaran relatif terjangkau. Tidak hern, di luar sana, MIPS banyak digunakan sebagai bahan riset dan penelitian akademisi dan peneliti. Untuk itu saya mulai tertarik dengan arsitektur prosesor ini.

Kenampakan prosesor MIPS
Grafik market share prosesor

Arsitektur MIPS juga diproduksi oleh industri semikonduktor lain, misalnya Microchip dengan PIC32 nya. Jadi, jika kalian mencoba development board PIC32, misalnya; kalian akan merasakan sensasi yang sama dengan menulis program untuk MIPS. Hal ini sama halnya dengan AMD yang membeli lisensi Intel untuk memproduksi varian prosesor dengan arsitektur serupa Intel. Cukup di sini basa-basinya. Langsung saja kita mulai bahasannya.

Untuk belajar assembly MIPS, saya sarankan menggunakan simulator MARS. Ini lebih baik dari pada praktik langsung dengan komputer asli berinti MIPS. Dengan simulator, kita bisa lebih mudah melacak dan melihat bagaimana nilai tiap register berubah seiring dengan berjalannya instruksi.

mips mars simulator
Download : http://courses.missouristate.edu/KenVollmar/mars/download.htm

Register
Arsitektur RISC umumnya lebih banyak beroperasi dengan register. Oleh karena itu, arsitektur MIPS dibilang arsitektur register-to-register. Jumlah registernya lebih banyak dari arsitektur CISC, namun memiliki jumlah instruksi yang terbatas. Jika dibandingkan dengan Intel, maka akan terlihat perbandingan yang jauh.


Conventional NameUsage
$0$zeroHard-wired to 0. Apapun yang kita baca dari sini akan selalu 0.
$1$atReserved for pseudo-instructions
$2 - $3$v0, $v1Return values from functions. Digunakan sebagai alamat return dalam pemanggilan fungsi/prosedur.
$4 - $7$a0 - $a3Arguments to functions - not preserved by subprograms. Menyimpan argumen fungsi.
$8 - $15$t0 - $t7Temporary data, not preserved by subprograms. Bisa digunakan dengan bebas, untuk keperluan apapun.
$16 - $23$s0 - $s7Saved registers, preserved by subprograms. Bisa digunakan bebas juga, namun setelah digunakan oleh sebuah fungsi, fungsi tersebut harus mengembalikan nilai register ke nilai semula. Kenapa demikian? anda akan tahu nanti.
$24 - $25$t8 - $t9More temporary registers, not preserved by subprograms. Bebas digunakan juga.
$26 - $27$k0 - $k1Reserved for kernel. Do not use. Hanya sistem operasi yang boleh menangani dan menggunakan nilai ini. Sementara, kita abaikan register ini.
$28$gpGlobal Area Pointer (base of global data segment). Untuk menunjuk alamat data area.
$29$spStack Pointer. Untuk menunjuk memori stack.
$30$fpFrame Pointer. Biasanya dimanfaatkan untuk menyimpan nilai $sp saat penanganan fungsi.
Sumber: http://www.cs.uwm.edu/classes/cs315/Bacon/Lecture/HTML/ch05s03.html
Selain register di atas, ada pula register hi dan lo yang berperan dalam operasi perkalian dan pembagian. Semuanya itu adalah register dasar yang harus diketahui. Setelah mengetahui ini, nanti kita akan membahas register coprocessor.






Instruksi
Syntax
INSTRUKSI [operand1], [operand2], [operand3]
Sebuah instruksi dapat ditulis tanpa operand, atau dengan operand hingga maksimal 3 operand. Operand dapat berupa register, nilai konstan (immediate), atau label yang merepresentasikan alamat suatu data.

label:
#komentar
Label diindikasikan dengan titik dua yang mengikuti nama label. Dan, komentar ditulis dengan prefix #.

.word
.set ...
Direktif adalah kode yang menginstruksikan assembler untuk melakukan sesuatu, diawali dengan simbol titik sebelum kode direktif. Untuk melihat dftar direktif, lihat menu Help di MARS.

Format
Sama seperti arsitektur RISC lain, MIPS menyederhanakan eksekusi dengan membatasi ukuran tiap instruksi. Seluruh instruksi di MIPS akan selalui berukuran 32 bit (4 byte). Setiap instruksi akan dijalankan dalan waktu yang sama, yaitu satu siklus waktu CPU. Berbeda dengan arsitektur CISC yang memiliki panjang instruksi dan waktu eksekusi berbeda-beda tiap instruksinya.





Gambar di atas menunjukkan beberapa macam varian format instruksi MIPS. Varian pertama (R) digunakan pada instruksi untuk memproses data dari 3 parameter register. Misalnya instruksi ADDU, SUBU, OR, AND.

addu $t0, $t1, $t2

# ADDU rd,rs, rt
# $t0 = $t1 + $t2)

Opcode (op) ADDU adalah 100001b. Sesuai tabel register di atas, register $t0 bernomor 8 (01000b) berperan sebagai rd, register $t1 bernomor 9(01001b) berperan sebagai rs, dan register $t2 bernomor 9 (01010b) berperan sebagai rt. Nilai shamt 0, nilai ini hanya digunakan untuk instruksi bit shift. Terakhir, instruksi ADDU memiliki nilai variant funct 100001. Dari penjabaran ini, maka diperoleh hasil decode instruksi:
100001 01000 10111 01010 00000 100001

Varian berikutnya adalah varian untuk mengolah data dari register dan nilai immediate (I). Immediate adalah sebutan untuk nilai konstan yang diberikan secara langsung untuk diproses oleh instruksi. Contoh instruksi immediate adalah LUI, ADDI, SUBI, SUBIU, ORI, ANDI.

subiu $t0,$t1,100
# SUBIU rd, rs, immediate
# $t0 = $t1 + 100

Meski MIPS memiliki varian prosesor  berarsitektur 32-bit dan 64-bit, instruksinya terbatas untuk meload instruksi immediate. Dalam instruksi yang mengolah nilai immediate, nilai maksimum yang diperbolehkan hanyalah sebesar 16-bit (0 - 65535). Oleh karena itu, saat ingin meload nilai immediate 32-bit, kita perlu menggunakain instruksi LUI (Load Upper Immediate).

#load nilai 0x00A12B78
lui $t1, 0x00A1
addi $t1, $t1, 0x2B78
# $t1 = 0x00A10000 + 0x00002B78

Terakhir, varian J digunakan untuk instruksi jump dan branching. Target address yang digunakan bersifat relatif terhadap posisi instruksi tersebut. Karena bernilai 26 bit, maka instruksi ini dapat melompat ke instruksi yang jauhnya 33.554.430 byte ke kiri atau ke kanan. Contoh instruksi dalam kelompok ini adalah J, B dan JAL.
label:
...
j label
# J label

Referensi :
- https://en.wikibooks.org/wiki/MIPS_Assembly/Instruction_Formats#I_Format
- http://alumni.cs.ucr.edu/~vladimir/cs161/mips.html

Pseudo instruction
Karena keterbatasan instruksi MIPS, beberapa instruksi harus ditulis untuk melakukan satu tahap pekerjaan yang terbilang sederhana, sehingga cenderung terlihat kompleks. Oleh karena itu, MIPS dan prosesor RISC lainnya menyediakan dukungan pseudo instruction pada assemblernya. Beberapa contoh pseudo-instruction antara lain:

Branch if less than (blt)
The blt instruction compares 2 registers, treating them as signed integers, and takes a branch if one register is less than another.
blt $8, $9, label

diterjemahkan menjadi:
slt $1, $8, $9
bne $1, $0, label


Load Immediate (li)
The li pseudo instruction loads an immediate value into a register.
li $8, 0x3BF20

diterjemahkan menjadi:
lui $8, 0x0003
ori $8, $8, 0xBF20


Move (move)
The move pseudo instruction moves the contents of one register into another register.
move $1, $2

diterjemahkan menjadi:
add $1, $2, $0

Load Address (la)
la $a0,address

diterjemahkan menjadi:
lui $at, %hi(address)
ori $a0,$at,%lo(address)

Ayo Belajar
Tips : aktifkan pseudo instruction melalui settings simulator MARS. Untuk melihat daftar instruksi lihat menu Help.

Operasi matematika dasar (pi-po-lon-do) --IYKWIM
Misalnya kita inin menambahkan nilai 100 + 100 instruksinya seperti ini
li $t0, 100
addiu $t0, $t0, 100


Selain ADDIU, ada juga ADDU, ADDI dan ADD. Apa bedanya?
Pada dasarnya semuanya berguna untuk menambah nilai hnya saja terdapat perbedaan behavior pada implementasinya. instruksi yang memiliki mnemonic tambahan U, seperti ADDIU (Add immediate without overflow), akan mengabaikan adanya overflow. Saya belum tahu pada prakteknya seperti apa. Menurut dokumentasi, ketika terjadi overflow akan memicu prosesor untuk menghasilkan exception. Nah, pertanyaannya, apakah sistem operasi akan menangani exception ini, ataukan mengakhiri program yang menghasilkan exception?

Perkalian dan pembagian sedikit berbeda dengan instruksi matematika biasa. Jika menggunakan instruksi pseudo, perkalian cukup sederhana:

mul $t0, $t1, $t2
# $t0 = $t1 x $t2

Sebenarnya, jika diterjemahkan, instruksi perkalian dan pembagian akan melibatkan register hi dan lo. Instruksi non-pseudo berikut akan mengalikan $t0 dan $t1. Lalu, dimanakah hasilnya?
mult $t0,$t1

Hasilnya disimpan pada register lo. Apabila hasil perkalian menghasilkan lebih dari batasan nilai 32 bit, sejumlah 32 bit tertinggi akan disimpan pada register hi. Untuk mengakses kedua register ini kita bisa menggunakan instruksi mfhi, mflo, mthi, mtlo (move from hi, move from lo, move to hi, move to lo).

Untuk instruksi pembagian, perlakukan register hi dan lo sedikit berbeda. Hasil pembagian akan disimpan pada register lo, dan apabila pembagian bersisa, sisa tersebut berada pada register hi.
li $t0,1000
li $t0,10
div $t0,$t1
#simpan hasil ke $t3
mflo $t3
#simpan sisa ke $t4
mfhi $t4



Macam Data dan Cara Mengaksesnya
MIPS mengenal 3 macam data: byte (8 bit), halfword(16 bit) dan word (32 bit). Ingat, MIPS berarsitektur register-to-register, jadi kita tidak bisa langsung mengoperasikan data tersebut, ya. Nilai data tersebut pertama-tama harus diload ke register. Ada beberapa instruksi yang berguna untuk meload dan menyimpan (store) data:
LB (Load Byte)
LH (Load Halw-word)
LW (Load Word)
SB (Store Byte)
SH (Store Half-word)
SW (Store Word)

Untuk mendeklarasikan data, gunakan direktif .byte, .half, atau .word; dengan diawali label sebagai nama data tersebut. Perlu diketahui juga, penempatan instruksi dan data harus terpisah. Dari MARS, tersedia direktif .text sebagai indikasi awal instruksi dan .data sebagai indikasi awal bagian menampung data.

.text
    #load nilai dataA ke $t0, tambah dengan 100
    #hasilnya simpan ke dataB
    lw $t0,dataA
    addiu $t0,$t0,100
    sw $t0,dataB

.data
    dataA:
    .word 100

    dataB:
    .word 0


Jump dan Branch
Instruksi dasar lainnya yang akan dibahas adalah mengenai jump dan branch. Tujuan instruksi ini adalah untuk melompat ke segmen instruksi tertentu. Ada 2 macam instruksi yang perlu diketahui.

Uncoditional jump/branch
Unconditional jump/branch dilakukan secara langsung untuk melompat ke suatu instruksi. Instruksi semacam ini misalnya J, B, JAL, JALR.
main:
    j exit:
    ...

exit:
    ...
 
Conditional branch
Conditional jump adalah instruksi yang bekerja ketika suatu kondisi ditemukan benar. Misalnya BEQ (Branch if Equal), BGEZ (Branch if Greater or Equal to Zero), dll. Selengkapnya lihat menu Help,ya.
main:
    li $t0,1
    li $t1,2
    #lompat ke label 'sama', jika $t0 == $t1
    beq $t0,$t1,sama
beda:
    ...
sama:
    ...


Ternyata instruksi MIPS tidak kalah kerennya dengan instruksi Intel, ya. Yang membuat lebih keren, MIPS tergolong arsitektur RISC, jadi jumlah instruksinya sedikit. Meski jumlah registernya lebih banyak dari CISC, semua registernya mudah diingat, tak masalah.

Mungkin sampai disini dulu belajarnya, nanti disambung lain waktu. Terima kasih sudah membaca. See youu later...

Read more

Jumat, 23 Desember 2016

Pengertian Interrupt, Exception, Trap, Fault, IRQ dan Abort

interrupt, traps, fault, exception

Interrupt adalah suatu mekanisme prosesor dimana saat hal tersebut terjadi, prosesor akan menunda proses eksekusi. Setiap interrupt akan memiliki kode instruksi handler yang harus disediakan oleh sistem operasi. Kode instruksi ini bekerja layaknya fungsi subrutin biasa. Ia akan dipanggil sesuai dengan jenis sumber interrupt yang telah dikonfigurasikan oleh sistem operasi.

Pada dasarnya, interrupt sama saja seperti peristiwa pemanggilan fungsi biasa, layaknya saat melompat ke suatu prosedur dari fungsi main().

int main(){
function_to_call()
}

Bedanya, interrupt terjadi secara tak terduga dan tidak dapat dikontrol oleh program. Meskipun demikian, sistem operasi masih dapat mengontrol laju kerja interrupt jika dikehendaki demikian.

Seluruh pekerjaan program pada dasarnya merupakan proses matematis yang diatur jalannya oleh instruksi. Hasil pekerjaan yang diproses oleh program tersimpan dalam register. Oleh karena itu, kita tidak boleh membiarkan isi dari register ini termodifikasi oleh pihak lain, salah satunya adalah interrupt. Interrupt menyebabkan register instruction pointer (IP) atau program counter (PC) berpindah ke lokasi dimana interrupt handler berada. Yang bertugas menyediakan fungsi handler untuk seluruh interrupt adalah sistem operasi.

Seperti program lain, untuk bekerja, interrupt handler tentu membutuhkan register. Kita ingat bahwa konten register ini adalah bagian kerja dari program yang terinterupsi sebelumnya. Apabila termodifikasi sedikit saja, dapat dipastikan hasil kerja program menjadi tidak valid lagi. Jadi, sebuah interrupt handler perlu menyimpan konten seluruh register sebelum melakukan sesuatu, misalnya ke dalam stack.

Sebuah prosedur yang ditulis dengan bahasa pemrograman manapun, memiliki pola kerja yang sama. Jika direpresentasikan dalam bahasa assembly, semua prosedur dipanggil dengan cara yang sama, yaitu dengan instruksi CALL. Saat instruksi ini terjadi, sebenarnya prosesor menaruh nilai alamat Instruction Pointer(IP) ke stack dan melakukan jump(JMP) ke lokasi fungsi. Anda akan tahu tujuannya setelah membaca penjelasan selanjutnya.

Setiap prosedur, bagaimanapun bentuknya juga akan memiliki akhiran instruksi yang sama, yaitu RET. Instruksi RET berguna mengembalikan nilai IP yang baru saja ditaruh oleh pemanggil fungsi melalui instruksi CALL. Dengan cara seperti inilah prosesor bisa tahu dimana ia harus kembali setelah eksekusi sebuah fungsi telah selesai.

C:
MyProc(){
...
return;
}
Caller(){
MyProc();
}

ASM:
MyProc:
...
ret



Caller:
call MyProc

Bagaimana dengan interrupt? Mekanismenya masih sama, kok. Tapi, konten yang berada di dalam stack sedikit lebih banyak. Saat interrupt terjadi, prosesor melompat ke interrupt handler, sambil menaruh 3 buah data konten register yang berbeda ke dalam stack:
EFLAGS
CS
EIP

Lalu, bentuk fungsi handler interrupt tidak lagi menggunakan instruksi RET, ya. Untuk menyelesaikan eksekusi, handler menggunakan instruksi IRET. Instruksi ini akan mengembalikan konten ketiga register di atas ke posisi semula, bersamaan dengan kembali ke lokasi dimana program mulai terinterupsi.
Umumnya, interrupt handler akan menaruh konten general purpose register sebelum mulai bekerja dan mengembalikannya saat telah selesai. Dengan demikian, state kondisi kerja program yang terinterupsi tetap valid.

MyInterruptHandler:
pusha
...
popa
iret


Macam Interrupt
Ada beberapa kelompok besar interrupt yang biasa dikenal. Setiap jenisnya memiliki tingkah laku dan sumber pemicu yang berbeda.

1. Exception, yaitu interrupt yang dihasilkan oleh prosesor ketika terjadi kesalahan pada prosesor, karena eksekusi instruksi yang tidak dibenarkan kegunaannya, atau juga bisa karena prosesor menjalankan instruksi yang memang disediakan untuk menghasilkan exception secara disengaja. Exception itu sendiri dapat dibagi menjadi 3 macam:

  • Trap: Interupsi yang disengaja dengan menjalankan instruksi trap. Biasanya kondisi ini dimanfaatkan oleh sistem operasi untuk tujuan debugging.
  • Fault: Dipicu oleh kesalahan operasi yang dilakukan oleh prosesor. Seringkali interrupt dalam golongan ini muncul akibat eksekusi instruksi yang tidak valid. Dalam kondisi fault, sistem operasi biasanya masih dapat melakukan perbaikan dan melanjutkan eksekusi instruksi selanjutnya. Jika tidak memungkinkan, program yang menimbulkan fault harus diakhiri segera.
  • Abort: Timbul akibat kesalahan fatal prosesor yang sudah tidak dapat ditangani. Bisa disebabkan karena kerusakan, atau karena beberapa kesalahan fault yang seharusnya tidak dibiarkan.


2. Interrupt Request(IRQ), seringkali disebut sebagai hardware interrupt. Munculnya dipicu oleh peripheral device yang terhubung dengan jalur interupsi prosesor. Biasanya IRQ muncul saat hardware membutuhkan penanganan dari prosesor. Misalnya, ketika mouse digerakkan, ia akan mengirimkan interupsi untuk memberitahukan bahwa ada event yang sedang terjadi pada mouse. Dalam handler IRQ, terdapat deretan instruksi untuk melakukan transaksi data dengan hardware penghasil interrupt, melalui port. Setiap hardware yang dapat meghasilkan interupsi akan memiliki jalur interrupt yang berbeda dengan tujuan interupsi beragam. Jika ingin mengetahuinya secara detail, kita perlu membaca dokumen spesifikasi yang terkait dengan hardware tersebut.

3. Software Interrupt, yaitu interrupt yang dihasilkan oleh software. Biasanya digunakan untuk tujuan komunikasi antara user space program dan kernel. Di Intel, software interrupt dapat dihasilkan dengan instruksi INT x, dimana x adalah nomor interrupt handler yang akan dipanggil.
Read more

Perbedaan Port-Mapped I/O dan Memory-Mapped I/O

cpu board

Komunikasi data antara prosesor dan peripheral device dapat dilakukan dengan 2 cara, yaitu MMIO dan PMIO. Intel adalah salah satu proseesor yang lebih banyak menggunakan metode PMIO. Sedangkan MIPS dan ARM hanya mendukung satu macam metode transaksi data, yaitu menggunakan metode MMIO saja.

Dalam MMIO, jalur komunikasi bus terhubung bersama dengan jalur komunikasi bus untuk transaksi data dengan memori RAM. Sehingga, untuk dapat bekerja dengan adil, tidak boleh ada device yang memiliki alamat yang serupa dengan salah satu alamat yang diduduki oleh RAM. Untuk mengakses data dari device, prosesor tidak menyediakan satupun instruksi khusus. Ini karena, baik RAM ataupun device akan memiliki address space yang sama. Dengan kata lain, device bisa diakses seperti mengakses memori biasa.

Metode PMIO masih menggunakan sistem komunikasi bus yang sama, seperti MMIO, hanya saja prosesor yang menerapkan PMIO wajib menyediakan jalur bus tambahan yang terpisah dengan jalur bus untuk transaksi data dengan RAM. Kalau dilihat, Intel memiliki jumlah pin lebih banyak dari MIPS, ini karena ia butuh sambungan untuk melakukan transaksi PMIO.

Ekspansi jalur bus ini ditujukan khusus untuk transaksi data dengan peripheral device. Untuk itu, prosesor yang menerapkan PMIO perlu menyediakan instruksi khusus untuk melakukan transaksi data dengan device. Misalnya Intel. Ia menyediakan instruksi IN untuk mengambil data dari device dan OUT untuk mengirim data ke device.
memory mapped io vs port mapped io

Kiri: MMIO, Kanan : PMIO
Read more

Bagaimana Cara Prosesor dan Hardware Berkomunikasi?

Prosesor adalah pusat dari aktivitas komputer, dimana semua data diproses sedemikian rupa. Data yang perlu diproses oleh prosesor berasal dari salah satu peripheral device yang berperan sebagai input, misalnya keyboard, mouse dan camera. Hasil dari proses kemudian diteruskan ke salah satu peripheral deice yang berperan sebagai output. Ada banyak peripheral device yang terhubung oleh komputer, alur berjalannya data diatur oleh komputer namun, alamat tujuan/sumber device tetap diatur oleh program.

Karena ada banyak device yang terhubung dengan satu buah prosesor, diperlukan sebuah metode untuk mengatur ke alamat device manakah data harus di transfer. Oleh karena itu, komunikai data yang terjadi pada komputer secara abstrak dilakukan melalui system bus. System bus terdiri atas 3 macam sirkuit:
1. Address bus
2. Data bus
3. Control bus
system bus

Saat terjadi transaksi data dari komputer, prosesor mengirimkan data tersebut melalui data bus. Alamat tujuan data tersebut ditentukan oleh address bus. Dan, control bus akan menunjukkan sinyal dari prosesor bahwa ia perlu mengirim data. Saat ketiga jenis data ini terkirim, setiap device akan memeriksa apakah alamat yang dimaksud oleh prosesor tersebut adalah alamat yang tergolong dalam wilayah areanya atau bukan. Jika ia, maka ia akan mengambil data dari data bus dan menyimpannya pada memori internal yang sudah ditugaskan untuk menyimpan data pada alamatnya masing-massing.

Sementara itu, pembacaan data dari device tidak jauh berbeda. Transaksi dimulai dengan mengirim alamat sumber dan sinyal control bus untuk memulai tranaksi pembacaan data. Setelah alamat diketahui oleh salah satu device yang sesuai, ia akan mengirim data yang diminta ke data bus.

Ilustrasinya bisa dilihat pada gambar berikut.
Address bus ditujukkan oleh pin berlabel Addr x, Data bus terlihat berlabel Data x. Sedangkan Control bus terdiri atas IOR(I/O Read), IOW(I/O Write), MEMR dan MEMW. Contoh ini adalah contoh bus 8-bit, komputer sekarang kebanyakan memiliki lebar bus 32 bit atau 64-bit, jadi jelas lebih banyak dari ini.

Read more

Minggu, 18 Desember 2016

Perbedaan RISC dan CISC : Studi Kasus Intel dan MIPS


RISC singkatan dari Reduced Instruction Set Computer. Merupakan bagian dari arsitektur mikroprosessor, berbentuk kecil dan berfungsi untuk mengeset instruksi dalam komunikasi diantara arsitektur yang lainnya. Proyek RISC pertama dibuat oleh IBM, stanford dan UC-Berkeley pada akhir tahun 70 dan awal tahun 80an. IBM 801, Stanford MIPS, dan Berkeley RISC 1 dan 2 dibuat dengan konsep yang sama sehingga dikenal sebagai RISC.

Pendekatan CISC bertujuan untuk meminimalkan jumlah instruksi per program, dengan cara mengorbankan kecepatan eksekusi sekian silus/detik. Sedangkan RISC bertolak belakang, tujuannya mengurangi jumlah siklus/detik setiap instruksi dibayar dengan bertambahnya jumlah instruksi per program.

Perbedaan mencolok pada kedua arsitektur ini dapat dilihat pada model instruksi yang diterapkan. Semua jenis prosesor CISC memiliki panjang instruksi yang berbeda-beda, mulai dari 1 byte hingga lebih dari ukuran word prosesor 32-bit (4 byte). Sementara itu, prosesor RISC memiliki panjang instruksi yang selalu seragam. Biasanya mengikuti ukuran word size prosesor itu sendiri. Misalnya MIPS 32, memiliki instruksi berukuran 4 byte.

Karena keterbatasan RISC, arsitektur ini cenderung memiliki instruksi lebih sedikit dan sederhana. Panjang instruksi yang pendek tidak memungkinkan penggunaan operand dalam jenis immediate yang lengkap. Misalnya MIPS hanya dapat membaca operand immediate 16-bit. Ini karena 16-bit dari kode instruksi harus digunakan untuk menyimpan format dan konfiigurasi kerja instruksi.

Contohnya adalah pada kedua instruksi berikut.
Intel
mov eax,0x12345678

MIPS
lui $t2, 0x1234
ori $t2, $t2, 0x5678

Selain itu, arsitektur RISC tidak dapat mengakses memori secara langsung dari memori. Kesederhanaan RISC juga mengharuskan setiap instruksi selalu memakan waktu 1 CPU clock cycle saja.

Sebuah instruksi paling tidak harus melalui tahapan berikut:
1. Fetch : Kode instruksi dibaca dari memori
2. Decode : Penerjemahan instruksi
3. Execute : Eksekusi instruksi
4. Load/store : membaca/menulis data dari memori
Untuk menjaga agar setiap instruksi tidak memakan lebih dari sebuah cycle, maka setiap instruksi tidak akan mengerjakan tugas lebih dari 4 fase tersebut. Sebagai imbasnya, instruksi RISC cenderung lebih panjang dibanding instruksi CISC; untuk menyelesaikan pekerjaan yang sama.

Intel
mov eax,[0x00FF0123]

MIPS
lui $t2, 0x00FF
ori $t2, $t2, 0x0123
lw $t1,0($t1)


Intel
add [0xFACC1234],ebx

MIPS
lui $1,0xFACC
ori $t1,$t1,0x1234
lw $t3,0($t1)
addu  $t2, $t2, $t3
sw $t2,0($t1)

Tujuan utama dari arsitektur CISC adalah melaksanakan suatu perintah cukup dengan beberapa baris bahasa mesin sedikit mungkin. Hal ini bisa tercapai dengan cara membuat perangkat keras prosesor mampu memahami dan menjalankan beberapa rangkaian operasi. Saat dijalankan, instruksi akan membaca dua nilai dan menyimpannya ke 2 register yang berbeda, melakukan perkalian operan di unit eksekusi dan kemudian mengambalikan lagi hasilnya ke register yang benar. Jadi instruksi-nya cukup satu saja.

Satu kelebihan dari sistem CISC ini adalah kompiler hanya menerjemahkan instruksi-instruksi bahasa tingkat-tinggi ke dalam sebuah bahasa mesin. Karena panjang kode instruksi relatif pendek, hanya sedikit saja dari RAM yang digunakan untuk menyimpan instruksi-instruksi tersebut.

Meski demikian,  bukan berarti desain RISC tidak lebih baik dari CISC. Desain RISC memungkinkan proses pipelining jauh lebih mudah, karena semua instruksi memiliki jumlah fase dan waktu eksekusi yang sama. Selain itu, RISC juga memiliki desain lebih sederhana, sehingga meminimalkan biaya produksi dan waktu improvisasi.

Sumber

Read more