April 26, 2017

Issues Related with Domain Name Registration

  1. The first challenge in registering a domain name is identify a domain name that is suitable for your needs.

  2. Check availability of the domain name.

  3. Check the proposed domain name is not: a registered business name or same as a registered company name.

  4. Check for any trademark and common law trademarks.

  5. Determine the best registry (e.g. .com, .org, or .com.np).

  6. Once you see that the domain is available, buy it immediately. It may be available now, but not a few seconds later. There are all sorts of bots that track domain name enquiries. They act against you and register the domain as soon as interest is detected in a particular name.

  7. Once you have registered a domain name, you need to ensure it is renewed on time. Expired domain names become available for registration by any eligible company.

  8. Cyber-squatting can occur which is the practice of obtaining and holding a domain name that reflects the name or trademark of a company, with the intent of selling the name back to that company for a profit.

  9. Protect yourself. If you anticipate your domain name becoming popular, try to register the misspellings and the secondary versions of your domain name (the .net, .org etc.). Cyber squatter can register misspellings and the .net or .org of a popular .com domain name in hopes of selling it to the person who registered the .com of that same name.

November 15, 2016

Design Principles for Modern Systems

There is a set of design principles, sometimes called the RISC (reduced instruction set computer) design principles that architects of new general-purpose CPUs do their best to follow. Some major ones are:

1.   All Instructions Are Directly Executed by Hardware
All common instructions are directly executed by the hardware. They are not interpreted by microinstructions. Eliminating a level of interpretation provides high speed for most instructions.

2.   Maximize the Rate at Which Instructions Are Issued
Modern computers resort to many tricks to maximize their performance, chief among which is trying to start as many instructions per second as possible. This principle suggests that parallelism can play a major role in improving performance, since issuing large numbers of slow instructions in a short time interval is possible only if multiple instructions can execute at once.
Although instructions are always encountered in program order, they are not always issued in program order (because some needed resource might be busy) and they need not finish in program order. Getting this right requires a lot of bookkeeping but has the potential for performance gains by executing multiple instructions at once.

3.   Instructions Should Be Easy to Decode
A critical limit on the rate of issue of instructions is decoding individual instructions to determine what resources they need. Anything that can aid this process is useful. That includes making instructions regular, of fixed length, and with a small number of fields. The fewer different formats for instructions, the better.

4.   Only Loads and Stores Should Reference Memory
One of the simplest ways to break operations into separate steps is to require that operands for most instructions come from—and return to—CPU registers. The operation of moving operands from memory into registers can be performed in separate instructions. Since access to memory can take a long time, and the delay is unpredictable, these instructions can best be overlapped with other instructions assuming they do nothing, except move operands between registers and memory.
This observation means that only LOAD and STORE instructions should reference memory. All other instructions should operate only on registers.

5.   Provide Plenty of Registers

Since accessing memory is relatively slow, many registers (at least 32) need to be provided, so that once a word is fetched, it can be kept in a register until it is no longer needed. Running out of registers and having to flush them back to memory only to later reload them is undesirable and should be avoided as much as possible. The best way to accomplish this is to have enough registers.

Data Path

Data path is a place in the CPU where the data is being manipulated. The registers, the ALU, and the interconnecting bus are collectively referred to as the data path. Data paths, along with a control unit, make up the central processing unit (CPU) of a computer system. As the data travels to the different parts of the data path, the control unit issues control signals to the data path that causes the data to be manipulated in specific ways, according to the instruction.

The process of running two operands through ALU and storing the result in called the data path cycle and is the heart of most CPU. To a considerable extent, it defines what the machine can do. The faster the data path cycle is, the faster the machine runs.

CPU Organization/Structure

That portion of a computer that fetches and executes instructions. It consists of an Arithmetic and Logic Unit (ALU), a control unit, and registers. Often simply referred to as a processor.
The figure shows a detailed view of the internal organization of processor. The major components of the processor are an arithmetic and logic unit (ALU) and a control unit (CU). The ALU does the actual computation or processing of data. The control unit controls the movement of data and instructions into and out of the processor and controls the operation of the ALU. In addition, the figure shows a minimal internal memory, consisting of a set of storage locations, called registers.
The data transfer and logic control paths are indicated, including an element labelled internal processor bus. This element is needed to transfer data between the various registers and the ALU because the ALU in fact operates only on data in the internal processor memory. The figure also shows typical basic elements of the ALU.

Register Organization

Within the processor, there is a set of registers that function as a level of memory above main memory and cache in the hierarchy. The registers in the processor perform two roles:
 
User-visible registers: A user-visible register is one that may be referenced by means of the machine language that the processor executes. Enable the machine- or assembly language programmer to minimize main memory references by optimizing use of registers. We can characterize these in the following categories:
General purpose: General-purpose registers can be assigned to a variety of functions by the programmer.
Data: Data registers may be used only to hold data and cannot be employed in the calculation of an operand address.
Address: Address registers may themselves be somewhat general purpose, or they may be devoted to a particular addressing mode.
Condition codes: Condition codes are bits set by the processor hardware as the result of operations. E.g. result of last operation was zero.

Control and status registers: Used by the control unit to control the operation of the processor and by privileged, operating system programs to control the execution of programs. Most of these, on most machines, are not visible to the user.
Different machines will have different register organizations and use different terminology. Four registers are essential to instruction execution:
Program counter (PC): Contains the address of an instruction to be fetched.
Instruction register (IR): Contains the instruction most recently fetched.
Memory address register (MAR): Contains the address of a location in memory.
Memory buffer register (MBR): Contains a word of data to be written to memory or the word most  recently read.