If I may, and this might be a little off but its around the right idea.
Continuing with Mr. Scwartz's answer.
Another major important role in H/s is OpenCL and CUDA. Each provide a means of communication/a protocol between manufacturers so different hardware can interact more readily. So as Schwartz said you need to utilize the computing power (resources) of the chip for it to be useful. OpenCL and CUDA allow software to utilize many different hardware pieces at once. So some of the steps to do mining might be performed on the CPU while others are performed on the GPU. Thanks to OpenCL, you can easily call one function and it will utilize the resources it has avalible. (I am not saying OpenCL has a function doHash() but more of something along the lines of if(elegantWork) useCPU; else if(bruteWork) useGPU;)
Also the computers machine language architecture would play a big role. The ISC (Instruction Set Computer) is a computer with a defined set of instructions its processor can perform. So there are many kinds. RISC, ARM, etc (Idk many of them or much about there differences) But certain ones have instructions that are useful to mining and some have ones that are not. There circuits in some chips that try to guess the future, so if it sees you are gonig to execute a branching statement, it might try to work ahead on each branch and then once it knows it will drop all others and continue on the right branch. Well there might not be a need for that in hashing, so the part of the chip is useless to us if we want to hash.
ASIC's and FPGA's are chips (Integrated Circuits) than are designed specifically for mining. They have circuits only that they need to hash, and a lot of them, and throw out the rest of the regular stuff. Thats why an ASIC is only good for hashing if that's its application (it only "knows" how to hash). FPGA is a Field Programmable Gate Array, it is a bunch of multi purpose gates (circuits) on a chip that can be programmed to do a specific task (like hashing), but it still has some other stuff there that is not useful; the other stuff is there so that it can be general purpose. (People write software so it utilizes resources good, HardwareDescriptionLanguage HDL describes physical circuits and it used to write code that will program FPGA's; So if you get a FPGA and want to mine, you have to find a HDL program that you can use to burn/write the chip with to do the hashing algorithm, then you run software that makes use of the circuits you just wrote to the chip)
So any given chips performance can be determined by, the instructions it can process, how well it can process those instructions, and how efficient it is (if you care). Since there is a myriad of unique problems in the world, that means we try to create a myriad of unique IC's with a myriad of abilities.