Yes, an external reference clock is needed.
If a computer chugs along doing { counter++; } at 1 clock cycle per clock cycle for 13.7 billion clock cycles, it will think 13.7 billion clock cycles have passed when counter is 13.7 billion.
On the other hand, if a computer chugs along at one clock cycle per clock cycle for 1 clock cycle, and reads &counter and sees 13.7 billion, it will think 13.7 billion clock cycles have passed.
Either way it's perfectly capable of introspecting it's source code and logically stepping back until the memory location was 0 to see how many clock cycles would have been required to reach it's current state, but that sort of reasoning is completely devoid of meaning without both perfect knowledge of what the true start state was, and a guarantee that no external influences have occurred.
Here in reality, we know neither the our start state nor our isolation level, but the hubris of many is too string to not at least try finding some logical step-back functions and iterating them until they don't know how to go any further, then proudly proclaiming that "The Start". (after all - how could it not be The Start, look, I can iterate the inverse of my step-backward function from then to now and it matches! QED!)