How can a extend memory space at 8086 up to 1 GB ???
You could upgrade to a more modern processor. For example, any processor that's not from the seventies!
If that's out of the question, this probably becomes more of a hardware problem than a software problem...
8086 had 16bit memory space, x86 has 32bit, x64 (AMD64) has 64bit. 2^16=64K, 2^32=4GB, 2^64=16M of PBs!
The only way to use more memory is to use longer address words (which you can't) or use a hardware extension with more bits and access it with two or more words.
Obviously, you're not going to get a linear address space. 1GB of space requires 30 address lines, and there are only 20 physical address lines on the 8086. You implement bank switching, where the 8086 provides 20 lower address lines. The 10 additional lines are provided via a latch that you map to a 16-bit I/O port. Writing a value to that port stores the 10-bit bank number in the latch. The latch is then used to feed the upper 10 address lines to memory.
When I did this as hardware project at university 20 years ago, the largest memory we could get hold of then was 2MB - I've no idea how you would interface a modern 1GB memory module!