I stumbled on the terms "ASIC" and " ASIC Miner", what do they mean? Is this something related to special hardware?
3 Answers
ASIC or Application-specific integrated circuit is a type of circuit that has become very popular in the Bitcoin mining community.
wikipedia defines it as
"An application-specific integrated circuit, or ASIC /ˈeɪsɪk/, is an integrated circuit (IC) customized for a particular use, rather than intended for general-purpose use."
Traditionally computer chips are made with variability of input in mind, meaning that a given chip should be able to do a wide range of things. Because Bitcoin miners only ever use their chips for Bitcoin mining, you can make chips that are really really fast if you make them solely with that purpose in mind.
This is how companies like butterfly labs can get such ridiculous speeds of up to 500 GH/s!
ASIC'S are application-specific integrated circuits, which speed up mining while being energy effecient. Some ASICS have speed capable of reaching 60GH/S (60 billion hashes per second) or more, which is over 1,200 times faster than the average computer. However, despite being energy effecient for it's speed, the fastest ones may use up a lot of power. Watch out for this when searching for bitcoin miners. There are lot of bitcoin miners out there, and there are plenty on eBay. Some can cost as much as your average laptop, others can cost as much as $10,000!
ASIC is any integral circuit, any piece of Hardware or microchip. Yes, any microchip is an ASIC. This means that your CPU is also an ASIC. But, CPU is not efficient ASIC for doing particular task -- it is too universal. That is, CPU is supposed to be programmable. Programmability is flexibility - you can easily teach your PC what to do by writing a program. This is very flexible but, unfortunately flexibity comes with price -- it is very inefficient. You describe your instructions in a program and processor takes frist instruction, does something (moves some data between regs/memory or adds/multiplies register contents) and then takes next instruction. This is very slow but allows one piece of hardware to do (emulate) any task. Universal processors are slow for two reasons: they do a lot of unnecessary tasks (fetch program instructions) and do it serailly, in one stream whereas parallel processing is possible. Well, the latter is mitigated by multicores, GPUs and FPGAs. But, you can do better when you know your task in advance.
You can have a special processor, tailored purposefully for your task. These are application specific processors (aka embedded computers). They do not need to fetch the program instructions step by step. They already know what to do. The program is hardwared into them, like the "program" to support you is hardwared into the armchair whenever you sit on them. They just fetch the next piece of data (e.g. a key) and produce what is requred in the application (e.g. a hash). Everything is done in one step -- no need for 1000 intrmediate steps! Everything runs 1000 times faster. This is how specialized processors are usually faster than using CPU. Specialization means that you sacrifice universality for efficiency/speed.
BTW, GPUs and FPGAs are also kinds of ASICs, as any chips. GPUs specialize on graphical tasks, which are easily paralellizable and thus GPUs are basically universal multicore processors. FPGAs are ultimate multicore universal processors. They expose millions of tinyest cores, each capable to emulate a logic (aka boolean) gate. They are intended to emulate digital circuits, which are nothing more but collections of such gates. Yes, the pentium processor is a circuit of millions of gates. It would take ages to simulate how it executes Windows for billions of clock cycles by a computer logic simulator. FPGA expexiates the simulation 100 000 times. FPGA can emulate any digital ASIC that fits into it. So, it is universal. If you know your application, you may produce application-specific circuit that will run (10x) faster than the FPGA.