Selasa, 09 Desember 2008

Processor superscalar

A superscalar CPU architecture implements a form of parallelism called instruction-level parallelism within a single processor. It thereby allows faster CPU throughput than would otherwise be possible at the same clock rate. A superscalar processor executes more than one instruction during a clock cycle by simultaneously dispatching multiple instructions to redundant functional units on the processor. Each functional unit is not a separate CPU core but an execution resource within a single CPU such as an arithmetic logic unit, a bit shifter, or a multiplier.

While a superscalar CPU is typically also pipelined, they are two different performance enhancement techniques. It is theoretically possible to have a non-pipelined superscalar CPU or a pipelined non-superscalar CPU.

The superscalar technique is traditionally associated with several identifying characteristics. Note these are applied within a given CPU core.

Instructions are issued from a sequential instruction stream
CPU hardware dynamically checks for data dependencies between instructions at run time (versus software checking at compile time)
Accepts multiple instructions per clock cycle

History

Seymour Cray's CDC 6600 from 1965 is often mentioned as the first superscalar design. The Intel i960CA (1988) and the AMD 29000-series 29050 (1990) microprocessors were the first commercial single chip superscalar microprocessors. RISC CPUs like these brought the superscalar concept to micro computers because the RISC design results in a simple core, allowing straightforward instruction dispatch and the inclusion of multiple functional units (such as ALUs) on a single CPU in the constrained design rules of the time. This was the reason that RISC designs were faster than CISC designs through the 1980s and into the 1990s.

Except for CPUs used in some battery-powered devices, essentially all general-purpose CPUs developed since about 1998 are superscalar. Beginning with the "P6" (Pentium Pro and Pentium II) implementation, Intel's x86 architecture microprocessors have implemented a CISC instruction set on a superscalar RISC microarchitecture. Complex instructions are internally translated to a RISC-like "micro-ops" RISC instruction set, allowing the processor to take advantage of the higher-performance underlying processor while remaining compatible with earlier Intel processors.


From scalar to superscalar
The simplest processors are scalar processors. Each instruction executed by a scalar processor typically manipulates one or two data items at a time. By contrast, each instruction executed by a vector processor operates simultaneously on many data items. An analogy is the difference between scalar and vector arithmetic. A superscalar processor is sort of a mixture of the two. Each instruction processes one data item, but there are multiple redundant functional units within each CPU thus multiple instructions can be processing separate data items concurrently.

Superscalar CPU design emphasizes improving the instruction dispatcher accuracy, and allowing it to keep the multiple functional units in use at all times. This has become increasingly important when the number of units increased. While early superscalar CPUs would have two ALUs and a single FPU, a modern design such as the PowerPC 970 includes four ALUs, two FPUs, and two SIMD units. If the dispatcher is ineffective at keeping all of these units fed with instructions, the performance of the system will suffer.

A superscalar processor usually sustains an execution rate in excess of one instruction per machine cycle. But merely processing multiple instructions concurrently does not make an architecture superscalar, since pipelined, multiprocessor or multi-core architectures also achieve that, but with different methods.

In a superscalar CPU the dispatcher reads instructions from memory and decides which ones can be run in parallel, dispatching them to redundant functional units contained inside a single CPU. Therefore a superscalar processor can be envisioned having multiple parallel pipelines, each of which is processing instructions simultaneously from a single instruction thread.


Limitations
Available performance improvement from superscalar techniques is limited by two key areas:

The degree of intrinsic parallelism in the instruction stream, i.e. limited amount of instruction-level parallelism, and
The complexity and time cost of the dispatcher and associated dependency checking logic.
Existing binary executable programs have varying degrees of intrinsic parallelism. In some cases instructions are not dependent on each other and can be executed simultaneously. In other cases they are inter-dependent: one instruction impacts either resources or results of the other. The instructions a = b + c; d = e + f can be run in parallel because none of the results depend on other calculations. However, the instructions a = b + c; d = a + f might not be runnable in parallel, depending on the order in which the instructions complete while they move through the units.

When the number of simultaneously issued instructions increases, the cost of dependency checking increases extremely rapidly. This is exacerbated by the need to check dependencies at run time and at the CPU's clock rate. This cost includes additional logic gates required to implement the checks, and time delays through those gates. Research shows the gate cost in some cases may be nk gates, and the delay cost k2logn, where n is the number of instructions in the processor's instruction set, and k is the number of simultaneously dispatched instructions. In mathematics, this is called a combinatoric problem involving permutations.

Even though the instruction stream may contain no inter-instruction dependencies, a superscalar CPU must nonetheless check for that possibility, since there is no assurance otherwise and failure to detect a dependency would produce incorrect results.

No matter how advanced the semiconductor process or how fast the switching speed, this places a practical limit on how many instructions can be simultaneously dispatched. While process advances will allow ever greater numbers of functional units (e.g, ALUs), the burden of checking instruction dependencies grows so rapidly that the achievable superscalar dispatch limit is fairly small. -- likely on the order of five to six simultaneously dispatched instructions.

However even given infinitely fast dependency checking logic on an otherwise conventional superscalar CPU, if the instruction stream itself has many dependencies, this would also limit the possible speedup. Thus the degree of intrinsic parallelism in the code stream forms a second limitation.


Alternatives
Collectively, these two limits drive investigation into alternative architectural performance increases such as Very Long Instruction Word (VLIW), Explicitly Parallel Instruction Computing (EPIC), simultaneous multithreading (SMT), and multi-core processors.

With VLIW, the burdensome task of dependency checking by hardware logic at run time is removed and delegated to the compiler. Explicitly Parallel Instruction Computing (EPIC) is like VLIW, with extra cache prefetching instructions.

Simultaneous multithreading, often abbreviated as SMT, is a technique for improving the overall efficiency of superscalar CPUs. SMT permits multiple independent threads of execution to better utilize the resources provided by modern processor architectures.

Superscalar processors differ from multi-core processors in that the redundant functional units are not entire processors. A single processor is composed of finer-grained functional units such as the ALU, integer multiplier, integer shifter, floating point unit, etc. There may be multiple versions of each functional unit to enable execution of many instructions in parallel. This differs from a multicore CPU that concurrently processes instructions from multiple threads, one thread per core. It also differs from a pipelined CPU, where the multiple instructions can concurrently be in various stages of execution, assembly-line fashion.

The various alternative techniques are not mutually exclusive—they can be (and frequently are) combined in a single processor. Thus a multicore CPU is possible where each core is an independent processor containing multiple parallel pipelines, each pipeline being superscalar. Some processors also include vector capability.

See also
Super-threading
Simultaneous multithreading
Speculative execution / Eager execution
Software lockout, a multiprocessor issue similar to logic dependencies on superscalars

Pipelining

Pipeline (computing)

A technique used in advanced microprocessors where the microprocessor begins executing a second instruction before the first has been completed. That is, several instructions are in the pipeline simultaneously, each at a different processing stage.
The pipeline is divided into segments and each segment can execute its operation concurrently with the other segments. When a segment completes an operation, it passes the result to the next segment in the pipeline and fetches the next operation from the preceding segment. The final results of each instruction emerge at the end of the pipeline in rapid succession.

Although formerly a feature only of high-performance and RISC -based microprocessors, pipelining is now common in microprocessors used in personal computers. Intel's Pentium chip, for example, uses pipelining to execute as many as six instructions simultaneously.

Pipelining is also called pipeline processing.

(2) A similar technique used in DRAM, in which the memory loads the requested memory contents into a small cache composed of SRAM and then immediately begins fetching the next memory contents. This creates a two-stage pipeline, where data is read from or written to SRAM in one stage, and data is read from or written to memory in the other stage.

DRAM pipelining is usually combined with another performance technique called burst mode. The two techniques together are called a pipeline burst cache.


For the downloading technique, see HTTP pipelining.

Instruction scheduling on the Intel Pentium 4.In computing, a pipeline is a set of data processing elements connected in series, so that the output of one element is the input of the next one. The elements of a pipeline are often executed in parallel or in time-sliced fashion; in that case, some amount of buffer storage is often inserted between elements.

Computer-related pipelines include:

Instruction pipelines, such as the classic RISC pipeline, which are used in processors to allow overlapping execution of multiple instructions with the same circuitry. The circuitry is usually divided up into stages, including instruction decoding, arithmetic, and register fetching stages, wherein each stage processes one instruction at a time.
Graphics pipelines, found in most graphics cards, which consist of multiple arithmetic units, or complete CPUs, that implement the various stages of common rendering operations (perspective projection, window clipping, color and light calculation, rendering, etc.).
Software pipelines, consisting of multiple processes arranged so that the output stream of one process is automatically and promptly fed as the input stream of the next one. Unix pipelines are the classical implementation of this concept.

Concept and motivation

Pipelining is a natural concept in everyday life, e.g. on an assembly line. Consider the assembly of a car: assume that certain steps in the assembly line are to install the engine, install the hood, and install the wheels (in that order, with arbitrary interstitial steps). A car on the assembly line can have only one of the three steps done at once. After the car has its engine installed, it moves on to having its hood installed, leaving the engine installation facilities available for the next car. The first car then moves on to wheel installation, the second car to hood installation, and a third car begins to have its engine installed. If engine installation takes 20 minutes, hood installation takes 5 minutes, and wheel installation takes 10 minutes, then finishing all three cars when only one car can be operated at once would take 105 minutes. On the other hand, using the assembly line, the total time to complete all three is 75 minutes. At this point, additional cars will come off the assembly line at 20 minute increments.

Costs, drawbacks, and benefits

As the assembly line example shows, pipelining doesn't decrease the time for a single datum to be processed; it only increases the throughput of the system when processing a stream of data.

High pipelining leads to increase of latency - the time required for a signal to propagate through a full pipe.

A pipelined system typically requires more resources (circuit elements, processing units, computer memory, etc.) than one that executes one batch at a time, because its stages cannot reuse the resources of a previous stage. Moreover, pipelining may increase the time it takes for an instruction to finish.

Sabtu, 06 Desember 2008

RISC VS CISC, Procesor superskalar

Disingkat dengan RISC. Rangkaian instruksi built-in pada processor yang terdiri dari perintah-perintah yang lebih ringkas dibandingkan dengan CISC. RISC memiliki keunggulan dalam hal kecepatannya sehingga banyak digunakan untuk aplikasi-aplikasi yang memerlukan kalkulasi secara intensif. Konsep RISC pertama kali dikembangkan oleh IBM pada era 1970-an. Komputer pertama yang menggunakan RISC adalah komputer mini IBM 807 yang diperkenalkan pada tahun 1980. Dewasa ini, RISC digunakan pada keluarga processor buatan Motorola (PowerPC) dan SUN Microsystems (Sparc, UltraSparc).

RISC dikembangkan melalui seorang penelitinya yang bernama John Cocke, beliau menyampaikan bahwa sebenarnya kekhasan dari komputer tidaklah menggunakan banyak instruksi, namun yang dimilikinya adalah instruksi yang kompleks yang dilakukan melalui rangkaian sirkuit.

Pada desain chip mikroprosesor jenis ini, pemroses diharapkan dapat melaksanakan perintah-perintah yang dijalankannya secara cepat dan efisien melalui penyediaan himpunan instruksi yang jumlahnya relatif sedikit, dengan mengambil perintah-perintah yang sangat sederhana, akibatnya arsitektur RISC membatasi jumlah instruksinya yang dipasang ke dalam mikroprosesor tetapi mengoptimasi setiap instruksi sehingga dapat dilaksanakan dengan cepat.
Dengan demikian instruksi yang sederhana dapat dilaksanakan lebih cepat apabila dibandingkan dengan mikroprosesor yang dirancang untuk menangan susunan instruksi yang lebih luas.

Dengan demikian chip RISC hanya dapat memproses instruksi dalam jumlah terbatas, tetapi instruksi ini dioptimalkan sehingga cepat dieksekusi. Meski demikian, bila harus menangani tugas yang kompleks, instruksi harus dibagi menjadi banyak kode mesin, terutama sebelum chip RISC dapat menanganinya. Karena keterbatasan jumlah instruksi yang ada padanya, apabila terjadi kesalahan dalam pemrosesan akan memudahkan dalam melacak kesalahan tersebut.
Pada tahun 1980-an kapasitas modul memori meningkat dan harganya turun. Penekanan pada desain CPU bergeser ke kinerja, dan RISC menjadi trend baru. Contoh arsitektur RISC meliputi SPARC dari Sun Microsystems; seri MIPS Rxxxx dari MIPS Technologies; Alpha dari Digital Equipment; PowerPC yang dikembangkan bersama oleh IBM dan Motorola; dan RISC dari Hewlett-Packard.

Chip RISC menggunakan sejumlah kecil instruksi dengan panjang-sama yang relatif sederhana, yaitu panjangnya selalu 32 bit. Walaupun hal ini memboroskan memori karena harus dibuat program lebih besar, instruksi lebih mudah dan cepat dieksekusi.
Karena chip ini berurusan dengan jenis instruksi lebih sedikit, chip RISC membutuhkan lebih sedikit transistor ketimbang chip CISC dan umumnya berkinerja lebih tinggi pada kecepatan clock yang sama, walaupun chip ini harus mengeksekusi lebih banyak instruksi lebih pendek untuk menyelesaikan sebuah fungsi.

Kesederhanaan RISC juga mempermudah merancang prosesor superscalar - chip yang dapat mengeksekusi lebih dari satu instruksi pada satu saat. Hampir semua prosesor RISC dan CISC modern adalah superscalar; tetapi untuk mencapai kemampuan ini membuat desain lebih rumit.

Kebalikan dari arsitektur chip mikrprosesor dari RISC adalah CISC (baca ”sisk”, yang merupakan singkatan dari complex instruction set computing, dimana mikroprosesor memiliki lebih banyak instruksi yang terdapat di dalamnya.
Disingkat dengan RISC. Rangkaian instruksi built-in pada processor yang terdiri dari perintah-perintah yang lebih ringkas dibandingkan dengan CISC. RISC memiliki keunggulan dalam hal kecepatannya sehingga banyak digunakan untuk aplikasi-aplikasi yang memerlukan kalkulasi secara intensif. Konsep RISC pertama kali dikembangkan oleh IBM pada era 1970-an. Komputer pertama yang menggunakan RISC adalah komputer mini IBM 807 yang diperkenalkan pada tahun 1980. Dewasa ini, RISC digunakan pada keluarga processor buatan Motorola (PowerPC) dan SUN Microsystems (Sparc, UltraSparc).

RISC dikembangkan melalui seorang penelitinya yang bernama John Cocke, beliau menyampaikan bahwa sebenarnya kekhasan dari komputer tidaklah menggunakan banyak instruksi, namun yang dimilikinya adalah instruksi yang kompleks yang dilakukan melalui rangkaian sirkuit.

Pada desain chip mikroprosesor jenis ini, pemroses diharapkan dapat melaksanakan perintah-perintah yang dijalankannya secara cepat dan efisien melalui penyediaan himpunan instruksi yang jumlahnya relatif sedikit, dengan mengambil perintah-perintah yang sangat sederhana, akibatnya arsitektur RISC membatasi jumlah instruksinya yang dipasang ke dalam mikroprosesor tetapi mengoptimasi setiap instruksi sehingga dapat dilaksanakan dengan cepat.
Dengan demikian instruksi yang sederhana dapat dilaksanakan lebih cepat apabila dibandingkan dengan mikroprosesor yang dirancang untuk menangan susunan instruksi yang lebih luas.

Dengan demikian chip RISC hanya dapat memproses instruksi dalam jumlah terbatas, tetapi instruksi ini dioptimalkan sehingga cepat dieksekusi. Meski demikian, bila harus menangani tugas yang kompleks, instruksi harus dibagi menjadi banyak kode mesin, terutama sebelum chip RISC dapat menanganinya. Karena keterbatasan jumlah instruksi yang ada padanya, apabila terjadi kesalahan dalam pemrosesan akan memudahkan dalam melacak kesalahan tersebut.

Pada tahun 1980-an kapasitas modul memori meningkat dan harganya turun. Penekanan pada desain CPU bergeser ke kinerja, dan RISC menjadi trend baru. Contoh arsitektur RISC meliputi SPARC dari Sun Microsystems; seri MIPS Rxxxx dari MIPS Technologies; Alpha dari Digital Equipment; PowerPC yang dikembangkan bersama oleh IBM dan Motorola; dan RISC dari Hewlett-Packard.
Chip RISC menggunakan sejumlah kecil instruksi dengan panjang-sama yang relatif sederhana, yaitu panjangnya selalu 32 bit. Walaupun hal ini memboroskan memori karena harus dibuat program lebih besar, instruksi lebih mudah dan cepat dieksekusi.
Karena chip ini berurusan dengan jenis instruksi lebih sedikit, chip RISC membutuhkan lebih sedikit transistor ketimbang chip CISC dan umumnya berkinerja lebih tinggi pada kecepatan clock yang sama, walaupun chip ini harus mengeksekusi lebih banyak instruksi lebih pendek untuk menyelesaikan sebuah fungsi.

Kesederhanaan RISC juga mempermudah merancang prosesor superscalar - chip yang dapat mengeksekusi lebih dari satu instruksi pada satu saat. Hampir semua prosesor RISC dan CISC modern adalah superscalar; tetapi untuk mencapai kemampuan ini membuat desain lebih rumit.
Kebalikan dari arsitektur chip mikrprosesor dari RISC adalah CISC (baca ”sisk”, yang merupakan singkatan dari complex instruction set computing, dimana mikroprosesor memiliki lebih banyak instruksi yang terdapat di dalamnya.

CISC
Complex instruction-set computing atau Complex Instruction-Set Computer (CISC; "Kumpulan instruksi komputasi kompleks") adalah sebuah arsitektur dari set instruksi dimana setiap instruksi akan menjalankan beberapa operasi tingkat rendah, seperti pengambilan dari memory, operasi aritmetika, dan penyimpanan ke dalam memory, semuanya sekaligus hanya di dalam sebuah instruksi. Karakteristik CISC dapat dikatakan bertolak-belakang dengan RISC.

Sebelum proses RISC didesain untuk pertama kalinya, banyak arsitek komputer mencoba menjembatani celah semantik", yaitu bagaimana cara untuk membuat set-set instruksi untuk mempermudah pemrograman level tinggi dengan menyediakan instruksi "level tinggi" seperti pemanggilan procedure, proses pengulangan dan mode-mode pengalamatan kompleks sehingga struktur data dan akses array dapat dikombinasikan dengan sebuah instruksi. Karakteristik CISC yg "sarat informasi" ini memberikan keuntungan di mana ukuran program-program yang dihasilkan akan menjadi relatif lebih kecil, dan penggunaan memory akan semakin berkurang. Karena CISC inilah biaya pembuatan komputer pada saat itu (tahun 1960) menjadi jauh lebih hemat.

Memang setelah itu banyak desain yang memberikan hasil yang lebih baik dengan biaya yang lebih rendah, dan juga mengakibatkan pemrograman level tinggi menjadi lebih sederhana, tetapi pada kenyataannya tidaklah selalu demikian. Contohnya, arsitektur kompleks yang didesain dengan kurang baik (yang menggunakan kode-kode mikro untuk mengakses fungsi-fungsi hardware), akan berada pada situasi di mana akan lebih mudah untuk meningkatkan performansi dengan tidak menggunakan instruksi yang kompleks (seperti instruksi pemanggilan procedure), tetapi dengan menggunakan urutan instruksi yang sederhana.

Satu alasan mengenai hal ini adalah karena set-set instruksi level-tinggi, yang sering disandikan (untuk kode-kode yang kompleks), akan menjadi cukup sulit untuk diterjemahkan kembali dan dijalankan secara efektif dengan jumlah transistor yang terbatas. Oleh karena itu arsitektur -arsitektur ini memerlukan penanganan yang lebih terfokus pada desain prosesor. Pada saat itu di mana jumlah transistor cukup terbatas, mengakibatkan semakin sempitnya peluang ditemukannya cara-cara alternatif untuk optimisasi perkembangan prosesor. Oleh karena itulah, pemikiran untuk menggunakan desain RISC muncul pada pertengahan tahun 1970 (Pusat Penelitian Watson IBM 801 - IBMs)

Contoh-contoh prosesor CISC adalah System/360, VAX, PDP-11, varian Motorola 68000 , dan CPU AMD dan Intel x86.

Istilah RISC dan CISC saat ini kurang dikenal, setelah melihat perkembangan lebih lanjut dari desain dan implementasi baik CISC dan CISC. Implementasi CISC paralel untuk pertama kalinya, seperti 486 dari Intel, AMD, Cyrix, dan IBM telah mendukung setiap instruksi yang digunakan oleh prosesor-prosesor sebelumnya, meskipun efisiensi tertingginya hanya saat digunakan pada subset x86 yang sederhana (mirip dengan set instruksi RISC, tetapi tanpa batasan penyimpanan/pengambilan data dari RISC). Prosesor-prosesor modern x86 juga telah menyandikan dan membagi lebih banyak lagi instruksi-instruksi kompleks menjadi beberapa "operasi-mikro" internal yang lebih kecil sehingga dapat instruksi-instruksi tersebut dapat dilakukan secara paralel, sehingga mencapai performansi tinggi pada subset instruksi yang lebih besar.

Mikrokontroler yang beredar saat ini dibedakan menjadi dua macam, berdasarkan arsitekturnya:

* Tipe CISC atau Complex Instruction Set Computing yang lebih kaya instruksi tetapi fasilitas internal secukupnya saja (seri AT89 memiliki 255 instruksi);
* Tipe RISC atau Reduced Instruction Set Computing yang justru lebih kaya fasilitas internalnya tetapi jumlah instruksi secukupnya (seri PIC16F hanya ada sekitar 30-an instruksi).

Fasilitas internal yang saya maksudkan di sini antara lain: jumlah dan macam register internal, pewaktu dan/atau pencacah, ADC atau DAC, unit komparator, interupsi eksternal maupun internal dan lain sebagainya.

Yang mana sesuai dengan Anda? Sesuaikan dengan kebutuhan dan fitur-fitur yang ditawarkan oleh masing-masing mikrokontroler. Tidak ada ukuran secara pasti suatu jenis mikrokontroler lebih baik dibandingkan mikrokontroler lainnya.

Superscalar

Prosesor super scalar out-of-order x86 seperti PII da PII juga memiliki multiple fungdional unit yang dapat mengoperasikan banyak operasi secara paralel (seperti RISC). Tetapi karena pemberian instruksi terurut itu menggunakan perangkat keras, maka prosesor menjadi lebih kompleks. Dan lagi karena instruksi x86 yang kompleks, maka perangkat keras yang dibutuhkan untuk pengkode menjadi banyak dan membutukan disipasi panas yang lebih besar. Berikut ini ditampilkan gambar alur eksekusi dari instrusi pada prosesor x86. Alur pemberian instruksi pada x86 Superscalar


Eksekusi prosesor superskalar

Dalam disain superskalar konvensional, penulis perangkat lunak menulis program sekuensial pada bahasa pemrograman tingkat tinggi dan lalu dikompilasi ke bahasa mesin. Kode mesin ini dijalankan secara sekuensial juga, dan instruksi CPU diatur sehingga diumpankan pada perangkat keras dan dijalankan secara paralel. Scheduler secara teliti akan menguji keterkaitan kode, dan mengurutkannya sebelum dijalankan. Pada akhirnya, kode yang sekuensial itu dijalankan oleh CPU secara paralel. Melakukan hal ini dengan program membutuhkan beban kerja yang berat di CPU, dan sering membutuhkan biaya tambahan (baik siklus clock atau jumlah transistor)

Jumat, 28 November 2008

TUGAS TERAKHIR

Saya mengambil topik tentang memory eksternal yang menjelaskan tentang magnektic dics, raid ,pita maqnetic , dan cd room.
karena pada zaman sekarang kita sudah banyak menggunakan memory eksternal untuk menyimpan segala dokumen yang sangat penting ..
contoh saja :
Sistem pita menggunakan teknik pembacaan dan penulisan yang sama dengan sistem disk.
Media sistem ini adalah pita mylar lentur yang dilapisi dengan oksida magnet.
Pita dan drive pita merupakan analog terhadap sistem tape recorder.
Medium pita berbentuk track-track paralel dalam jumlah sedikit.
Sistem pita magnetik kuno memakai 9 buah track.
Sistem pita magnetik terbaru menggunakan 18 atau 36 track.
Data ditulisi dan dibaca dalam bentuk blok-blok continous yang disebut physical records pada pita.
Blok-blok pada pita dipisahkan dipisahkan oleh gap yang dikenal sebagai inter-record gaps.

SET INSTRUKSI

Set instruksi 14-bit digunakan dalam mikrokontroler PIC keluarga mid-range. Set instruksi 14-bit terdiri dari 35 buah instruksi single word. Setiap word terdiri dari opcode dan operand yang dipaket dalam string biner 14 bit. Setiap instruksi hanya menggunakan satu siklus instruksi, kecuali instruksi percabangan. Set instruksi 14-bit digunakan dalam mikrokontroler berikut ini:

  • PIC16F84
  • PIC16F877


Klasifikasi


Berdasarkan strukturnya, set instruksi 14-bit dapat dikelompokkan menjadi instruksi berorientsi byte, instruksi berorientasi bit serta instruksi literal dan kontrol.

  • Instruksi berorientasi byte, yaitu: ADDWF, ANDWF, CLRF, CLRW, COMF, DECF, DECFSZ, INCF, INCFSZ, IORWF, MOVF, MOVWF, NOP, RLF, RRF, SUBWF, SWAPF, XORWF
  • Instruksi berorientasi bit, yaitu: BCF, BSF, BTFSC, BTFSS
  • Instruksi literal dan kontrol, yaitu: ADDLW, ANDLW, CALL, CLRWDT, GOTO, IORLW, MOVLW, RETFIE, RETLW, RETURN, SLEEP, SUBLW, XORLW


Berdasarkan funsginya, set instruksi 14-bit dapat dikelompokkan menjadi:

  • Instruksi aritmatika, yaitu: ADDLW, ADDWF, DECF, DECFSZ, INCF, INCFSZ, SUBLW, SUBWF
  • Instruksi Logika, yaitu: COMF, ANDLW, ANDWF, IORLW, IORWF, XORLW, XORWF
  • Instruksi Transfer data, yaitu: MOVLW, MOVF, MOVWF, RLF, RRF, SWAPF
  • Instruksi Percabangan, yaitu: BTFSC, BTFSS, CALL, GOTO, RETFIE, RETLW, RETURN
  • Instruksi Kendali, yaitu: SLEEP, CLRWDT
  • Instruksi tambahan, yaitu: CLRF, CLRW, NOP, BCF, BSF


Beberapa diantara set instruksi 14-bit mempengaruhi flag. Flag adalah penanda/indikator kondisi tertentu yang dihasilkan sebuah operasi. Flag yang dapat dipengaruhi adalah Z, DC, C, TO dan PD. Flag Z akan aktif jika register W bernilai 0x00. Flag C akan aktif jika ada transisi dari 0xff ke 0x00 dan DC akan aktif jika ada transisi dari 0x0f ke 0x10. Flag TO akan aktif jika waktu tunggu WDT (Watchdog Timer) telah habis. Flag PD aktif jika mikrokontroler memasuki modus SLEEP. Aktifnya sebuah flag ditandai dengan logika "1", kecuali untuk TO dan PD karena keduanya aktif rendah.


Pengkodean


Set Instruksi 14 bit terdiri dari opcode dan operand. operandnya dapat berupa b, d, f dan k. Operand b lebarnya 3 bit, digunakan untuk menotasikan alamat bit (bit 0 hingga bit 7). Operand d lebarnya 1 bit, digunakan untuk menotasikan tujuan operasi, jika "0" maka hasil tersimpan di register w, jika "1" maka hasil tersimpan di register f. Operand f lebarnya 5 bit, digunakan untuk menotasikan alamat register f (0x00 hingga 0x3f). Terakhir, operand k digunakan untuk menotasikan data literal baik 8 bit maupun 9 bit.

Nama Lebar Fungsi Range Kombinasi
d 1 Tujuan operasi 0 s.d 1 2
f 7 Alamat register f 0x00 0x7f 128
b 3 Alamat bit 0 s.d 7 8
k1 8 Literal 0x00 s.d 0xff 256
k2 11 Literal 0x00 s.d 0x7ff 2048
  • Instruksi berorientasi byte terdiri dari opcode, alamat register f dan tujuan (d). 7 bit paling kanan digunakan untuk menyimpan opcode, 6 bit paling kiri digunakan untuk menyimpan alamat register dan 1 bit sisanya digunakan sebagai indikator tujuan. pemetaannya adalah sebagai berikut:
  • Instruksi berorientasi bit terdiri dari opcode, alamat bit (d) dan tujuan (d). 4 bit paling kanan digunakan untuk menyimpan opcode, 7 bit paling kiri digunakan untuk menyimpan alamat register dan 3 bit sisanya digunakan untuk menyimpan alamat bit. Pemetaanya adalah sebagai berikut:
  • Instruksi literal dan kontrol terdiri dari opcode dan data literal. Data literal (lebarnya 8 bit atau 11 bit) ditempatkan paling kanan sedangkan sisanya digunakan untuk menyimpan opcode.


Rincian



ADDLW [Add Literal and W]

Sintaks: [label] ADDLW k

Operasi: W = W + k

Status terpengaruh: C, DC, Z

Deskripsi: Hasil penjumlahan W dan k disimpan ke W


ADDWF [Add W and f]

Sintaks: [label] ADDWF f,d

Operasi: d = W + f

Status terpengaruh: C, DC, Z

Deskripsi: Hasil penjumlahan W dan f disimpan ke d


ANDLW [AND Literal with W]

Sintaks: [label] ANDLW k

Operasi: W = W AND k

Status terpengaruh: Z

Deskripsi: Hasil AND antara W dan f disimpan ke W


ANDWF [AND W with f]

Sintaks: [label] ANDWF f,d

Operasi: d = W AND f

Status terpengaruh: Z

Deskripsi: Hasil AND antara W dan f disimpan ke d


BCF [Bit Clear f]

Sintaks: [label] BCF f,b

Operasi: f = 0

Status terpengaruh: -

Deskripsi: Bit b register f direset


BSF [Bit Set f]

Sintaks: [label] BSF f,b

Operasi: f = 1

Status terpengaruh: -

Deskripsi: Bit b register f diset


BTFSS [Bit Test f, Skip If Set]

Sintaks: [label] BTFSS f,b

Operasi: loncat jika f = 1

Status terpengaruh: -

Deskripsi: Jika bit b register f = "1", loncati baris selanjutnya


BTFSC [Bit Test, skip if Clear]

Sintaks: [label] BTFSC f,b

Operasi: loncat jika f = 0

Status terpengaruh: -

Deskripsi: Jika bit b register f = "1", loncati baris selanjutnya


CALL [Call Subroutine]

Sintaks: [ label ] CALL k

Operasi: TOS = PC + 1; PC<10:0> = k; PC<12:11> = PCLATH<4:3>

Status terpengaruh: -

Deskripsi: Pemangilan subrutin


CLRF [Clear f]

Sintaks: [label] CLRF f

Operasi: f = 0x00

Status terpengaruh: Z

Deskripsi: Isi register f dengan 0x00


CLRW [Clear W]

Sintaks: [ label ] CLRW

Operasi: W = 0x00

Status terpengaruh: Z

Deskripsi: Isi register W dengan 0x00


CLRWDT [Clear Watchdog Timer]

Sintaks: [ label ] CLRWDT

Operands: -

Operasi: WDT = 0x00

Status terpengaruh: TO, PD

Deskripsi: Reset timer WDT dan preskalarnya


COMF [Complement f]

Sintaks: [ label ] COMF f,d

Operasi: d = inv (f)

Status terpengaruh: Z

Deskripsi: simpan komplemen f di d


DECF [Decrement f]

Sintaks: [label] DECF f,d

Operasi: d = f -1

Status terpengaruh: Z

Deskripsi: Kurangi f, simpan di d


DECFSZ [Decrement f, skip if 0]

Sintaks: [ label ] DECFSZ f,d

Operasi: d = f - 1 ; loncat jika 0

loncat jika result = 0

Status terpengaruh: -

Deskripsi: Jika hasil pengurangan register f = 0 maka loncati instruksi selanjutnya


GOTO [Unconditional Branch]

Sintaks: [ label ] GOTO k

Operasi: PC<10:0> = k; PC<12:11> = PCLATH<4:3>

Status terpengaruh: -

Deskripsi: Percabangan tak bersyarat


INCF [Increment f]

Sintaks: [ label ] INCF f,d

Operasi: d = f + 1

Status terpengaruh: Z

Deskripsi: Tambahkan f, simpan di d


INCFSZ [Increment f, skip if 0] Sintaks: [ label ] INCFSZ f,d

Operasi: d = f + 1; loncat jika 0

loncat jika result = 0

Status terpengaruh: -

Deskripsi: Jika hasil penambambahan register f = 0 maka loncati instruksi selanjutmya


IORLW [Inclusive OR Literal with W]

Sintaks: [ label ] IORLW k

Operasi: W = W OR k

Status terpengaruh: Z

Deskripsi: Regsiter W di OR-kan dengan k, simpan di W


IORWF [Inclusive OR W with f]

Sintaks: [ label ] IORWF f,d

Operasi: d = W OR f

Status terpengaruh: Z

Deskripsi: Regsiter W di OR-kan dengan f, simpan di d


MOVF [Move f]

Sintaks: [ label ] MOVF f,d

Operasi: d = f

Status terpengaruh: Z

Deskripsi: Salin register f ke d


MOVLW [Move Literal to W]

Sintaks: [ label ] MOVLW k

Operasi: W = k

Status terpengaruh: -

Deskripsi: Salin literal k ke register W


MOVWF [Move W to f]

Sintaks: [ label ] MOVWF f

Operasi: f = W

Status terpengaruh: -

Deskripsi: Salin register W ke register f


NOP [No Operation]

Sintaks: [ label ] NOP

Operasi: No Operasi

Status terpengaruh: -

Deskripsi: Tidak ada operasi


RETFIE [Return from Interrupt]

Sintaks: [ label ] RETFIE

Operasi: PC = TOS; GIE = 1

Status terpengaruh: -

Deskripsi : Kembali dari rutin interupsi


RETLW [Return with Literal in W]

Sintaks: [ label ] RETLW k

Operasi: W = k; PC = TOS

Status terpengaruh: -

Deskripsi: Kembali dari subrutin dengan membawa nilai literal k pada register W


RLF [Rotate Left f through Carry]

Sintaks: [ label ] RLF f,d

Operasi: d = Geser Kiri (f)

Status terpengaruh: C

Deskripsi: Geser register f ke kiri melalui Carry, simpan di d


RETURN [Return from Subroutine]

Sintaks: [ label ] RETURN

Operasi: PC = TOS

Status terpengaruh: -

Deskripsi: Kembali dari subrutin


RRF [Rotate Right f through Carry]

Sintaks: [ label ] RRF f,d

Operasi: Geser Kanan (f)

Status terpengaruh: C

Deskripsi: Geser kanan register f melalaui Carry, simpan di d


SLEEP [modus SLEEP]

Sintaks: [ label ] SLEEP

Operasi: WDT = 0; TO = 1; PD = 1

Status terpengaruh: TO, PD

Deskripsi: Memasuki modus SLEEP, aktifkan flag PD


SUBLW [Subtract W from Literal]

Sintaks: [ label ] SUBLW k

Operasi: W = k - W

Status terpengaruh: C, DC, Z

Deskripsi: Kurangi W dari k simpan di W


SUBWF [Subtract W from f]

Sintaks: [ label ] SUBWF f,d

Operasi: d = f - W

Status Affected: C, DC, Z

Deskripsi: Kurangi W dari f, simpan di d


SWAPF [Swap Nibbles in f]

Sintaks: [ label ] SWAPF f,d

Operasi: (f<3:0>) -> (destination<7:4>); (f<7:4>) -> (destination<3:0>)

Status terpengaruh: -

Deskripsi: Tukarkan nibble atas dan nibble bawah, simpan di d


XORLW [Exclusive OR Literal with W]

Sintaks: [label] XORLW k

Operasi: W = W XOR k

Status terpengaruh: Z

Deskripsi: Hasil XOR antara register W dan k disimpan di register W


XORWF [Exclusive OR W with f]

Sintaks: [label] XORWF f,d

Operasi: d = W XOR f

Status terpengaruh: Z

memory

Memori merupakan bagian dari komputer yang berfungsi sebagai tempat penyimpanan informasi yang harus diatur dan dijaga sebaik-baiknya. Sebagian besar komputer memiliki hirarki memori yang terdiri atas tiga level, yaitu:

  • Register di CPU, berada di level teratas. Informasi yang berada di register dapat diakses dalam satu clock cycle CPU.

  • Primary Memory (executable memory), berada di level tengah. Contohnya, RAM. Primary Memory diukur dengan satu byte dalam satu waktu, secara relatif dapat diakses dengan cepat, dan bersifat volatile (informasi bisa hilang ketika komputer dimatikan). CPU mengakses memori ini dengan instruksi single load dan store dalam beberapa clock cycle.

  • Secondary Memory, berada di level bawah. Contohnya, disk atau tape. Secondary Memory diukur sebagai kumpulan dari bytes (block of bytes), waktu aksesnya lambat, dan bersifat non-volatile (informasi tetap tersimpan ketika komputer dimatikan). Memori ini diterapkan di storage device, jadi akses meliputi aksi oleh driver dan physical device.

Gambar 1.1. Gambar Hirarki Memori

Gambar Hirarki Memori

Komputer yang lebih canggih memiliki level yang lebih banyak pada sistem hirarki memorinya, yaitu cache memory dan bentuk lain dari secondary memory seperti rotating magnetic memory, optical memory, dan sequntially access memory. Akan tetapi, masing-masing level ini hanya sebuah penyempurnaan salah satu dari tiga level dasar yang telah dijelaskan sebelumnya.

Bagian dari sistem operasi yang mengatur hirarki memori disebut dengan memory manager. Di era multiprogramming ini, memory manager digunakan untuk mencegah satu proses dari penulisan dan pembacaan oleh proses lain yang dilokasikan di primary memory, mengatur swapping antara memori utama dan disk ketika memori utama terlalu kecil untuk memegang semua proses.

Tujuan dari manajemen ini adalah untuk:

  • Meningkatkan utilitas CPU

  • Data dan instruksi dapat diakses dengan cepat oleh CPU

  • Efisiensi dalam pemakaian memori yang terbatas

  • Transfer dari/ke memori utama ke/dari CPU dapat lebih efisien

Memory Virtual

Memori virtual adalah suatu teknik yang memisahkan antara memori logis dan memori fisiknya. Memori logis merupakan kumpulan keseluruhan halaman dari suatu program. Tanpa memori virtual, memori logis akan langsung dibawa ke memori fisik (memori utama). Disinilah memori virtual melakukan pemisahan dengan menaruh memori logis ke secondary storage (disk sekunder) dan hanya membawa halaman yang diperlukan ke memori utama (memori fisik). Teknik ini menempatkan keseluruhan program di disk sekunder dan membawa halaman-halaman yang diperlukan ke memori fisik sehingga memori utama hanya akan menyimpan sebagian alamat proses yang sering digunakan dan sebagian lainnya akan disimpan dalam disk sekunder dan dapat diambil sesuai dengan kebutuhan. Jadi jika proses yang sedang berjalan membutuhkan instruksi atau data yang terdapat pada suatu halaman tertentu maka halaman tersebut akan dicari di memori utama. Jika halaman yang diinginkan tidak ada maka akan dicari ke disk sekunder.

Gambar 5.1. Memori Virtual

Memori Virtual

Pada gambar diatas ditunjukkan ruang sebuah memori virtual yang dibagi menjadi bagian-bagian yang sama dan diidentifikasikan dengan nomor virtual pages. Memori fisik dibagi menjadi page frames yang berukuran sama dan diidentifikasikan dengan nomor page frames. Bingkai (frame) menyimpan data dari halaman. Atau memori virtual memetakan nomor virtual pages ke nomor page frames. Mapping (pemetaan) menyebabkan halaman virtual hanya dapat mempunyai satu lokasi alamat fisik.

Dalam sistem paging, jika sebuah ruang diperlukan untuk proses dan halaman yang bersangkutan tidak sedang digunakan, maka halaman dari proses akan mengalami paged out (disimpan ke dalam disk) atau swap out, memori akan kosong untuk halaman aktif yang lain. Halaman yang dipindah dari disk ke memori ketika diperlukan dinamakan paged in (dikembalikan ke memori) atau swap in. Ketika sebuah item dapat mengalami paging, maka item tersebut termasuk dalam item yang menempati ruang virtual, yang diakses dengan alamat virtual dan ruangan yang ada dialokasikan untuk informasi pemetaan. Sistem operasi mengalokasikan alamat dari item tersebut hanya ketika item tersebut mengalami paging in.

Keuntungan yang diperoleh dari penyimpanan hanya sebagian program saja pada memori fisik adalah:

  • Berkurangnya proses M/K yang dibutuhkan (lalu lintas M/K menjadi rendah)

  • Ruang menjadi lebih leluasa karena berkurangnya memori fisik yang digunakan

  • Meningkatnya respon karena menurunnya beban M/K dan memori

  • Bertambahnya jumlah pengguna yang dapat dilayani. Ruang memori yang masih tersedia luas memungkinkan komputer untuk menerima lebih banyak permintaan dari pengguna.

Teknik memori virtual akan memudahkan pekerjaan seorang programmer ketika besar data dan programnya melampaui kapasitas memori utama. Sebuah multiprogramming dapat mengimplementasikan teknik memori virtual sehingga sistem multiprogramming menjadi lebih efisien. Contohnya: 10 program dengan ukuran 2 MB dapat berjalan di memori berkapasitas 4 MB. Tiap program dialokasikan 256 Kbyte dan bagian - bagian proses (swap in) masuk ke dalam memori fisik begitu diperlukan dan akan keluar (swap out) jika sedang tidak diperlukan.

Prinsip dari memori virtual adalah bahwa "Kecepatan maksimum ekseskusi proses di memori virtual dapat sama, tetapi tidak akan pernah melampaui kecepatan eksekusi proses yang sama di sistem yang tidak menggunakan memori virtual".

Memori virtual dapat diimplementasikan dengan dua cara:

  1. Demand Paging yaitu dengan menerapkan konsep pemberian halaman pada proses

  2. Demand segmentation, lebih kompleks diterapkan ukuran segmen yang bervariasi.

FIREFOX

Bagi Anda penghobi internet, tentu tidak asing dengan nama Firefox. Ya, aplikasi browser besutan Mozilla Foundation ini begitu populer khususnya di kalangan pengguna open source. Namun pernahkah Anda frustasi saat berselancar dengan firefox tiba - tiba komputer Anda melambat atau bahkan ngadat? Contoh saat Anda menunggu login email di google mail (GMAIL), Anda mencoba membuka situs forum linux.or.id di tab baru. Namun tiba-tiba mouse Anda menjadi sulit digerakkan alias komputer melambat . Hal ini mungkin akan membuat Anda frustasi.

Mengapa hal ini bisa terjadi? Salah satu penyebab utamanya adalah karena firefox itu sendiri. Meski populer rupanya Firefox bukanlah browser ringan. Browser ini tergolong tambun dan boros, karena menghabiskan resource komputer yang lumayan tinggi. Untuk pertama kali dijalankan saja browser ini (versi 2) menghabiskan paling sedikit 10 mega memori di Linux, dan 20 mega di Windows. Semakin banyak Anda membuka tab / web maka semakin besar memori yang dihabiskan dan semakin sibuk pula CPU Anda bekerja. Anda bisa mengeceknya via aplikasi semacam top dan free di console atau ksysguard di KDE. Dari sisi manajemen memori tampaknya browser ini masih kalah dibanding rivalnya Opera.

firefox-tune-up-02.jpg
Gambar 01.
Men-disable animasi flash terbukti ampuh dalam menghemat memori yang dipakai Firefox. Jenuh bukan melihat “flash” yang bertebaran seperti ini?

Namun Anda tidak perlu berkecil hati dan lekas-lekas memutuskan berpindah ke browser lain. Karena dengan sedikit tune up Anda bisa memperbaiki kinerja Firefox kesayangan. Silahkan ikuti langkah - langkah berikut..

Buka firefox. pada address ketikkan about:config (Lihat Gambar 02).

firefox-tune-up-01.jpg
Gambar 02.
about:config

1. Batasi kapasitas cache memori
Setiap kali Anda membuka sebuah halaman web, Firefox otomatis akan menyimpannya dalam cache memori. Secara default Firefox menggunakannya sebesar jumlah maksimal RAM yang Anda miliki. Itulah mengapa semakin banyak Anda membuka web, memori komputer Anda semakin habis. Untuk membatasinya tambahkan opsi: browser.cache.memory.capacity. Caranya klik kanan, New > Integer. Ketik browser.cache.memory.capacity, enter, masukkan angka 2048. 2048 disini artinya gunakan cache memori maksimal hanya 2 Mega. Anda bisa coba - coba dengan angka yang lain, namun usahakan merupakan kelipatan dari 1024.

2. Batasi kapasitas cache history
Sama seperti cache memori, hanya bedanya peruntukan cache disini oleh Firefox lebih ditujukan untuk mempercepat loading halaman saat Anda menekan tombol back dan forward pada browser. Apabila Anda jarang memakai back dan forward, ada baiknya Anda set dengan nilai kecil guna menghemat memori. Pada filter ketikkan: browser.sessionhistory.max_total_viewers, ubah nilai -1 menjadi 3. Default -1 artinya gunakan semaksimal RAM yang ada. hmm.. nilai default dari Firefox benar-benar rakus bukan?

3. Batasi kapasitas cache disk
Secara default Mozilla menset ukuran cache disk sebesar 50 Mega. Tentunya ini pemborosan memori. Mensetnya menjadi 2 MB dapat memberikan performa yang positif khususnya bagi komputer dengan memori dibawah 128 MB dan harddisk model lama. Pada filter ketikkan: browser.cache.disk.capacity, ubah nilai 50000 menjadi 2000.

4. Batasi extension/add-ons
Semakin banyak add-ons yang Anda gunakan, semakin besar RAM yang dihabiskan. Disable add-ons yang kurang Anda gunakan. Untuk membandingkan performa memori yang digunakan saat menggunakan dan tanpa add-ons dapat dilakukan dengan mencoba menjalankan Firefox pada kondisi safe-mode. Caranya dengan perintah: $ firefox -safe-mode. Pada pilihan yang muncul pastikan Anda beri tanda pada opsi: Disable all add-ons (Lihat Gambar 03)

firefox-tune-up-04.jpg
Gambar 03.
Opsi pilihan pada safe-mode

5. Disable Flash
Tahukah anda bahwa animasi flash yang di load saat Anda membuka web memakan resource RAM yang lumayan besar? Konsekuensinya adalah waktu loading menjadi lebih lambat dan berat. Bahkan pada plugin flash sebelum versi 9, resource RAM yang dipakai merupakan akumulasi dari jumlah flash yang dibuka sebelumnya. Gerah? (Lihat Gambar 01) Ada baiknya anda disable flash. Silahkan download dan install flashblock addon disini:
http://downloads.mozdev.org/flashblock/flashblock-1.5.5.xpi (untuk firefox > 1.5.5)

6. Disable download history

Sebaiknya anda nonaktifkan fitur history ini. Karena semakin banyak download history yang disimpan, maka akan menurunkan performa Firefox. Apalagi bila media penyimpannya pada media removeable seperti disket. Caranya mudah, pilih menu Tools > Options > Privacy. lalu hilangkan pilihan pada “Remember what I’ve downloaded” (Lihat Gambar 04)

firefox-tune-up-03.jpg
Gambar 04.
Hilangkan pada pilihan “Remember what I’ve downloaded”

7. Load yang perlu saja
Secara default Firefox tanpa kita sadari merusaha melakukan pre-download pada link halaman web yang mungkin akan kita klik. Hal ini meniru taktik Google yang mencache terlebih dahulu result pertama dari link pencarian yang dia temukan. Tentu cara ini hanya memboroskan bandwdith, dan performa CPU. Untuk menonaktifkan fitur ini ketik pada filter: network.prefetch-next, klik dua kali, agar nilainya menjadi false.

8. Download dan segera tampilkan.
Tips ini mungkin berguna buat yang tidak sabaran. Umumnya firefox akan menunggu beberapa saat setelah download untuk mulai menampilkan halaman yang dituju. Untuk memaksa Firefox agar segera menampilkan halaman web yang didownloadnya Anda bisa menset nilai: nglayout.initialpaint.delay menjadi 0. Apabila belum ada silahkan klik kanan, new > integer > nglayout.initialpaint.delay

Tips untuk menghemat memori lainnya adalah dengan mengaktifkan fitur config.trim_on_minimize. Hanya saja fitur ini hanya efektif pada lingkungan Windows. Caranya klik kanan, new > boolean, ketikkan config.trim_on_minimize. Set nilainya True. Dengan cara ini setiap kali Firefox di minimize, otomatis memori yang di pakai akan dilepas / dibebaskan, sehingga dapat dipakai untuk proses aplikasi lainnya.

OK, apabila langkah - langkah diatas telah Anda kerjakan, langkah terakhir adalah me-restart Firefox kesayangan Anda. Bagaimana kini performa Firefox Anda? Kami tunggu komentarnya.

catatan:
Untuk melihat besar cache memory yang digunakan Firefox saat ini, dapat dilihat dengan mengetikkan about:cache pada url browser.


Memori Fisik

Manajemen memori pada Linux mengandung dua komponen utama yang berkaitan dengan:

  1. Pembebasan dan pengalokasian halaman/blok pada main memori.

  2. Penanganan memori virtual.

Berdasarkan arsitektur Intel x86, Linux memisahkan memori fisik ke dalam tiga zona berbeda, dimana tiap zona mengindentifikasikan blok (region) yang berbeda pada memori fisik. Ketiga zona tersebut adalah:

  1. Zona DMA (Direct Memory Access). Tempat penanganan kegiatan yang berhubungan dengan transfer data antara CPU dengan M/K, dalam hal ini DMA akan menggantikan peran CPU sehingga CPU dapat mengerjakan instruksi lainnya.

  2. Zona NORMAL. Tempat di memori fisik dimana penanganan permintaan-permintaan yang berhubungan dengan pemanggilan routine untuk alokasi halaman/blok dalam menjalankan proses.

  3. Zona HIGHMEM. Tempat yang merujuk kepada memori fisik yang tidak dipetakan ke dalam ruang alamat kernel.

Tabel 9.1. Pembagian Zona Pada Arsitektur Intel x86

ZonePhysical Memory
ZONE_DMA<>
ZONE_NORMAL16 - 896 MB
ZONE_HIGHMEM> 896 MB

Memori manager di Linux berusaha untuk mengefisienkan ruang alamat pada memori fisik, agar memungkinkan lebih banyak proses yang dapat bekerja di memori dibandingkan dengan yang sudah ditentukan oleh kernel. Oleh karena itu, digunakanlah dua macam teknik alokasi, yaitu alokasi halaman yang ditangani oleh page allocator dan alokasi slab yang ditangani oleh slab allocator.

Alokasi halaman menggunakan algoritma buddy yang bekerja sebagai berikut. Pada saat kegiatan alokasi data di memori, blok di memori yang disediakan oleh kernel kepada suatu proses akan dibagi menjadi dua blok yang berukuran sama besar. Kejadian ini akan terus berlanjut hingga didapat blok yang sesuai dengan ukuran data yang diperlukan oleh proses tersebut. Dalam hal ini page allocator akan memanggil system call kmalloc() yang kemudian akan memerintahkan kernel untuk melakukan kegiatan pembagian blok tersebut.


Gambar 9.1. Contoh Alokasi Memori dengan Algoritma Buddy

Contoh Alokasi Memori dengan Algoritma Buddy

Akan tetapi, algoritma buddy memiliki kelemahan , yaitu kurang efisien. Sebagai contoh, misalnya ada 1 MB memori. Jika ada permintaan 258 KB, maka yang akan digunakan sebesar 512 KB. Tentu hal ini kurang efisien karena yang dibutuhkan hanya 258 KB saja.

Selasa, 25 November 2008

Arsitektur komputer


Dalam bidang teknik komputer, arsitektur komputer adalah konsep perencanaan dan struktur pengoperasian dasar dari suatu sistem komputer. Arsitektur komputer ini merupakan rencana cetak-biru dan deskripsi fungsional dari kebutuhan bagian perangkat keras yang didesain (kecepatan proses dan sistem interkoneksinya). Dalam hal ini, implementasi perencanaan dari masing–masing bagian akan lebih difokuskan terutama, mengenai bagaimana CPU akan bekerja, dan mengenai cara pengaksesan data dan alamat dari dan ke memori cache, RAM, ROM, cakram keras, dll). Beberapa contoh dari arsitektur komputer ini adalah arsitektur von Neumann, CISC, RISC, blue Gene, dll.

Arsitektur komputer juga dapat didefinisikan dan dikategorikan sebagai ilmu dan sekaligus seni mengenai cara interkoneksi komponen-komponen perangkat keras untuk dapat menciptakan sebuah komputer yang memenuhi kebutuhan fungsional, kinerja, dan target biayanya.

Arsitektur komputer ini paling tidak mengandung 3 sub-kategori:


Abstraksi dari sebuah arsitektur komputer dan hubungannya dengan bagian perangkat keras, firmware, assembler, kernel, sistem operasi, dan perangkat lunak aplikasinya

CPU

PU, singkatan dari Central Processing Unit, merujuk kepada perangkat keras komputer yang memahami dan melaksanakan instruksi dan data dari perangkat lunak. Istilah lain, prosesor, sering digunakan untuk menyebut CPU. Adapun mikroprosesor adalah CPU yang diproduksi dalam sirkuit terpadu, seringkali dalam sebuah paket chip-tunggal. Sejak pertengahan tahun 1970-an, mikroprosesor chip-tunggal ini telah umum digunakan dan menjadi aspek penting dalam implementasi CPU.
Pin mikroprosesor Intel 80486DX2.

Daftar isi

[sembunyikan]

Chip mikroprosesor Intel 80486DX2 (ukuran sebenarnya: 12×6,75 mm).

Komponen CPU

Diagram blok sederhana sebuah CPU.

Komponen CPU terbagi menjadi beberapa macam, yaitu sebagai berikut.

  • Unit kontrol yang mampu mengatur jalannya program. Komponen ini sudah pasti terdapat dalam semua CPU.
  • Unit eksekusi yang mampu melakukan operasi terhadap data dan memiliki beberapa bagian, seperti ALU (Unit Logika dan Aritmatika), FPU (Floating Point Unit), dan lainnya. Komponen ini sudah pasti terdapat dalam semua jenis CPU.
  • Sekumpulan daftar yang dapat digunakan untuk menampung data maupun hasil perhitungan yang belum selesai dengan sempurna. Komponen ini terkadang terdapat dalam CPU, tetapi tidak semuanya.
  • Memori internal CPU, yang bentuknya bisa berupa cache. Komponen ini terkadang terdapat dalam CPU. Kebanyakan CPU lama tidak memilikinya.

Fungsi CPU

CPU berfungsi seperti kalkulator, hanya saja CPU jauh lebih kuat daya pemrosesannya. Fungsi utama dari CPU adalah melakukan operasi aritmatika dan logika terhadap data yang diambil dari memori atau dari informasi yang dimasukkan melalui beberapa perangkat keras, seperti papan ketik, pemindai, tuas kontrol, maupun tetikus. CPU dikontrol menggunakan sekumpulan instruksi perangkat lunak komputer. Perangkat lunak tersebut dapat dijalankan oleh CPU dengan membacanya dari media penyimpan, seperti cakram keras, disket, cakram padat, maupun pita perekam. Instruksi-instruksi tersebut kemudian disimpan terlebih dahulu pada memori fisik (RAM), yang mana setiap instruksi akan diberi alamat unik yang disebut alamat memori. Selanjutnya, CPU dapat mengakses data-data pada RAM dengan menentukan alamat data yang dikehendaki.

Saat sebuah program dieksekusi, data mengalir dari RAM ke sebuah unit yang disebut dengan bus, yang menghubungkan antara CPU dengan RAM. Data kemudian didekode dengan menggunakan unit proses yang disebut sebagai pendekoder instruksi yang sanggup menerjemahkan instruksi. Data kemudian berjalan ke unit aritmatika dan logika (ALU) yang melakukan kalkulasi dan perbandingan. Data bisa jadi disimpan sementara oleh ALU dalam sebuah lokasi memori yang disebut dengan register supaya dapat diambil kembali dengan cepat untuk diolah. ALU dapat melakukan operasi-operasi tertentu, meliputi penjumlahan, perkalian, pengurangan, pengujian kondisi terhadap data dalam register, hingga mengirimkan hasil pemrosesannya kembali ke memori fisik, media penyimpan, atau register apabila akan mengolah hasil pemrosesan lagi. Selama proses ini terjadi, sebuah unit dalam CPU yang disebut dengan penghitung program akan memantau instruksi yang sukses dijalankan supaya instruksi tersebut dapat dieksekusi dengan urutan yang benar dan sesuai.


Percabangan instruksi

Penghitung program dalam CPU umumnya bergerak secara berurutan. Walaupun demikian, beberapa instruksi dalam CPU, yang disebut dengan instruksi lompatan, mengizinkan CPU mengakses instruksi yang terletak bukan pada urutannya. Hal ini disebut juga percabangan instruksi (branching instruction). Cabang-cabang instruksi tersebut dapat berupa cabang yang bersifat kondisional (memiliki syarat tertentu) atau non-kondisional. Sebuah cabang yang bersifat non-kondisional selalu berpindah ke sebuah instruksi baru yang berada di luar aliran instruksi, sementara sebuah cabang yang bersifat kondisional akan menguji terlebih dahulu hasil dari operasi sebelumnya untuk melihat apakah cabang instruksi tersebut akan dieksekusi atau tidak. Data yang diuji untuk percabangan instruksi disimpan pada lokasi yang disebut dengan flag.

ALU

ALU, singkatan dari Arithmatic and Logic Unit (bahasa Indonesia: unit aritmatika dan logika), adalah salah satu bagian dalam dari sebuah mikroprosesor yang berfungsi untuk melakukan operasi hitungan aritmatika dan logika. Contoh operasi aritmatika adalah operasi penjumlahan dan pengurangan, sedangkan contoh operasi logika adalah logika AND dan OR.

Simbol umum ALU.

artikel arsitek komputer

MEMORI

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 bersifat media penyimpanan permanen berbasis disk, semacam hard disk atau floppy disk), sehingga data tersebut dapat dibuka kembali pada lain waktu.

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 random, tapi ia tidak digolongkan ke dalam Random Access Memory.

Memori virtual


Memori virtual (dalam bahasa Inggris: virtual Memory) adalah sebuah mekanisme yang digunakan oleh aplikasi untuk menggunakan sebagian dari memori sekunder seolah-olah ia menggunakannya sebagai RAM fisik yang terinstal di dalam sebuah sistem. Mekanisme ini beroperasi dengan cara memindahkan beberapa kode yang tidak dibutuhkan ke sebuah berkas di dalam hard drive yang disebut dengan swap file, page file atau swap partition.

Dalam sistem operasi berbasis Windows NT, terdapat sebuah komponen yang mengatur memori virtual, yakni Virtual Memory Manager (VMM). VMM dapat memetakan alamat-alamat virtual yang dimiliki oleh sebuah proses yang berjalan ke dalam page memori fisik di dalam komputer. Dengan cara begini, setiap proses pun dapat memperoleh memori virtual yang cukup agar dapat berjalan, dan yang terpenting adalah setiap proses tidak mengganggu memori yang sedang digunakan oleh proses lainnya. VMM menangani paging antara RAM dan page file, dengan memindahkan page dengan menggunakan sebuah cara yang disebut sebagai demand paging. Hasilnya, setiap aplikasi 32-bit pun dapat mengakses memori hingga 4 gigabyte (meskipun Windows hanya membatasi proses yang berjalan dalam modus pengguna hanya sebatas 2 GB saja).

Hirarki memori


Hierarki Memori atau Memory Hierarchy dalam arsitektur komputer adalah sebuah pedoman yang dilakukan oleh para perancang demi menyetarakan kapasitas, waktu akses, dan harga memori untuk tiap bitnya. Secara umum, hierarki memori terdapat dua macam yakni hierarki memori tradisional dan hierarki memori kontemporer.

Gambar Hierarki Memori Kontemporer

Hierarki memori memang disusun sedemikian rupa agar semakin ke bawah, memori dapat mengalami hal-hal berikut:

  • peningkatan waktu akses (access time) memori (semakin ke bawah semakin lambat, semakin ke atas semakin cepat)
  • peningkatan kapasitas (semakin ke bawah semakin besar, semakin ke atas semakin kecil)
  • peningkatan jarak dengan prosesor (semakin ke bawah semakin jauh, semakin ke atas semakin dekat)
  • penurunan harga memori tiap bitnya (semakin ke bawah semakin semakin murah, semakin ke atas semakin mahal)

Memori yang lebih kecil, lebih mahal dan lebih cepat diletakkan pada urutan teratas. Sehingga, jika diurutkan dari yang tercepat, maka urutannya adalah sebagai berikut:

  1. register mikroprosesor. Ukurannya yang paling kecil tapi memiliki waktu akses yang paling cepat, umumnya hanya 1 siklus CPU saja.
  2. Cache mikroprosesor, yang disusun berdasarkan kedekatannya dengan prosesor (level-1, level-2, level-3, dan seterusnya). Memori cache mikroprosesor dikelaskan ke dalam tingkatan-tingkatannya sendiri:
    1. level-1: memiliki ukuran paling kecil di antara semua cache, sekitar puluhan kilobyte saja. Kecepatannya paling cepat di antara semua cache.
    2. level-2: memiliki ukuran yang lebih besar dibandingkan dengan cache level-1, yakni sekitar 64 kilobyte, 256 kilobyte, 512 kilobyte, 1024 kilobyte, atau lebih besar. Meski demikian, kecepatannya lebih lambat dibandingkan dengan level-1, dengan nilai latency kira-kira 2 kali hingga 10 kali. Cache level-2 ini bersifat opsional. Beberapa prosesor murah dan prosesor sebelum Intel Pentium tidak memiliki cache level-2.
    3. level-3: memiliki ukuran yang lebih besar dibandingkan dengan cache level-2, yakni sekitar beberapa megabyte tapi agak lambat. Cache ini bersifat opsional. Umumnya digunakan pada prosesor-prosesor server dan workstation seperti Intel Xeon atau Intel Itanium. Beberapa prosesor desktop juga menawarkan cache level-3 (seperti halnya Intel Pentium Extreme Edition), meski ditebus dengan harga yang sangat tinggi.
  3. Memori utama: memiliki akses yang jauh lebih lambat dibandingkan dengan memori cache, dengan waktu akses hingga beberapa ratus siklus CPU, tapi ukurannya mencapai satuan gigabyte. Waktu akses pun kadang-kadang tidak seragam, khususnya dalam kasus mesin-mesin Non-uniform memory access (NUMA).
  4. Cache cakram magnetis, yang sebenarnya merupakan memori yang digunakan dalam memori utama untuk membantu kerja cakram magnetis.
  5. Cakram magnetis
  6. Tape magnetis
  7. Cakram Optik



Cache-on-a-stick


Cache-on-a-stick (disingkat menjadi COASt) merupakan sebuah standar pemaketan modul-modul memori Static Random Access Memory (SRAM) yang digunakan sebagai cache level 2 dalam sebuah komputer. Modul-modul COASt terlihat seperti halnya modul-modul Single Inline Memory Module (SIMM) meski memiliki ukuran yang lebih besar. Modul-modul ini populer digunakan pada awal dekade hingga pertengahan 1990-an, dipasangkan dengan prosesor Intel 80486 atau Intel Pentium (dan yang kompatibel dengannya seperti AMD K5, AMD K6, dan Cyrix 6x86). Tetapi, modul-modul ini ditinggalkan mengingat prosesor modern telah mengintegrasikan cache level 2 di dalam prosesor itu sendiri (dalam prosesor Intel, hal ini dimulai pada prosesor Intel Pentium Pro), meski beberapa motherboard mampu menjadikan COASt sebagai cache level 3. Pada tahun-tahun itu, komputer yang memiliki kinerja tinggi (dan tentunya mahal) umumnya menggunakan COASt yang memiliki kapasitas hingga 512 KB atau 1024 KB, sementara komputer yang murah tidak menggunakannya (hanya menggunakan apa yang disediakan prosesor). COASt yang lebih baru, bahkan telah dibuat dengan menggunakan pipelined-burst SRAM, sehingga kinerjanya lebih tinggi lagi.

Prosesor Intel Pentium II dan Pentium III yang menggunakan Slot-1 menggunakan cache yang terpisah dari prosesor yang merupakan evolusi dari COASt.

RAM

Pronounced ramm, acronym for random access memory, a type of computer memory that can be accessed randomly; that is, any byte of memory can be accessed without touching the preceding bytes. RAM is the most common type of memory found in computers and other devices, such as printers.

There are two different types of RAM: DRAM (Dynamic Random Access Memory) and SRAM (Static Random Access Memory). The two types differ in the technology they use to hold data, with DRAM being the more common type. In terms of speed, SRAM is faster. DRAM needs to be refreshed thousands of times per second while SRAM does not need to be refreshed, which is what makes it faster than DRAM. DRAM supports access times of about 60 nanoseconds, SRAM can give access times as low as 10 nanoseconds. Despite SRAM being faster, it's not as commonly used as DRAM because it's so much more expensive. Both types of RAM are volatile, meaning that they lose their contents when the power is turned off.

In common usage, the term RAM is synonymous with main memory, the memory available to programs. For example, a computer with 8MB RAM has approximately 8 million bytes of memory that programs can use. In contrast, ROM (read-only memory) refers to special memory used to store programs that boot the computer and perform diagnostics. Most personal computers have a small amount of ROM (a few thousand bytes). In fact, both types of memory (ROM and RAM) allow random access. To be precise, therefore, RAM should be referred to as read/write RAM and ROM as read-only RAM.

See the "DRAM Memory Guide" in the Quick Reference section of Webopedia. This Webopedia Quick Reference offers general information on the two types of RAM and provide an overview on the common modules of each type.

Memori akses acak (bahasa Inggris: Random access memory, RAM) adalah sebuah tipe penyimpanan komputer yang isinya dapat diakses dalam waktu yang tetap tidak memperdulikan letak data tersebut dalam memori. Ini berlawanan dengan alat memori urut, seperti tape magnetik, disk dan drum, di mana gerakan mekanikal dari media penyimpanan memaksa komputer untuk mengakses data secara berurutan.

Pertama kali dikenal pada tahun 60'an. Hanya saja saat itu memori semikonduktor belumlah populer karena harganya yang sangat mahal. Saat itu lebih lazim untuk menggunakan memori utama magnetic.

Perusahaan semikonduktor seperti Intel memulai debutnya dengan memproduksi RAM , lebih tepatnya jenis DRAM.

Biasanya RAM dapat ditulis dan dibaca, berlawanan dengan memori-baca-saja (read-only-memory, ROM), RAM biasanya digunakan untuk penyimpanan primer (memori utama) dalam komputer untuk digunakan dan mengubah informasi secara aktif, meskipun beberapa alat menggunakan beberapa jenis RAM untuk menyediakan penyimpanan sekunder jangka-panjang.

Tetapi ada juga yang berpendapat bahwa ROM merupakan jenis lain dari RAM, karena sifatnya yang sebenarnya juga Random Access seperti halnya SRAM ataupun DRAM. Hanya saja memang proses penulisan pada ROM membutuhkan proses khusus yang tidak semudah dan fleksibel seperti halnya pada SRAM atau DRAM. Selain itu beberapa bagian dari space addres RAM ( memori utama ) dari sebuah sistem yang dipetakan kedalam satu atau dua chip ROM.

Tipe umum RAM

Beberapa jenis RAM. Dari atas ke bawah: DIP, SIPP, SIMM 30 pin, SIMM 72 pin, DIMM, DDR DIMM.

Kata "statik" menandakan bahwa memori memegang isinya selama listrik tetap berjalan, tidak seperti RAM dinamik (DRAM) yang membutuhkan untuk "disegarkan" ("refreshed") secara periodik. Hal ini dikarenakan SRAM didesain menggunakan transistor tanpa kapasitor. Tidak adanya kapasitor membuat tidak ada daya yang bocor sehingga SRAM tidak membutuhkan refresh periodik. SRAM juga didesain menggunakan desain cluster enam transistor untuk menyimpan setiap bit informasi. Desain ini membuat SRAM lebih mahal tapi juga lebih cepat jika dibandingkan dengan DRAM. Secara fisik chip, biaya pemanufakturan chip SRAM kira kira tiga puluh kali lebih besar dan lebih mahal daripada DRAM. Tetapi SRAM tidak boleh dibingungkan dengan memori baca-saja dan memori flash, karena ia merupakan memori volatil dan memegang data hanya bila listrik terus diberikan.

Akses acak menandakan bahwa lokasi dalam memori dapat diakses, dibaca atau ditulis dalam waktu yang tetap tidak memperdulikan lokasi alamat data tersebut dalam memori.

Chip SRAM lazimnya digunakan sebagai chace memori , hal ini terutama dikarenakan kecepatannya. Saat ini SRAM dapat diperoleh dengan waktu akses dua nano detik atau kurang , kira kira mampu mengimbangi kecepatan processor 500 MHz atau lebih.


Tipe tidak umum RAM


ROM


Read-only Memory (ROM) adalah istilah bahasa Inggris untuk medium penyimpanan data pada komputer. ROM adalah singkatan dari Read-Only Memory, ROM ini adalah salah satu memori yang ada dalam computer. ROM ini sifatnya permanen, artinya program / data yang disimpan didalam ROM ini tidak mudah hilang atau berubah walau aliran listrik di matikan.

Menyimpan data pada ROM tidak dapat dilakukan dengan mudah, namun membaca data dari ROM dapat dilakukan dengan mudah. Biasanya program / data yang ada dalam ROM ini diisi oleh pabrik yang membuatnya. Oleh karena sifat ini, ROM biasa digunakan untuk menyimpan firmware (piranti lunak yang berhubungan erat dengan piranti keras).

Salah satu contoh ROM adalah ROM BIOS yang berisi program dasar system komputer yang mengatur / menyiapkan semua peralatan / komponen yang ada dalam komputer saat komputer dihidupkan.

ROM modern didapati dalam bentuk IC, persis seperti medium penyimpanan/memori lainnya seperti RAM. Untuk membedakannya perlu membaca teks yang tertera pada IC-nya. Biasanya dimulai dengan nomer 27xxx, angka 27 menunjukkan jenis ROM , xxx menunjukkan kapasitas dalam kilo bit ( bukan kilo byte ).

Mask ROM

Data pada ROM dimasukkan langsung melalui mask pada saat perakitan chip. Hal ini membuatnya sangat ekonomis terutama jika kita memproduksi dalam jumlah banyak. Namun hal ini juga menjadi sangat mahal karena tidak fleksibel. Sebuah perubahan walaupun hanya satu bit membutuhkan mask baru yang tentu saja tidak murah. Karena tidak fleksibel maka jarang ada yang menggunakannya lagi.

Aplikasi lain yang mirip dengan ROM adalah CD-ROM prerecorded yang familiar dengan kita, salah satunya CD musik. Berbeda dengan pendapat banyak orang bahwa CD-ROM ditulis dengan laser, kenyataannya data pada CD-ROM lebih tepatnya dicetak pada piringan plastik.


CD-ROM


CD-ROM (singkatan dari Compact Disc - Read Only Memory) adalah sebuah piringan kompak dari jenis piringan optik (optical disc) yang dapat menyimpan data. Ukuran data yang dapat disimpan saat ini bisa mencapai 700MB atau 700 juta bita.

CD-ROM bersifat read only (hanya dapat dibaca, dan tidak dapat ditulisi). Untuk dapat membaca isi CD-ROM, alat utama yang diperlukan adalah CD Drive. Perkembangan CD-ROM terkini memungkinkan CD dapat ditulisi berulang kali (Re Write / RW) yang lebih dikenal dengan nama CD-RW.

Kapasitas tipe Piringan kompak
TipeSektorData maksimumAudio maksimumDurasi akses
(MB)(MiB)(MB)(MiB)(menit)
8 cm94.500193,536≈ 184,6222,264≈ 212,021

283.500580,608≈ 553,7666,792≈ 635,963
650 MB333.000681,984≈ 650,3783,216≈ 746,974
700 MB360.000737,280≈ 703,1846,720≈ 807,480

405.000829,440≈ 791,0952,560≈ 908,490

445.500912,384≈ 870,11.047,816≈ 999,399

Catatan: Nilai megabita (MB) dan menit adalah tepat.

Nila MiB adalah Mega binary Byte atau Mebi Byte (1 MiB = 2 20 = 1.048.576)


Jenis-jenis ROM
Mask ROM
PROM
EPROM
EEPROM
Flash Memory

Memori flash adalah sejenis EEPROM yang mengijinkan banyak lokasi memori untuk dihapus atau ditulis dalam satu operasi pemrograman. Istilah awamnya, dia adalah suatu bentuk dari chip memori yang dapat ditulis, tidak seperti chip memori akses acak, dan memegang datanya tanpa membutuhkan penyediaan listrik. Memori ini biasanya digunakan dalam kartu memori, drive flash USB, pemutar MP3, kamera digital, dan telepon genggam.

Sebuah Kartu memori flash USB


SDRAM


Synchronous Dynamic Random Access Memory (disingkat menjadi SDRAM) merupakan sebuah jenis memori komputer dinamis yang digunakan dalam PC dari tahun 1996 hingga 2003. SDRAM juga merupakan salah satu jenis dari memori komputer kategori solid-state.
SDRAM, pada awalnya berjalan pada kecepatan 66 MHz untuk dipasangkan dengan prosesor Intel Pentium Pro/Intel Pentium MMX/Intel Pentium II, dan terus ditingkatkan menjadi kecepatan 100 MHz (dipasangkan dengan Intel Pentium III/AMD Athlon), hingga mentok pada kecepatan 133 MHz (dipasangkan dengan Intel Pentium 4 dan AMD Athlon/Duron). Popularitasnya menurun saat DDR-SDRAM yang mampu mentransfer data dua kali lipat SDRAM muncul di pasaran dengan chipset yang stabil. Setelah itu, akibat produksinya yang semakin dikurangi, harganya pun melonjak tinggi, dengan permintaan pasar yang masih banyak; dengan kapasitas yang sama dengan DDR-SDRAM, harganya berbeda kira-kira Rp. 150000 hingga 250000.


CISC


Complex instruction-set computing atau Complex Instruction-Set Computer (CISC; "Kumpulan instruksi komputasi kompleks") adalah sebuah arsitektur dari set instruksi dimana setiap instruksi akan menjalankan beberapa operasi tingkat rendah, seperti pengambilan dari memory, operasi aritmetika, dan penyimpanan ke dalam memory, semuanya sekaligus hanya di dalam sebuah instruksi. Karakteristik CISC dapat dikatakan bertolak-belakang dengan RISC.
Sebelum proses RISC didesain untuk pertama kalinya, banyak arsitek komputer mencoba menjembatani celah semantik", yaitu bagaimana cara untuk membuat set-set instruksi untuk mempermudah pemrograman level tinggi dengan menyediakan instruksi "level tinggi" seperti pemanggilan procedure, proses pengulangan dan mode-mode pengalamatan kompleks sehingga struktur data dan akses array dapat dikombinasikan dengan sebuah instruksi. Karakteristik CISC yg "sarat informasi" ini memberikan keuntungan di mana ukuran program-program yang dihasilkan akan menjadi relatif lebih kecil, dan penggunaan memory akan semakin berkurang. Karena CISC inilah biaya pembuatan komputer pada saat itu (tahun 1960) menjadi jauh lebih hemat.


Memang setelah itu banyak desain yang memberikan hasil yang lebih baik dengan biaya yang lebih rendah, dan juga mengakibatkan pemrograman level tinggi menjadi lebih sederhana, tetapi pada kenyataannya tidaklah selalu demikian. Contohnya, arsitektur kompleks yang didesain dengan kurang baik (yang menggunakan kode-kode mikro untuk mengakses fungsi-fungsi hardware), akan berada pada situasi di mana akan lebih mudah untuk meningkatkan performansi dengan tidak menggunakan instruksi yang kompleks (seperti instruksi pemanggilan procedure), tetapi dengan menggunakan urutan instruksi yang sederhana.
Satu alasan mengenai hal ini adalah karena set-set instruksi level-tinggi, yang sering disandikan (untuk kode-kode yang kompleks), akan menjadi cukup sulit untuk diterjemahkan kembali dan dijalankan secara efektif dengan jumlah transistor yang terbatas. Oleh karena itu arsitektur -arsitektur ini memerlukan penanganan yang lebih terfokus pada desain prosesor. Pada saat itu di mana jumlah transistor cukup terbatas, mengakibatkan semakin sempitnya peluang ditemukannya cara-cara alternatif untuk optimisasi perkembangan prosesor. Oleh karena itulah, pemikiran untuk menggunakan desain RISC muncul pada pertengahan tahun 1970 (Pusat Penelitian Watson IBM 801 - IBMs)
Contoh-contoh prosesor CISC adalah System/360, VAX, PDP-11, varian Motorola 68000 , dan CPU AMD dan Intel x86.


Istilah RISC dan CISC saat ini kurang dikenal, setelah melihat perkembangan lebih lanjut dari desain dan implementasi baik CISC dan CISC. Implementasi CISC paralel untuk pertama kalinya, seperti 486 dari Intel, AMD, Cyrix, dan IBM telah mendukung setiap instruksi yang digunakan oleh prosesor-prosesor sebelumnya, meskipun efisiensi tertingginya hanya saat digunakan pada subset x86 yang sederhana (mirip dengan set instruksi RISC, tetapi tanpa batasan penyimpanan/pengambilan data dari RISC). Prosesor-prosesor modern x86 juga telah menyandikan dan membagi lebih banyak lagi instruksi-instruksi kompleks menjadi beberapa "operasi-mikro" internal yang lebih kecil sehingga dapat instruksi-instruksi tersebut