This is an old revision of the document!
Hardware Servers can vary widely from personal computers (i.e., Desktop Computers) to specially built rack mounted computers and depends on the amount of work that needs to be done and the number of clients that need to be supported. For example, quite often database servers are software that can run on a person computer to service the needs of an individual using the machine as a personal computer or can be on many rack mounted servers supporting thousands to millions of clients. As a general rule, Servers are more powerful and expensive than the clients hardware that connect to them. The power of a server is not just measured in the speed of its CPU, but also in its ability to handle events, connections and speed of accessing memory.
Many servers, whether running locally on a personal computer or remotely on large clusters of servers, are accessed over a network usually the Ethernet. They are intended to run unattended without Human-machine interface (HMI) or Graphical User Interface (GUI). These servers are configured and managed remotely using software specifically designed for that purpose. Often the management is done using web based interfaces accessible using browsers and secure connections and POSIX compliant interfaces.
Historically, Servers used Central Processing Unit (CPU) that were either the Complex Instruction Set Computer (CISC) or Reduced Instruction Set Computer (RISC) architectures. While the Central Processing Units (CPUs) are designed to quickly handle a wide-range of general tasks sequentially, they are not well suited for many small tasks that can be handled in parallel. Recently some servers are built using General-Purpose Graphics Processing Units (GPGPUs) instead of CPUs. These Servers are not processing lots of graphics and images as implied in the name GPGPU, but because the GPGPU excels at performing lots of small tasks in parallel (i.e., concurrently).
Consequently, GPGPU based servers performing parallel operations on multiple sets of data have been adopted by for non-graphical tasks such as machine learning and scientific computation. Designed with thousands of processor cores running simultaneously, GPGPUs enable massive parallelism with each core performing efficient calculations simultaneously.
Some common Software Servers are: