The 8086 CPU has two functional units - the Bus Interface Unit (BIU) and Execution Unit (EU). The BIU fetches instructions and data from memory and writes data to memory or ports. It uses an instruction queue to pre-fetch up to 6 bytes to improve execution speed. The EU decodes instructions and performs operations using its 16-bit ALU. The 8086 has general purpose registers including AX, BX, CX and DX and segment registers for addressing memory. It uses flags to indicate the result of operations.