Pay close attention to banks...as GPR banks are not the same as code pages, they are separate. GPR contains user variables etc. code or prg memory contains the hex code instructions as compiled by the assembler (MPASM) or compiler (C,BASIC etc).
GPR is made up of high speed static RAM, code space is slower FLASH ram. Therefore GPR is volatile and code RAM is not...code RAM is similar to EEPROM.However, EEPROM can handle many more write operations than FLASH code RAM. EEPROM & FLASH RAM write very slowly compared to static GPR. Read speeds are comparable, or at least don't require wait states during prg execution to be read.
Note well: if you intend to do assembly programming that banks and pages become essential knowledge very quickly. Compiler's handle that aspect of memory mgmt for you!
Note also that the special function registers in the PIC are usually dedicated GPR locations and can usually be written to and read from.
The PIC datasheet is your friend, it contains all the answers once you know the questions.