After a few years research and study about ARM, I was impressed by the ARM cortex, not just because it can be created as cheap as possible by a highly advance machine, but at the simplicity of the design and the performance. I have experience using Intel processor at low level, which mean, programming it using assembler, even there is a time where I can memorize the OPCODE of each instruction. Basically, ARM had an understandable bitfield on its opcode, time to time ARM is grow and change, from a 16-bit addressed device, to a 26-bit and now a 32-bit and even 64-bit addressed device. For those who doesnot know, 16-bit addressed device mean that device only had access to a 64k of memory. And a 26-bit mean you can use approximately 64 Mbytes of RAM, and 32 bits mean, 4 GB of device. Even though the newest device is 32-bits, it doesnot mean all of the BUS line for the address register on the processor is used for RAM. On ARM, hardware port is not like an intel one which is accessed using another instruction and not treated as like it was a part of an addressable memory. On ARM, when you use for example r0 as the base address for the memory lets say, 1000h, when you wanted to access a hardware port, you can change the register value to some address on the register just as it was part of the memory, this is very amazing because it make the complexity less. I dont know about you but ARM is like, a dream come true machine for me. I found lots of difficulty programming on Intel (honestly, because of my lack of comprehension) using a port. Well, basicaly it is the same, it was just, for me, it looks pretty good when you just check certain part of the memory for the I/O status than checking on the port where in the end, you stored it on the memory. By using the hardware port status as if it was a part of the memory, you dont need to store your data on a buffer anymore, and the hardware status is freely accessible if the kernel wanted it.
Intel and ARM is a whole different things, and it is difficult to compare between it. I did not know which criteria to see which had the same specification to check wheter is better, because at some part Intel had more power on certain instruction and ARM is better at some instruction, and we cant measure a processor based on only a single or a few instruction, we need to compare it thoroughly. I personaly didnot know much about ARM but it is very interesting to know one. I had lots of device powered by ARM, and most of it had a face recognition system, something that very amaze me. Once Im making a face recognition application on Intel processor, and on my old laptop it ran only 10 FPS for only detect how much face on the screen, but using my Samsung device, a 800 Mhz processor capable doing the same thing. I know its hard to measure a device which had different instruction, because, it could be on some part there is an instruction that are spesific to do particular things but not good to do another things, but, if we measure it on a reallife applications, ARM win myheart. Now that Im going to do the same for ARM, I'll start studying everything, even try to design my own OS by using any freely available part on the internet or making everything on my own. There is no particular reason Im doing this, just for fun. I worked as a PHP programmer on my real life.
I guess that is all I wanted to say. I want to say to the ARM designer team, you created a state of the art design. Amazing.
Thank you very much for your glowing and heartwarming feedback Onan. I will make sure some of our design team can read it!
I'm also moving this to the ARM Processors group covering the subject of instruction sets and architecture.