Sabtu, 25 Agustus 2007

Hyper-Threading

Intel Hyper-Threading Technology merupakan sebuah teknologi mikroprosesor yang diciptakan oleh Intel Corporation pada beberapa prosesor dengan arsitektur Intel NetBurst dan Core, semacam Intel Pentium 4, Pentium D, Xeon, dan Core 2. Teknologi ini diperkenalkan pada bulan Maret 2002 dan mulanya hanya diperkenalkan pada prosesor Xeon (Prestonia).

Prosesor dengan teknologi ini akan dilihat oleh sistem operasi yang mendukung banyak prosesor seperti Windows NT, Windows 2000, Windows XP Professional, Windows Vista, dan GNU/Linux sebagai dua buah prosesor, meski secara fisik hanya tersedia satu prosesor. Dengan dua buah prosesor dikenali oleh sistem operasi, maka kerja sistem dalam melakukan eksekusi setiap thread pun akan lebih efisien, karena meskipun sistem-sistem operasi tersebut bersifat multitasking, sistem-sistem operasi tersebut melakukan eksekusi terhadap proses secara sekuensial (berurutan), dengan sebuah algoritma antrean yang disebut dengan dispatching algorithm.

Kebutuhan sistem Hyper-Threading

Sebuah prosesor yang mendukung teknologi Hyper-Threading membutuhkan beberapa komponen berikut ini:


Sumber:
http://id.wikipedia.org/wiki/Hyper-Threading

Cara Kerja CPU

Fungsi CPU

CPU berfungsi sebagaimana layaknya kalkulator, hanya saja CPU jauh lebih kuat daya pemrosesannya. Fungsi utama dari CPU adalah melakukan operasi aritmetika dan logika terhadap data yang diambil dari memori atau dari informasi yang dimasukkan melalui beberapa perangkat keras, seperti halnya keyboard, scanner, joystick, atau mouse. CPU dikontrol dengan menggunakan sekumpulan instruksi perangkat lunak, yang disebut sebagai program komputer. Perangkat lunak tersebut dapat dijalankan oleh CPU dengan membacanya dari perangkat media penyimpanan, seperti halnya hard disk, floppy disk, CD-ROM atau tape magnetik. Instruksi-instruksi tersebut kemudian disimpan terlebih dahulu ke dalam memori fisik (RAM), di mana setiap instruksi akan diberikan alamat yang unik yang disebut sebagai alamat memori. Selanjutnya, CPU dapat mengakses data-data dalam RAM dengan menentukan alamat data yang ia mau.

Selagi sebuah program dieksekusi, data mengalir dari RAM ke sebuah unit yang disebut dengan bus, yang menghubunkan antara CPU dengan RAM. Data kemudian di-decode dengan menggunakan unit pemroses yang disebut sebagai Instruction Decoder yang menerjemahkan instruksi-instruksi. Dari instruction decoder, data kemudian berjalan ke unit aritmetika dan logika yang melakukan kalkulasi dan perbandingan. Data dapat disimpan secara sementara oleh unit aritmetika dan logika dalam sebuah lokasi memori yang disebut dengan register, agar dapat diambil kembali dengan cepat. Unit aritmetika dan logika dapat melakukan operasi-operasi tertentu, meliputi penjumlahan, perkalian, pengurangan, pengujian kondisi terhadap data dalam register, hingga mengirimkan hasil pemrosesannya kembali ke memori fisik atau media penyimpanan lainnya (register juga bisa, jika memang hendak menggunakan hasil pemrosesan tersebut kembali). Selama proses ini terjadi, sebuah unit dalam CPU yang disebut dengan Program Counter akan memantau instruksi-instruksi yang suskes dijalankan agar instruksi-instruksi tersebut dieksekusi dengan urutan yang benar.

Percabangan instruksi

Program counter dalam CPU umumnya bergerak secara sekuens (berurutan). Meskipun demikian, beberapa instruksi dalam CPU, yang disebut dengan Jump instruction, mengizinkan CPU dapat berpindah ke sebuah instruksi yang terletak bukan pada urutannya. Hal ini disebut juga dengan percabangan instruksi (branching instruction). Cabang-cabang instruksi tersebut dapat berupa cabang yang bersifat kondisional (ada syarat tertentu) atau tidak kondisional. Sebuah cabang yang bersifat tidak 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 dalam lokasi dalam CPU yang disebut dengan Flag.

Bilangan yang dapat ditangani

Kebanyakan CPU dapat menangani dua jenis bilangan, yakni fixed-point dan floating-point (bilangan titik mengambang). Bilangan fixed-point memiliki nilai digit spesifik pada salah satu titik desimalnya. Hal ini memang membatasi jangkauan nilai yang mungkin untuk angka-angka tersebut, tapi hal ini justru dapat dihitung oleh CPU secara lebih cepat. Sementara itu, bilangan floating-point merupakan bilangan yang diekspresikan dalam notasi ilmiah, di mana sebuah angka direpresentasikan sebagai angka desimal yang dikalikan dengan pangkat 10 (seperti 3.14 x 1057). Notasi ilmiah seperti ini merupakan cara yang singkat untuk mengekspresikan bilangan yang sangat besar atau bilangan yang sangat kecil, dan juga mengizinkan jangkauan nilai yang sangat jauh sebelum dan sesudah titik desimalnya. Bilangan ini umumnya digunakan dalam merepresentasikan grafik dan kerja ilmiah, tapi aritmetika terhadap bilangan floating-point jauh lebih rumit dan dapat diselesaikan dalam waktu yang lebih lama oleh CPU, karena mungkin dapat menggunakan beberapa siklus detak CPU. Beberapa komputer menggunakan sebuah prosesor sendiri untuk menghitung bilangan floating-point, yang disebut dengan math co-processor yang dapat bekerja secara paralel dengan CPU untuk mempercepat penghitungan bilangan floating-point. Math co-processor saat ini menjadi standar dalam banyak komputer, karena memang aplikasi saat ini banyak beroperasi dengan bilangan titik mengambang.

Sumber:
http://id.wikipedia.org/wiki/CPU

CPU

Sebuah CPU (singkatan dari central processing unit) menunjuk ke bagian dari perangkat keras komputer yang memahami dan melaksanakan instruksi dan data yang terdapat dalam perangkat lunak. Istilah yang lebih umum prosesor kadangkala digunakan untuk menunjuk ke CPU. Mikroprosesor adalah CPU yang diproduksi dalam sirkuit terpadu, seringkali dalam sebuah paket chip-tunggal. Sejak pertengahan 1970-an, mikroprosesor chip-tunggal ini telah menjadi umum dan penting dalam implementasi CPU.

Komponen CPU

Komponen CPU dibagi menjadi beberapa macam, yakni sebagai berikut:

  • Unit kontrol, yang mampu mengarahkan aliran program. Komponen ini pasti terdapat dalam semua CPU.
  • Unit eksekusi yang mampu melakukan operasi terhadap data, dan memiliki beberapa bagian seperti unit logika dan aritematika atau ALU (Arithmetic and Logical Unit) , unit titik mengambang (Floating Point Unit) dan lainnya. Komponen ini pasti terdapat dalam semua jenis CPU.
  • Sekumpulan register yang dapat digunakan untuk menampung operand dan hasil perhitungan yang belum selesai dengan sempurna. Komponen ini kadang-kadang terdapat dalam CPU, tapi beberapa tidak memilikinya.
  • Memori internal CPU, yang dapat berupa cache. Komponen ini kadang-kadang terdapat dalam CPU, tapi banyak CPU tidak memilikinya, khususnya CPU-CPU lama.

Diagram blok dari CPU sederhana


Sumber:
http://id.wikipedia.org/wiki/CPU

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:

Sumber:
http://id.wikipedia.org/wiki/Arsitektur_komputer

Computer architecture (3)

Historical perspective

Early usage in computer context

The term “architecture” in computer literature can be traced to the work of Lyle R. Johnson and Frederick P. Brooks, Jr., members in 1959 of the Machine Organization department in IBM’s main research center. Johnson had occasion to write a proprietary research communication about Stretch, an IBM-developed supercomputer for Los Alamos Scientific Laboratory; in attempting to characterize his chosen level of detail for discussing the luxuriously embellished computer, he noted that his description of formats, instruction types, hardware parameters, and speed enhancements aimed at the level of “system architecture” – a term that seemed more useful than “machine organization.” Subsequently Brooks, one of the Stretch designers, started Chapter 2 of a book (Planning a Computer System: Project Stretch, ed. W. Buchholz, 1962) by writing, “Computer architecture, like other architecture, is the art of determining the needs of the user of a structure and then designing to meet those needs as effectively as possible within economic and technological constraints.” Brooks went on to play a major role in the development of the IBM System/360 line of computers, where “architecture” gained currency as a noun with the definition “what the user needs to know.” Later the computer world would employ the term in many less-explicit ways.

The first mention of the term architecture in the refereed computer literature is in a 1964 article describing the IBM System/360. [3] The article defines architecture as the set of “attributes of a system as seen by the programmer, i.e., the conceptual structure and functional behavior, as distinct from the organization of the data flow and controls, the logical design, and the physical implementation.” In the definition, the programmer perspective of the computer’s functional behavior is key. The conceptual structure part of an architecture description makes the functional behavior comprehensible, and extrapolatable to a range of use cases. Only later on did ‘internals’ such as “the way by which the CPU performs internally and accesses addresses in memory,” mentioned above, slip into the definition of computer architecture.


Sumber:
http://en.wikipedia.org/wiki/Computer_architecture

Computer architecture (2)

Design goals

The exact form of a computer system depends on the constraints and goals for which it was optimized. Computer architectures usually trade off standards, cost, memory capacity, latency and throughput. Sometimes other considerations, such as features, size, weight, reliability, expandability and power consumption are factors as well.

The most common scheme carefully chooses the bottleneck that most reduces the computer's speed. Ideally, the cost is allocated proportionally to assure that the data rate is nearly the same for all parts of the computer, with the most costly part being the slowest. This is how skillful commercial integrators optimize personal computers.

Cost

Generally cost is held constant, determined by either system or commercial requirements.

Performance

Computer performance is often described in terms of clock speed (usually in MHz or GHz). This refers to the cycles per second of the main clock of the CPU. However, this metric is somewhat misleading, as a machine with a higher clock rate may not necessarily have higher performance. As a result manufacturers have moved away from clock speed as a measure of performance. Computer performance can also be measured with the amount of cache a processor contains. If the speed, MHz or GHz, were to be a car then the cache is the traffic light. No matter how fast the car goes it still will not hit that green traffic light. The more speed you have and the more cache you have the faster your processor is.

Modern CPUs can execute multiple instructions per clock cycle, which dramatically speeds up a program. Other factors influence speed, such as the mix of functional units, bus speeds, available memory, and the type and order of instructions in the programs being run.

There are two main types of speed, latency and throughput. Latency is the time between the start of a process and its completion. Throughput is the amount of work done per unit time. Interrupt latency is the guaranteed maximum response time of the system to an electronic event (e.g. when the disk drive finishes moving some data). Performance is affected by a very wide range of design choices — for example, adding cache usually makes latency worse (slower) but makes throughput better. Computers that control machinery usually need low interrupt latencies. These computers operate in a real-time environment and fail if an operation is not completed in a specified amount of time. For example, computer-controlled anti-lock brakes must begin braking almost immediately after they have been instructed to brake.

The performance of a computer can be measured using other metrics, depending upon its application domain. A system may be CPU bound (as in numerical calculation), I/O bound (as in a webserving application) or memory bound (as in video editing). Power consumption has become important in servers and portable devices like laptops.

Benchmarking tries to take all these factors into account by measuring the time a computer takes to run through a series of test programs. Although benchmarking shows strengths, it may not help one to choose a computer. Often the measured machines split on different measures. For example, one system might handle scientific applications quickly, while another might play popular video games more smoothly. Furthermore, designers have been known to add special features to their products, whether in hardware or software, which permit a specific benchmark to execute quickly but which do not offer similar advantages to other, more general tasks.

Power consumption

Power consumption is another design criteria that factors in the design of modern computers. Power efficiency can often be traded for performance or cost benefits. With the increasing power density of modern circuits as the number of transistors per chip scales (Moore's Law), power efficiency has increased in importance. Recent processor designs such as the Intel Core 2 put more emphasis on increasing power efficiency. Also, in the world of embedded computing, power efficiency has long been and remains the primary design goal next to performance.


Sumber:
http://en.wikipedia.org/wiki/Computer_architecture

Computer architecture (1)

In computer engineering, computer architecture is the conceptual design and fundamental operational structure of a computer system. It is a blueprint and functional description of requirements (especially speeds and interconnections) and design implementations for the various parts of a computer — focusing largely on the way by which the central processing unit (CPU) performs internally and accesses addresses in memory.

It may also be defined as the science and art of selecting and interconnecting hardware components to create computers that meet functional, performance and cost goals.

Computer architecture comprises at least three main subcategories [1]

  • Microarchitecture, also known as Computer organization is a lower level, more concrete, description of the system that involves how the constituent parts of the system are interconnected and how they interoperate in order to implement the ISA[2]. The size of a computer's cache for instance, is an organizational issue that generally has nothing to do with the ISA.
  • System Design which includes all of the other hardware components within a computing system such as:
  1. system interconnects such as computer buses and switches
  2. memory controllers and hierarchies
  3. CPU off-load mechanisms such as direct memory access
  4. issues like multi-processing.

Once both ISA and microarchitecture has been specified, the actual device needs to be designed into hardware. This design process is often called implementation. Implementation is usually not considered architectural definition, but rather hardware design engineering.

Implementation can be further broken down into three pieces:

  • Logic Implementation/Design - where the blocks that were defined in the microarchitecture are implemented as logic equations.
  • Circuit Implementation/Design - where speed critical blocks or logic equations or logic gates are implemented at the transistor level.
  • Physical Implementation/Design - where the circuits are drawn out, the different circuit components are placed in a chip floor-plan or on a board and the wires connecting them are routed.

For CPUs, the entire implementation process is often called CPU design.

More specific usages of the term include more general wider-scale hardware architectures, such as cluster computing and Non-Uniform Memory Access (NUMA) architectures.

A typical vision of a computer architecture as a series of abstraction layers: hardware, firmware, assembler, kernel, operating system and applications (see also Tanenbaum 79).


Sumber:
http://en.wikipedia.org/wiki/Computer_architecture