If you typecast a TIMESTAMP value to a string, and display the string in HEX format, you'll see that it's four U32s.
The high-order one is stuck at zero.
The next one increments every second.
The third one increments much faster, but only has the high-order bits used.
I would guess that it's a fraction of a second, intended to be used as N/ (2^32). This allows for higher resolution uin the future (yeaahh!)
The fourth is stuck at zero, for even more future resolution.
If you typecast it to a cluster of four U32s - you can extract the parts yourself.
BTW, if you create an indicator from the Get Data/Time in Seconds function, it DOES have a millisecond part.