Register is a fast memory storage. The register names in assembly languages are just instruction set exposed registers, which may or may not map directly to the hardware register. Modern CPUs often use register renaming to rearrange instructions, make them execute at the same time, so the number of registers that are used to store values may be much larger. Register file is a group of them.
In hardware, register is in fact any of the data storage means constructed from flip-flops. Between pipelines there must be registers, between the blocks there may also be many flip-flops in input/output ports, and each blocks also have lots of register to calculate and store intermedia values just like variables in software